使用ChatGPT建立一个图形知识库。
我的一位同事前些天问我们是否可以使用LLM来追踪他最喜欢的书系中角色之间的关系,以及知识图谱在这个方案中的作用。由于角色之间的关系自然可以表示为图形,这似乎是一件很简单的事情。因此,我决定尝试一下。
我想要能够显示图表,所以我开始让ChatGPT为我编写一个程序,该程序可以通过Cytoscape使用RDF输入并绘制图表以显示它。虽然需要一些劝说和纠正,但现在我有一个很好的小程序可以做到这一点。开发这个程序只花了一个下午,比从头开始开发节省了很多时间。
现在进入有趣的部分。我想使用一个大家熟知的故事——罗密欧与朱丽叶,而不是我的同事提出的那个故事。我可以让ChatGPT代表罗密欧与朱丽叶中所有角色之间的关系。但当我这样做时,它遗漏了一些关键人物(护士和劳伦斯修道士),并包括了一些对我来说似乎不那么重要的人物(巴黎)。此外,它还编造了一些关系。当然,这也没什么问题。但这意味着如果我想在不同的戏剧中寻找相似的关系模式,我会陷入困境。我们不希望罗密欧与朱丽叶的关系集合不同于迪士尼电影《狮子王》的关系集合。
所以我开始让它列出一堆常见的关系;我按不同的类别(家庭关系、恋爱关系、商业关系)列出了一些常见的关系。在跨不同叙述中策划关系类型时,我最好仔细开发这些列表,但对于这个快速研究,我只是让ChatGPT生成了一些。当然,我还让它在RDFS中跟踪了它们。
然后我给它提供了《罗密欧与朱丽叶》中的人物列表。我发现在早期版本中,将蒙太古勋爵和夫人合并成只是“蒙太古家族”,这对我来说似乎不太具有可扩展性。
结果非常顺利; 我们仅使用本体论中的关系,就得到了字符之间的连接网络:
知识图谱在这个解决方案中扮演什么角色?我也可以像输出方式一样使用cytoscape,直接构建图形。
首先,知识图谱能够让我发布本体论,让其他人可以将其用来构建他们自己的字符图。这意味着你可以在你的图形中找到与其他故事中匹配的图案(三角恋?朋友支持你挑战对手?)。这也意味着你可以将你的图形与其他人的图形合并;别人对罗密欧和朱丽叶、卡普莱特勋爵和夫人、 劳伦斯修士和保姆的评价如何?她甚至有名字吗?
最后,假设你不喜欢Cytoscape?当然,它是免费的,而且工作得相当不错,但它并不完美,也许不是你想要的。如何将一个图形格式转换为另一个格式?如果你一开始就使用RDF生成数据,你可以编写程序将其转换为任意数量的可视化系统。
这只是一个玩具,但它很容易扩展;包括任何你想要的关系数据,只需要在图中添加更多的三元组。