【论文浅尝】SPARKLE: Enhancing SPARQL Generation withDirect KG Integration in Decoding

存在问题:

        现有的KBQA方法通常采用多阶段管道,其中涉及实体链接框架或子图检索机制以处理大规模数据源的复杂性。虽然这些策略在提高准确性方面显示出希望,但它们引入了不希望的副作用,特别是推理时间的增加和对先前模块性能的依赖。

        端到端预训练语言模型(PLMs)提供了简单性,但它们可能产生无效的查询,因为它们缺乏对知识库中有效事实和连接的理解。此外,这些模型通常与它们的训练数据紧密相连,难以适应知识不断变化的本质。

前置知识:

        SPARQL查询的有效性取决于底层RDF数据中是否存在指定的三元组。如图,考虑一个用户在知识图中询问“Michael Bay的哪部作品获得了奥斯卡奖提名?”SPARQL生成的典型序列到序列模型可能在查询中包含三重模式(Michael_Bay, write, var),将' write '解释为' make '的同义词。然而,这种模式是无效的,因为Michael Bay没有在底层图表中编写任何电影的记录。这个例子强调了在生成SPARQL查询时从知识图中合并真实链接信息的重要性。

解决方法:

我们使用单个序列到序列模型来解决自然语言到SPARQL的问题,并在推理期间进行约束解码。我们的解码涉及两种类型的约束。我们首先关注实体和关系的生成。此外,我们利用知识库的互联结构在解码头部实体之后的关系,相应地,解码关系之后的尾部实体。

Question:“Michael Bay的哪部作品获得了奥斯卡奖提名?”

(a)实体和关系检索:我们的模型从实体前缀树和关系前缀树生成实体和关系。

(b)利用知识图谱结构:在生成三元组的过程中,我们的模型利用了KG中存在的关联信息。

例如,如果模型正在为头部实体Michael_Bay生成一个关系,那么它将从候选关系中排除关系write,因为在知识图中没有write与Michael_Bay的关联,如第一个图所示所示。 

Entity and Relation Generation

 对于实体和关系的生成,SPARKLE采用自回归公式,为每个实体 e\in E 或关系 r\in R 赋一个分数,记为p(z|x)

p(z|x) =\prod_{i = 1}^{n}p_{\theta }(y_{i}|x,y_{1},y_{2}....,y_{n})

其中,y表示 e\in E 或 r\in R的标识符中的令牌集合,x为输入,θ表示模型参数,z表示E或R。

为了有效地导航搜索空间,我们使用Beam Search解码策略。

目前,许多多阶段KBQA方法利用BLINK 和ELQ等密集检索器。

然而,这种方法导致检索成本随着知识库的增长而线性增加,因为必须将每个输入句子与所有实体或关系进行比较。相反,我们只是使用Beam Search对包含各种实体和关系的多个SPARQL查询进行排序。这大大降低了与检索相关的成本。此过程所需的时间现在取决于光束的大小和标识符的长度,使其更易于管理。

为了强制SPARKLE只为实体和关系生成有效的标识符,我们定义了标识树 T,T中的每个节点都使用词汇表中的标记进行注释。当模型从根开始遍历树中的节点时,它会基于前面的令牌生成下一个令牌。因此,每个子节点表示构造有效标识符所需的所有可能的连续令牌。

Pruning Invalid Triple Patterns

我们还扩展了约束解码,以防止模型在SPARQL查询中生成无效的三重模式。在两种情况下,我们可以利用知识库的结构信息。第一种情况发生在生成head实体之后生成关系时。在这种情况下,我们限制解码过程只考虑链接到头部实体的关系。该情景的概率公式如下:

 其中w表示可用令牌集,e^{head}表示头部实体,N表示邻居集。下标 s…I 用于表示最近生成的标识符令牌的索引,因为语言模型输出中的每个标识符都由一系列令牌而不是单个令牌表示。

例如,如果模型到目前为止已经生成了“SELECT ?var {[Michael_Jordan]”,则可以理解头部实体标识符包含多个令牌(例如,[,Michael_, Jo, rdan,])。

在这种表示法中,s用于标记头部实体的第一个令牌的索引,使模型能够在正在生成的查询中准确地识别实体。

第二种情况涉及在关系生成之后尾部实体的生成。在这里,我们将尾实体解码过程限制为只考虑与知识库中指定关系有连接的实体。该情景的概率公式如下:

 这些策略的适用性和有效性根植于SPARQL的本质,它按照(h, r, t)的顺序组织三元组。这种结构本质上与序列到序列模型的从左到右解码兼容,使得有效地实现这些约束是可行的。我们通过屏蔽无效实体、关系和连接的令牌的日志概率(将其分数设置为- inf)来强制执行这些约束。我们的方法不仅保证了生成的三元模式的语法准确性,而且使它们与底层知识库的语义结构保持一致。

Implementation Details

我们首先使用Marisa trie(内存高效trie)构建标识符树。

这一点很重要,因为知识库可能包含数百万个组件。为了确保在知识库中查找连接不会减慢解码速度,我们将此信息存储在哈希表中。为了确保模型能够有效地处理SPARQL表达式,我们对每个SPARQL术语进行标记(例如,' ?var ', ' SELECT '和' ORDER BY ')作为单独的令牌。在生成实体时,我们向候选实体插入变量,以便模型可以选择生成它们。对于训练,我们用序列到序列的目标微调预训练的BART模型,最大化相对于模型参数θ的 logp_{\theta }(y|x),这通常用于神经机器翻译。在推理阶段,我们使用束搜索来生成top-k SPARQL查询。按照之前的工作,依次执行这些查询,直到获得非空查询结果为止。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是饿梦啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值