Year: 2024
Conderence: ACL
Address: https://doi.org/10.48550/arXiv.2410.02811
一、Introduction
知识图谱(Knowledge Graph, KG)已经被应用于医学、生物学和社交网络等多个领域。然而,构建特定领域 KG 需要大量专业知识和人工干预,这严重限制了其实际构建。例如,在医学领域构建知识图谱,需要医学专家对大量医学文献、病例等进行分析和整理,确定实体和关系,这一过程耗时费力且依赖专业知识。
为解决这一问题,传统方法主要集中于基于语义模式学习逻辑规则。基于规则的方法利用词汇和语义角色标签提取(主 - 谓 - 宾)三元组。近年来,基于大语言模型(Large Language Models, LLMs)的方法成为新趋势,通过利用 LLM 中存储的先验知识从原始语料库中提取三元组,相比基于规则的方法能够取得更好的表现,且具有创造性、更易被人类理解。但基于LLM的方法面临两个重大挑战:(1)输入中的上下文噪声,即原始上下文中大量与特定领域无关的信息会分散 LLM 注意力,降低其性能;(2)输出中的知识幻觉,即 LLM 可能生成无意义或与提供的源内容不符的内容,这会影响构建的领域 KG 的可信度,因为错误的三元组可能在迭代中传播错误。
本文提出了一个自动、专业、精确的通用 KG 构建框架SAC - KG,通过实体生成树搜索算法自动且迭代地构建领域 KG。SAC - KG 包括三个组件:(1)生成器(Generator)、(2)验证器(Verifier)、(3)修剪器(Pruner)。
二、Method
Generator 生成器
生成器对于一个给定实体,生成器使用域语料库检索器从原始域语料库中检索最相关的上下文,并使用开放知识检索器从其中检索最相关的三元组。
Domain corpora Retriever 领域语料检索器
由于 LLMs 常受知识幻觉影响,生成内容可能偏离事实知识,为给 LLM 准确的知识补充,提出领域语料库检索器。对于给定实体,它先将领域语料库分割成句子,然后根据实体出现频率对相关句子排序,将这些句子连接成文本列表,最后按与给定实体相关性降序排列并连接成固定长度文本作为 LLM 的输入。这样可以为 LLM 提供更相关的上下文,减少无关信息干扰,提高生成三元组的质量。
Open KG Retriever 开放知识图谱检索器
当仅输入领域特定语料库和指令时,LLM 输出难以控制且可能格式不正确。此检索器采用上下文学习,从 DBpedia 中检索与实体最相关的三元组作为示例,以增强 LLM 输出的可控性。对于在开源 KG 中存在的实体,提供以其为头实体的相关三元组(最多 10 个)作为示例;对于不在开源 KG 中的实体,先将其分词后检索相关三元组;对于分词后仍未匹配的实体,随机选择 10 个 KG 中的三元组作为提示。最后将相关上下文、三元组提示和指令连接作为 LLM 的输入,获取提取的三元组作为生成器的输出。
Verifier 验证器
虽然生成器有助于提高大语言模型的输出质量,但生成的三元组中仍然可能存在错误。为了进一步提高最终生成的领域知识图谱的质量,引入了验证器,它负责识别和过滤掉大语言模型生成的错误三元组。验证器基于规则并且无参数,能够有效地执行错误检测和纠正。具体来说,验证包括两个步骤:(a) 错误检测和(b) 错误纠正。对于纠错,使用RuleHub中从开放KGs中挖掘的现有标准来识别错误和输出错误类型。工作流程如下:
(i) 数量检测。如果三元组的数量少于阈值(默认为3),则将其归类为“数量不足”。
(ii) 格式检测。如果三元组不符合示例格式,则将其归类为“格式错误”。如果头部实体与预定义实体不匹配,将被归类为“头部实体错误”。如果头实体与尾实体相同,则归类为“头尾矛盾”。
(iii) 冲突检查。验证者在 RuleHub 中对每个三元组进行全面的冲突检测。例如,确保一个人的出生时间先于死亡时间、一个人的年龄为非负数等。
对于错误纠正,首先使用错误检测步骤确定错误类型并提供相应的提示。然后,重新提示大语言模型以重新生成更正后的输出。
Pruner 修剪器
通过验证器后,能够获得当前级别所有正确的三元组,然后继续生成下一级的三元组。
然而,并非所有三元组都需要下一级。例如,三元组“(稻米,最佳生长温度,20-25摄氏度)”是一个正确的三元组,而其尾部实体“20-25摄氏度”不需要作为下一级三元组的头部实体进一步生成。
因此,为了增强构建的知识图谱的可控性,本文提出了基于开源知识图谱 DBpedia 进行微调的T5二分类器 pruner 模型。它的输入由每个正确三元组的尾实体组成。其输出为“growing”或“pruned”,表示该实体是继续生成下一级知识图谱还是停止进一步生成。具体来说,将实体相关文本输入到T5,它产生“growing”或“pruned”作为输出。为了训练修剪器,从DBpedia中收集训练数据,并选择头部实体的一个子集来表示“growing”类别。还收集了尾部实体的等效子集,不包括那些与头部实体列表重叠的实体,以构成“修剪”类别。然后使用这些实体文本作为输入,并在微调期间使用相应的标签作为输出。
最后,利用领域语料库,可以为输入实体生成单个级别的知识图谱,它随后将被合并到生成的新级别的知识图谱中。因此,SAC-KG使用实体生成多个三元组并继续迭代,创建一个知识图谱子树,子树的根节点为生成三元组的头部实体。这个过程类似于树一层一层的增量增长,从浅到深地检索和访问领域知识。并且SAC-KG是一种无监督的方法,可以应用于任何具有大量非结构化文本语料库的领域,而不需要标记数据。
三、Experiments
Datasets and Experiment Setup
本文从专业书籍、网页和系统数据中收集水稻领域原始文本数据。共收集了70本专著、1522个网页和24000份与水稻有关的家谱记录。这些领域语料库表现出不同程度的结构多样性和不同水平的文本质量,也可以有效地模拟其他领域内大多数原始语料库所遇到的情况。
从开源知识图谱中检索领域实体作为根节点,并从领域语料库中获取它们的领域文本。为每个节点检索最多500个域文本token。评价指标如下:
精确度(Accuracy):使用GPT-4自动判断,评估每个三元组正确性。
召回数(Recall):由于每个域文本的真实三元组数量不可测,无法获取准确召回率。因此报告每个域文本的验证三元组的平均计数。也就是报告召回率而不提供分母。
领域特异性(Domain Specificity):本文目标是生成正确的、与领域相关的三元组,并且与开源百科全书知识图谱中的三元组不同。需要一个针对特定领域的度量,它量化了满足三个标准的生成三元组的比例:正确性,与领域相关,以及未在开源百科全书知识图谱中出现。领域专门化的主要目标是鼓励大语言模型不仅依赖于开源知识图谱提取知识,而且能够从领域语料库中总结和浓缩领域知识。
Main Results
SAC-KG在知识图谱构建中始终优于先前方法。当使用ChatGPT作为backbone时,取得了89.32%的准确率和81.25%的领域特异性,在直接从开放域语料库构建知识图谱方面非常高效。
Agreement Evaluation
结果表明GPT4评估和人类评估之间非常接近。Cohen’s Kappa系数大于0.6表明GPT-4评价与人类评价具有中等到高度的一致性。这些统计数据证明了GPT4评估的有效性和可靠性。
Ablation Study
在SAC-KG中缺少任何组件会导致整个框架的性能下降。值得注意的是,修剪器和开放式知识图谱检索器对SAC-KG性能的影响更为显著。这两个组件分别控制生成方向和添加示例。这意味着在知识图谱构建过程中加强可控性的重要性。
Case Study
SAC-KG的每次迭代在精度和领域特异性方面都显示出良好的结果。
基于规则的方法(OIE6)倾向于仅通过词法和语法分析生成冗余三元组。这些三元组通常包含有限的特定信息。PIVE提取了更多信息丰富的三元组,但它仍然受到无关文本噪声的影响,并提取了不正确的三元组。SAC-KG提取三元组数量更少,但是三元组具有更高程度的人类可解释性和领域信息。
Results on OIE benchmarks
具体来说,SAC-KG在很大程度上优于基于规则的方法(OpenIE 6和Stanford OIE)。与基于LLM的方法(DeepEx和PIVE)相比,SAC-KG也获得了一致的最优结果,证明了SAC-KG的有效性和鲁棒性。这些结果也表明了SAC-KG在传统开放信息提取任务中的有效性。