知识图谱的构建流程?

知识图谱的构建流程?

在LLM时代,首先就是用各类GPT来抽取实体关系,包括LightRAG、GraphRAG、Neo4j和LangChain的教程等。这类方法的好处是不怎么训练模型,不需要思考太多只要写Prompt就行。代价是计算成本高、实体粒度定义不清、依赖强模型的指令遵循能力。

其次是一些传统的NLP抽取算法,优势在于速度快,比如各种命名实体识别NER模型

根据词汇资源,命名实体识别涉及的不同技术分为四大类:

3. 基于机器学习的NER:基于机器学习的 NER 方法涉及使用统计模型来识别给定文本文档中的实体。机器学习模型观察文本数据以创建基于特征的实体表示。这些表示允许 NER 系统检测现有实体,即使它们有轻微拼写错误。基于 ML 的 NER 需要对带注释的文本数据进行模型训练。然后使用经过训练的模型来注释新文件。通过这种方式,基于 ML 的 NER 系统可以通过自动演化其实体知识库来进行自我改进。如CRF、BiLSTM

4. 基于深度学习的NER: 如Spacy、BERT

NER的工具:

2. NLTK(自然语言工具包) :NLTK 是一个用于处理人类语言数据的综合库。它包含用于 NER 的各种工具和模块,尽管与 spaCy 相比,它可能需要更多的手动配置。

3. Hugging Face Transformers:提供预训练模型

4. AllenNLP :AllenNLP 是一个基于 PyTorch 构建的强大的 NLP 库,为各种 NLP 任务(包括 NER)提供预构建的模型和工具。

5. Flair :Flair 是一个 NLP 库,可以轻松使用预先训练的词嵌入和最先进的 NLP 模型。它提供了 NER 等任务的功能。

6. Stanford NER :斯坦福 NER 是一种广泛使用的基于 Java 的工具,还提供 Python 绑定。它使用统计模型来识别文本中的命名实体。

7. UBIAI 通过提供用户友好的界面简化了实体提取过程,使其高效且准确。 UBIAI的自动标记功能允许用户将字典与实体类型相关联,从而促进精确的实体标记和数据的预注释。

8. 其他: AutoNER(7年前)、openie(基于规则)

NER模型缺点在于,它分离了实体和关系的抽取,不够end-to-end。基于统计的NER无法针对语义进行抽取。

一些对比介绍:https://www.youtube.com/watch?v=OsnM8YTFwk4

技术包括

实体链接(https://wikifier.org/about.html)、

实体消歧(https://github.com/SapienzaNLP/extend)、

第二次遍历LLM并要求它执行实体消歧(https://medium.com/neo4j/creating-a-knowledge-graph-from-video-transcripts-with-gpt-4-52d7c7b9f32c)、

基于图的方法(Exploring Supervised Entity Resolution in Neo4j):如果我们相信两个对象实际上代表相同的底层实体,我们可以用图中的关系来表示它。我将这种成对匹配称为“实体链接”,并用“SAME_AS”关系类型对其进行标记。

可以使用相似性算法KNN、基于Jaccard的节点相似性、实体链接预测等算法进行实体一致性判断,随后通过弱连接组件 (WCC)算法(Weakly Connected Components)进行实体合并

确认两个节点之间关系是否存在以及相关程度高低的方法:利用贝叶斯先验的思想,借用搜索引擎,输入两个待测节点,分析获取到的回传内容(数量),从而判断两节点相关程度。