论文阅读:iterator zero-shot llm prompting for knowledge graph construction
Abstract
知识图谱,一种相互连接和可解释的结构。
生成需要更多的人力、领域知识、并需要适用于不同的应用领域。
本论文提出借助LLM,通过0-shot和外部知识不可知的情况下生成知识图谱。
主要贡献:
- 迭代的prompting提取最终图的相关部分
- 0-shot,不需要examples
- 一个可扩展的解决方案,不需要额外资源和人力需求。
1. Introduction
KG组织信息以恰当的图结构,节点表示实体,而边表示实体之间的关系。
每个节点和边也可以有额外的属性。
KG具有如下的优点:
- 异质资源信息的推断和整合
- 可以捕捉直接和间接的知识
- 可以直接有效的查询信息
当然,KG的构造也会出现一系列的问题:
比如,缺乏大规模标注数据用于关系提取,导致了利用异质数据集的工具的发展。
而且,开放域中的实体识别和解析理解能力表现的更差,并且缺乏对应的建立好的工具箱和基本知识。
依靠LLM prompting来提升KG的构建效果
3. Research Aims and Motivations
3.1 Problem Statement
要实现高质量数据、可扩展性、自动化的平衡。
问题主要集中在如下方面:
- 数据可用性和可获得性:会受到隐私政策、不同平台、格式和语言的影响。并且数据是动态更新的,可能会导致现有数据的过时。
- 数据质量:需要完整、正确、可靠。为保证这点需要人力去注释数据。尽可能的使得数据可靠并且减少人力,是研究的目标。
- 可扩展性:要适用于不同维度和异构的数据
- 主观性和语境知识:需要语境信息和其他资源。
- 语义消歧:解析同义词、多义词等
- 特定领域的专业知识:保证质量但是会消耗大量人力
- 额外资源: 目前主流解析实体与关系依赖KB,可能会漏。OpenIE不依赖外部知识,但是容易生成错误的triplets。
- 评价: 没有统一的标准和数据。
- 流水线定义:不同阶段任务的交互与整合。
3.2 Main Contribution
选择GPT3.5作为LLM
主要贡献:
- 迭代采用基于LLM prompt的流水线来自动的实现KGs的生成(不需要人力)
- 每个阶段提出合适的prompt能够提取实体(包含描述和类型),关系(包含描述),识别相近三元式,解析实体和关系(不需要第三方资源)
- 0-shot,不需要example
- 借助一些prompt的结果构建基准,有助于应用额外的评估指标。
4 Methodology
4.1 LLM Prompting
采用GPT-3.5-turbo-0301版本
主要用到如下的角色:
- system: 告诉模型如何回答
- user: 用户的信息/请求
- assistant:模型的回答
task instructions -> system prompt
data to operate -> user prompt
receive results -> assistant prompt
温度设置为0(保证每次input获得相同的回答)
4.2 Methodology Overview
整体架构如下:
简单介绍一下三个部分:
4.2.1 Candidate Triplet Extraction
合适的实体提取(entity),主要提取出如下部分:
- label
- description
- 类型表(超出实体本身)
关系主要需要提取出label和description
4.2.2 Entity/Predicate Resolution
目标是识别并合并相同含义的实体与关系。
主要面临的挑战:自然语言的模糊性和多义性。
通过初步聚类的方法实现
4.2.3 Schema Inference
KG模式以供重用等,本文提出了一种自动提取模式的方法。
4.3 Knowledge Graph Construction Pipeline
KG的详细的工作过程整体如下:
4.3.1 Candidate Triplet Extraction
从文本分解(text split)开始,得到一些text chunks,
之后,先进行实体的提取,再进行关系的提取。相较于直接提取三元组准确率更高,并且简化了任务的复杂程度。
Text Split
主要遇到的两个问题:
- 脱离全文的语境:当失去了整体文本,词语和表达可能会失去原有的含义
- 相近实体的分割:两个实体处于同一个三元组中,但是可能会划分到不同的文本块中。
通过如下的两种方式去解决:
- 当处理文本块的时候做summary来保存整体的信息,公式如下所示:
\(summary_i = summarization_task(summary_{i-1},chunk_{i-1})\) - 减少两个实体被分割的概率:让chunk具有更大的尺寸和更大的重叠范围
Entity Extraction
主要使用如下的system prompt:
- \(S1\):对实体含义的一种解释
- \(S2\):从用户文本中获得实体的具体要求,比如对提供文本描述和类型表的要求
- \(S3\):对输出格式的要求
S1是不必要的。但是加入S1和未加入S1会导致明显的差异。
加入S1:减少获得的实体的数量,但是会更加关注名词和命名实体,更少关注通用和抽象的名词
不加S1:减少对实体的描述
举例的话,一页文本描述信息(Cagliari网页),S1约束下提取27个实体,而未加入S1提取62个实体(多出"History and art")这种。
描述(Cagliari)的话,比如
加入S1:
The capital city of Sardinia, offering history, art,
seashores, parks, and fine cuisine
不加S1:
The capital of Sardinia
作者认为,加入S1的影响是积极的。
GPT提取完实体\(E\)后,直接用于关系提取容易出错(提取的关系中实体不在E中,或者可能会出现遗漏)。
采用迭代的方式进行关系提取,每次提取关系的时候关注不同的\(e_i\)(\(e_i\in E\))
Phrase Selection
对于每一个\(e_i\),提取目标文本\(T_i^G\)用于关系提取(减少关系提取复杂度并且提升可靠性)
可以归结为传统的Query-Focused Abstractive Summarization or Open-Domain Question Answering任务,也可以直接用\(e_i\)的描述
Mention Recognition
system prompt:要求在特定文本中识别实体
找到\(T_i^G\)中提到的实体,记为\(E_i\)。
要求GPT对于每个实体,在最后回答"yes/no"。
user prompt:
用户输入就是有序的所有实体和生成文本。最后找标记为“yes”的实体。
Relation Extraction
要求:通过RDF三元组表达实体间的关系,主体和客体为实体列表中的元素(包含ID和名字),并且选择一个合适的额谓语。
user prompt为\(T_i^G\)和\(E_i\),
GPT以三元组\(R_i\)形式回答
system prompt也要包含对富有表达力(expressive)谓词含义的描述。
不能太过于具体。
例如:
两个实体及其对应描述:
比较合适的:
选择has great place for romantic evening过于具体,而includes过于通用。选择明确的(explict)的词语(类似于OpenIE工具的做法)
Predicate Description
system prompt:对每个独立的谓词生成描述,参考RDF三元组和文本
user prompt:\(T_i^G\)和\(R_i\)
注意生成的谓语描述要更加的通用。
例如:
对has landmark描述:It expresses that the Bastione di Santa Croce is a landmark in Cagliar是不合适的。Expresses a relationship between a place and a landmark located
in it是更加合适的。
最后输出的结果通过正则表达式判断是否符合结果,同时需要的时候也要检查ID和label的一致性。
4.3.2 Entity/Predicate Resolution
语义聚合的目标是识别出语义相近的实体或关系,或者是将相似的含义抽象到一个更高层次的概念(例如,将car和motorcycle抽象到vehicle)
Semantic aggregation
主要是通过计算相似度
\(Label\space similarity\):计算字串的Levenshtein距离(编辑距离),并进行归一化,记为\(e_{i,j}\)和\(r_{i,j}\)
\(Entity\space types\space similarity\):相同的策略,仅针对实体
\(Description \space similarity\):做一个\(embedding\),再通过余弦相似度来度量。采用Universal Sentence Encoder,记为\(ed_{i,j}\)和\(rd_{i,j}\)
计算公式主要如下所示:
\(S_e(i,j)=\alpha \cdot e_{i,j} + \beta \cdot ed_{i,j}\),
\(S_r(i,j)=\gamma \cdot r_{i,j} + \delta \cdot rd_{i,j}\)
其中:\(\alpha = 0.35, \beta = 0.65, \gamma = 0.25,\delta = 0.75\)
实体间相似:
\(S_e(i,j)>0.9\)或者\(0.7<S_e(i,j)<0.9\)
关系间相似:
\(S_r(i,j)\geq 0.8\)
最后得到一系列的集合
Cluster disambiguation
主要是识别出来子集中相同的实体:
比如\(motorcycle\),\(motorbike\)和\(bicycle\)等。
Concept shrinkage
为上一个阶段返回的相同实体集合找到一个合适的label
4.3.3 Schema Inference
自动的由底向上生成模式。
输入是上一阶段的若干\(cluster\)
主要分为如下两步:
Hypernym Generation
为tpyes,找到共同的合适的上位词。
如legumes, green vegetables, poultry, pork, fish, and crustacean。
可以找vegatables,meat和seafood,
type和对应的上位词之间的关系是type of
Herarchical Agglomeration
分层次的聚合并消除冗余。
低层次模式代表初始的实体类型,
高层次模式对应上位词,
不断重复迭代语义聚合以及如上两步,直到最后只有一个聚类生成。
5 Experiments
5.1 Dataset
数据集:
Cagliari(Sardinia的首都)44页的网页,对应一系列的文本
被选择的文本平均有660个tokens,最多1100个tokens
5.2 Evaluation
依据人工来评价生成KG的结果
5.2.1 Human assessment
KG conmponents annnotation
让顾问判断correct或者incorrect
Entity
主要依据两点:
(1)输入文本提到了该实体,并且该实体的标签和描述是正确的
(2)实体是重要的,并且与整体文本是有关联的。
下面是两个例子:
Entity type
正确的捕捉了实体的实体类和上下文信息。
例子如下所示:
Triplet
主要依靠两点:
(1)被连接的实体是正确的
(2)他们之间的关系必须要被谓词的标签和描述正确的合理的描述
例子如下所示:
Inferred components annotation
检查实体和关系是否从文本中推断而出的。
实体:检查其描述是从文本中得到还是由GPT3.5额外生成的。
三元式:检查关系是否可以从文本中推理得到还是GPT3.5预先知道。
例子如下:
原始文本中并未提到战争开始和结束的年份
Ground truth annoatation
找到文本中提及的实体,但是GPT3.5未获取到的。
对于所有类型,找到对应的实体。
5.2.2 Evaluation metrics
主要通过如下的指标:
\(P = \frac{TP}{TP+FP}\)
\(R = \frac{TP}{TP+FN}\)
\(F_1 = \frac{2\cdot P \cdot R}{P+R}\)
其中\(R\)和\(F_1\)只用于实体/
最后可以得到\(P^E\),\(R^E\),\(F_1^E\),\(P^T\),\(P^R\)
同时,评价模型从文本中额外推断信息的能力
定义\(I\)为gpt3.5内部自带的信息(未出现在文本中)
定义\(D\)为所有的信息,
指标如下: \(\sigma = \frac{I}{D}\)
也是有对应的\({\sigma}^E\)和\({\sigma}^R\)
5.3 Result
生成基础的KG包含761个实体和616个三元式
最终结果如下:
(没有和其他的方法比较)
在较为简单的任务上,整体结果是较为乐观的。
\(\sigma -score\)表示GPT3.5如何在描述上加入自身的知识。
同时,容易发现,实体中加入的信息一般是边缘的,不会组成整个句子。
未来研究方向:
可以在同任务上和其他方式相比较,应用在不同的领域(开放域->闭合域),
不同的可选大模型进行对比等等。
本文来自博客园,作者:zjz2333,转载请注明原文链接:https://www.cnblogs.com/zjz2333/p/17738757.html