Page 198 - 《软件学报》2025年第12期
P. 198
吴信东 等: 华谱通: 基于知识推理的家谱问答大语言模型 5579
人物关系推理.
2.3 冗余信息筛选机制
针对家谱数据中可能存在的同名人物和多关系路径场景, 本节讨论对第 2.2 节知识图谱推理框架的进一步优
化方案, 包括多条件匹配机制和路径排序算法.
2.3.1 多条件匹配机制
多条件匹配机制主要针对家谱中的同名人物检索问题. 假设一份家谱里存在多个名叫“张三”的人物, 且用户
仅简单询问其父亲是谁时, 华谱通在不依靠多条件匹配机制的情况下只能抽取出三元组 (张三, 父亲, ?), 并将其转
换为 SPARQL 语句进行逻辑查询. 此时, 满足条件的查询结果会因为同名人物现象而增多, 且每个查询结果之间
存在冲突 (比如一个人通常情况下不会出现两个父亲), 这种冲突的检索结果会误导大模型生成错误的结论.
为应对这一问题, 华谱通允许用户根据自己对同名人物的理解, 在问题中附加同名人物的具体信息, 以便实施
更精确的家谱信息检索. 具体而言, 本文为华谱通设计了一种基于大模型提示学习的问题-条件三元组抽取方法,
以便系统在根据问题三元组抽取出所有同名人物的信息后, 能利用条件三元组匹配出最符合用户意图的一个同名
人物, 用于辅助大模型解答用户的问题. 以下是所提出问题-条件三元组抽取方法的详细介绍.
首先, 华谱通利用大模型强大的自然语言理解和生成能力, 构造如图 5 所示的提示模板来指导大模型对用户
的提问内容进行三元组抽取. 在提示模板中, 被抽取的三元组被划分为问题三元组和条件三元组, 以下是它们的
定义.
你是一名谱系学家, 需要从问题中抽取人物关系或属性三元组。抽取规则如下:
1. 三元组的形式限定为 (人物1, 关系, 人物2) 和 (人物1, 属性, 属性值)。
2. (人物1, 属性, 属性值) 中, 属性值不确定时, 输出 (人物1, 属性, ?)。
3. (人物1, 关系, 人物2)中, 人物2不确定时, 输出 (人物1, 关系, ?)。
4. 多个三元组用“;” 分割, 若无法抽取, 请输出“无”。
以下是一些三元组抽取案例, 案例之间没有关联:
================案例1=================
问题: 张三的儿子是谁?
三元组: (张三, 儿子, ?)
================案例2=================
问题: 评价一下张三
三元组: (张三, 简介, ?) 问题三元组案例
================案例3=================
问题: 张三和李四什么关系?
三元组: (张三, 关系, 李四)
================案例4=================
问题: 张三的姐姐是张六六
三元组: (张三, 姐姐, 张六六)
================案例5================= 条件三元组案例
问题: 张三的出生地在北京
三元组: (张三, 出生地, 北京)
根据上面的案例, 将下面问题中的三元组抽取出来。
图 5 基于提示学习的问题-条件三元组抽取
● 问题三元组: 由用户的问题映射而来, 其中三元组的头实体必须是被询问的目标人物姓名, 关系和属性名称
根据问题具体确定; 当用户的目的是找人或找人物属性时, 问题三元组的尾实体用“?”代替, 当用户的目的是找任
意两人关系时, 尾实体则是另一个与头实体不同的人物姓名.
● 条件三元组: 由用户提供的陈述断言转化而来, 可以表示确定的人物关系和人物属性, 用于辅助系统辨析同
名人物.
在实现对用户提问内容的问题-条件三元组抽取后, 华谱通会根据抽取的三元组进行同名人物筛选, 具体流程
如算法 1 所示.

