文章主要介绍了搭建知识谱图的流程,包括文本内容分块、实体识别和关系提取、存储实体和关系等步骤,并详细描述了与AI交互的过程以及使用AI的建议和注意事项。
文章的第一步是将小说内容切分成若干个文本块,考虑保留上下文信息,推荐的切分方法和参数是LangChain的RecursiveCharacterTextSplitter,分块长度为1000,重叠部分200。
这是从分块中提取关键信息的步骤,信息的质量决定了网文校对的准确性。文章讨论了实体识别的方法和缺陷,包括硬编码的缺点,提出了使用大模型进行实体识别和关系提取的方案。
文章强调了与AI交互的重要性,将AI视为行业专家和顾问,可以帮助快速进入新领域。但也要对AI的建议持开放态度,并结合自身需求和背景进行研究和改进。
文章最后强调了在使用AI时的心态调整。虽然AI在整个项目中起到了重要作用,但人仍然是最后的决策者。作者使用AI的心态是将其视为工具,而不是完全依赖。
搭建知识谱图的流程如下:
-
-
-
文本内容分块
第一步很好理解,就是将小说已发布内容切分成若干个文本块。为了保留上下文信息,可以考虑文本块之间保留一些重叠的部分。
R1推荐使用LangChain的RecursiveCharacterTextSplitter并给出了参考代码。
分块的长度为1000,重叠部分200。
调用split_with_context方法,传入文本内容text,返回分块列表chunks。
实体识别和关系提取
这步是从分块中提取关键信息,信息的质量决定了网文校对的准确性,相当关键。
实体识别
咱们先讨论实体识别。
网络小说每一章都会各种角色、物品、地点、事件,这些都是实体。每个实体都有各自不同的属性。
所以接下来的问题是:
提取实体的哪些信息,以及如何提取?
R1建议如下:
这里我总结一下:
-
R1列出了不同类型的实体需要识别的各种纬度的属性。
-
不知道大家发现没有,这种方法有个非常大的缺陷:我们必须事先把识别某类信息的所有情况都列出来。
比如在识别地点时,我们得指定关键字。
这扩展性就太差了。我哪儿列举得出来所有的关键字啊?
后来R1又给了个改进方案,用自然语言处理(NLP)的开源库spaCy来识别实体。
但感觉还是有不少需要硬编码的地方,而且也比较复杂。
我突然想到,现在大模型对语义理解能力已经这么强了,是不是可以直接让它来识别实体呢?于是我把想法告诉R1,听听它的建议。