基于关联度的知识问答题排序方法
Abstract
2018共享任务基于知识的问题回答。我们的系统使用基于单词的最大匹配方法来寻找实体候选。然后,我们结合编辑器距离、字符重叠和word2vec余弦相似度对每个候选实体的SRO三元组进行排序。最后选择得分最高的1分SRO的对象作为问题的答案。该系统的测试结果在测试集上实现了 62.94% 的答案精确匹配。
3 Our Approach
图1展示了我们方法的系统架构。对于每个问题,系统首先找到候选实体。然后分别进行实体排名和关系排名,为每个候选实体和关系分配排名分数。最后,在答案排名阶段,系统根据实体评分和关系评分找到排名第一的三元组,排名第一的对象实体就是问题的答案。
Entity Linking
由于知识库中的实体有不同的名称,如中文名、英文名、昵称、别名等,我们构建了一个实体映射,将这些名称映射到原始实体。为了检测问题中的主题实体,我们使用基于词的最大匹配方法来寻找实体候选。首先,通过ltp1[15]分割器对问题进行分段。然后我们将问题中的单词一一列出,并在实体图中搜索。如果它存在于实体映射的键中,则键的相应值将被添加到实体候选列表中。例如,马汀·泰勒青少年时在哪支球队踢球。本文将,是,在,哪这种词过滤,然后本文对每个子列表进行基于词的最大匹配 对于子列表,马汀·泰勒,青少年,并且在实体字典中搜索它,很明显它并不是一个实体,然后我们将字符串长度缩短,现在我们搜索马汀·泰勒和青少年两个实体在实体词典中。它们都是现有的实体,因此它们被添加到实体候选列表当中。对于子列表球队,踢球,我们进行同样的操作。最后我们得到实体候选
3.2 排序
知识库由数百万个主题-关系-对象(SRO)三元组组成。每个主体实体有几十个关系-对象对,每个关系只对应一个对象实体。因此,找到问题等于对主体实体和客体实体的关系进行排序,对应于上面一个关系的应该是答案。在实体链接部分找到候选实体后,我们现在可以从知识库中收集这些实体的所有SRO三元组。在这一部分中,我们结合编辑器距离分数、字符重叠分数和word2vec余弦相似度分数来对每个候选实体及其关系进行排名。
Edit Distance
编辑距离是一种通过计算将一个字符串转换成另一个字符串所需的最小操作数来量化两个字符串之间差异的方法。假设两个字符串s1和s2的原始编辑距离标记为ed(s1,S2),我们使用的编辑距离分数为,可以看出编辑距离越短,得分越高。
s
c
o
r
e
e
d
=
1
−
e
d
(
s
1
,
s
2
)
m
a
x
(
l
e
n
(
s
1
)
,
l
e
n
(
s
2
)
)
score_{ed}= 1 − \frac{ed(s_1,s_2)}{ max(len(s_1),l e n(s_2))}
scoreed=1−max(len(s1),len(s2))ed(s1,s2)
Edit Distance (字符重叠)
字符重叠是两个字符串中重叠字符的数量。更大的字符重叠表明这两个字符串更有主题相关性。我们将角色重叠分数记为(是否可以利用子图相似度来确定主题相关性呢)。
s
c
o
r
e
c
o
=
∣
s
e
t
(
s
1
)
∣
∩
∣
s
e
t
(
s
2
)
∣
∣
s
e
t
(
s
1
)
∣
∪
∣
s
e
t
(
s
2
)
∣
score_{co}=\frac{|set(s_1)| ∩ |set(s_2)|}{ |set(s_1)| ∪ |set(s_2)|}
scoreco=∣set(s1)∣∪∣set(s2)∣∣set(s1)∣∩∣set(s2)∣
Word2vec Cosine Similarity (Word2vec余弦相似度 )
我们用一个20G的中文新闻语料库训练一个word2vec模型,这样我们就可以为词汇表中的每个中文单词获得一个向量。然后字符串向量计算如下
v
(
s
)
=
∑
w
i
∈
s
v
(
w
i
)
v(s) = \sum_{w_i\in s}{v(w_i)}
v(s)=wi∈s∑v(wi)所以两个字符串的余弦相似度被计算为两个字符串向量的余弦相似度。
s
c
o
r
e
w
2
v
=
v
(
s
1
)
⋅
v
(
s
2
)
∣
∣
v
(
s
1
)
∣
∣
⋅
∣
∣
v
(
s
2
)
∣
∣
score_{w2v}= \frac{v(s_1) · v(s_2)} {||v(s_1)| | · | |v(s_2)||}
scorew2v=∣∣v(s1)∣∣⋅∣∣v(s2)∣∣v(s1)⋅v(s2)
Related Score
两个字符串的相关分数定义为:
s
c
o
r
e
r
e
l
a
t
e
d
=
s
c
o
r
e
e
d
+
s
c
o
r
e
c
o
+
s
c
o
r
e
w
2
v
score_{related}= score_{ed}+ score_{co}+ score_{w2v}
scorerelated=scoreed+scoreco+scorew2v
Entity Ranking
我们通过候选实体中有多少对象实体与问题相关来对候选实体进行排序.考虑这个问题"巴西球员托罗是哪天出生的。"假设有多个实体“托罗”他们有不同的国籍,不同的职业,当我们计算每个实体候选人和问题的相关分数时,显然是国籍所属实体的相关分数。国籍是巴西和职业是球员会比其他的更高。如果相关分数大于阈值λ,则我们认为对象实体与问题相关。因此实体分数计算如下
s
c
o
r
e
a
w
a
r
d
=
(
1
+
s
c
o
r
e
e
d
)
×
(
1
+
s
c
o
r
e
c
o
)
×
(
1
+
s
c
o
r
e
w
2
v
)
score_{award}= ( 1 + score_{ed}) × (1 + score_{co}) × (1 + score_{w2v})
scoreaward=(1+scoreed)×(1+scoreco)×(1+scorew2v) 其中ed代表编辑距离得分,co代表字符重叠,w2v代表余弦相似度。
我们将λ的值从1.0调整到2.0,间隙为0.1,并发现当λ = 1.5时,在训练数据上获得最佳结果。
Relation Ranking
在计算分数之前,我们移除对应于候选实体和相关对象实体的字符串,以简化计算。例如,移除字符串后,问题 巴西球员托罗是哪天生的变成 ‘是哪天生的’。此外,我们还做疑问词引申。在某些情况下,实体的关系不会出现在问题中。例如,与问题的关系应该是出生日期或者生日然而这两个问题都不存在,所以我们将“哪天出生”映射成出生日期和生日。后者被称为疑问词的扩展。最后,通过计算每个候选实体与问题和问题词扩展的关系的相关分数,对候选实体的关系进行排序。最后,通过计算每个候选实体与问题和问题词扩展的关系的相关分数,对候选实体的关系进行排序。
其中,R指关系,Ext指疑问词的引申,Q∪Ext指疑问和Ext的并集。α和β是权重因子。根据实验,我们将α设置为0.47,将β设置为0.53。
Answer Ranking.
对于SRO三元组,本文计算如下
中O指的是SRO三元组的宾语,Q指的是问题,根据实验设定λ为1.5。
如果分值(O,Q) ≥ λ,则表明该对象是已知事实,不能作为如Eq所示问题的答案。(???)我们通过将每个关系的得分与相应实体候选的得分相乘来对SRO进行排名,并从排名前1的SRO中获得对象作为答案。
实验
在本文中,我们使用了NLPCC 2018开放域KBQA共享任务提供的数据集。该数据集包括24,479个用于训练的单关系问答对,一个包含43M SRO三元组的中文知识库,以及7M个从提及到实体的映射数据。测试集包含618个问题。由于映射数据不是我们的系统所期望的,我们重建了一个从提及到没有分词的实体的实体映射。