论文阅读:iterator zero-shot llm prompting for knowledge graph construction

发布时间 2023-10-05 19:59:42作者: 辛几何旋律

Abstract

知识图谱,一种相互连接和可解释的结构。
生成需要更多的人力、领域知识、并需要适用于不同的应用领域。
本论文提出借助LLM,通过0-shot和外部知识不可知的情况下生成知识图谱。

主要贡献:

  1. 迭代的prompting提取最终图的相关部分
  2. 0-shot,不需要examples
  3. 一个可扩展的解决方案,不需要额外资源和人力需求。

1. Introduction

KG组织信息以恰当的图结构,节点表示实体,而边表示实体之间的关系。
每个节点和边也可以有额外的属性。
KG具有如下的优点:

  • 异质资源信息的推断和整合
  • 可以捕捉直接和间接的知识
  • 可以直接有效的查询信息
    当然,KG的构造也会出现一系列的问题:
    比如,缺乏大规模标注数据用于关系提取,导致了利用异质数据集的工具的发展。
    而且,开放域中的实体识别和解析理解能力表现的更差,并且缺乏对应的建立好的工具箱和基本知识。
    依靠LLM prompting来提升KG的构建效果

2. Research Aims and Motivations

2.1 Problem Statement

要实现高质量数据、可扩展性、自动化的平衡。
问题主要集中在如下方面:

  1. 数据可用性和可获得性:会受到隐私政策、不同平台、格式和语言的影响。并且数据是动态更新的,可能会导致现有数据的过时。
  2. 数据质量:需要完整、正确、可靠。为保证这点需要人力去注释数据。尽可能的使得数据可靠并且减少人力,是研究的目标。
  3. 可扩展性:要适用于不同维度和异构的数据
  4. 主观性和语境知识:需要语境信息和其他资源。
  5. 语义消歧:解析同义词、多义词等
  6. 特定领域的专业知识:保证质量但是会消耗大量人力
  7. 额外资源: 目前主流解析实体与关系依赖KB,可能会漏。OpenIE不依赖外部知识,但是容易生成错误的triplets。
  8. 评价: 没有统一的标准和数据。
  9. 流水线定义:不同阶段任务的交互与整合。

2.2 Main Contribution

选择GPT3.5作为LLM
主要贡献:

  • 迭代采用基于LLM prompt的流水线来自动的实现KGs的生成(不需要人力)
  • 每个阶段提出合适的prompt能够提取实体(包含描述和类型),关系(包含描述),识别相近三元式,解析实体和关系(不需要第三方资源)
  • 0-shot,不需要example
  • 借助一些prompt的结果构建基准,有助于应用额外的评估指标。

3 Methodology

3.1 LLM Prompting

采用GPT-3.5-turbo-0301版本
主要用到如下的角色:

  1. system: 告诉模型如何回答
  2. user: 用户的信息/请求
  3. assistant:模型的回答
    task instructions -> system prompt
    data to operate -> user prompt
    receive results -> assistant prompt
    温度设置为0(保证每次input获得相同的回答)

3.2 Methodology Overview

整体架构如下:
image

简单介绍一下三个部分:

3.2.1 Candidate Triplet Extraction

合适的实体提取(entity),主要提取出如下部分:

  • label
  • description
  • 类型表(超出实体本身)
    关系主要需要提取出label和description

3.2.2 Entity/Predicate Resolution

目标是识别并合并相同含义的实体与关系。
主要面临的挑战:自然语言的模糊性和多义性。
通过初步聚类的方法实现

3.2.3 Schema Inference

KG模式以供重用等,本文提出了一种自动提取模式的方法。

3.3 Knowledge Graph Construction Pipeline

KG的详细的工作过程整体如下:
image

3.3.1 Candidate Triplet Extraction

从文本分解(text split)开始,得到一些text chunks,
之后,先进行实体的提取,再进行关系的提取。相较于直接提取三元组准确率更高,并且简化了任务的复杂程度。

Text Split

主要遇到的两个问题:

  1. 脱离全文的语境:当失去了整体文本,词语和表达可能会失去原有的含义
  2. 相近实体的分割:两个实体处于同一个三元组中,但是可能会划分到不同的文本块中。

通过如下的两种方式去解决:

  1. 当处理文本块的时候做summary来保存整体的信息,公式如下所示:
    \(summary_i = summarization_task(summary_{i-1},chunk_{i-1})\)
  2. 减少两个实体被分割的概率:让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)谓词含义的描述。
不能太过于具体。
例如:
image

两个实体及其对应描述:
image
比较合适的:
image
选择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的一致性。