gravity基于知识图谱的问答系统(三):信息抽取
翻译论坛通过问句中的主题词可以找到它在知识库中对应的图节点,我们将该图节点相邻⼏跳(hop)范围内的节点和边抽取出来得到⼀个知识库的⼦图,这个⼦图作者称为主题图(Topic graph),⼀般来说,这⾥的跳数⼀般为⼀跳或两跳,即与主题词对应的图节点在⼀条或两条边之内的距离。主题图中的节点,即是候选答案。接下来,我们需要观察问题,对问题进⾏信息抽取,获取能帮助我们在候选答案中筛选出正确答案的信息。
simens依存树
语法依存树(Dependency tree),如果你对依存树不了解,可以把它理解成是⼀种句⼦成分的形式化描述⽅式。
bus>情人节 英语⾸先我们要提取的第⼀个信息就是问题词(question word,记作qword), 例如 who, when, what, where, how, which, why, whom, who,它是问题的⼀个明显特征 。第⼆个关键的信息,就是问题焦点(question fucus, 记作qfocus),这个词暗⽰了答案的类型,⽐如name/time/place,我们直接将问题词qword相关的那个名词抽取出来作为qfocus,在这个例⼦中,what name中的name就是qfocus。第三个我们需要的信息,就是这个问题的主题词(word topic,记作qtopic),在这个句⼦⾥Justin Bieber就是qtopic,这个词能够帮助我们找到freeba中相关的知识,我们可以通过命名实体识别(Named Entity R
ecognition,NER)来确定主题词,需要注意的是,⼀个问题中可能存在多个主题词。最后,第四个我们需要提取的特征,就是问题的中⼼动词(question verb ,记作qverb),动词能够给我们提供很多和答案相关的信息,⽐如play,那么答案有可能是某种球类或者乐器。我们可以通过词性标注(Part-of-Speech,POS)确定qverb。通过对问题提取 问题词qword,问题焦点qfocus,问题主题词qtopic和问题中⼼动词qverb这四个问题特征,我们可以将该问题的依存树转化为问题图(Question Graph)
汉堡包的英文单词问题图
具体来说,将依存树转化为问题图进⾏了三个操作发动机凸轮轴
1)将问题词qword,问题焦点qfocus,问题主题词qtopic和问题中⼼动词qverb加⼊相对应的节点中,如what -> qword=what。
2)如果该节点是命名实体,那就把该节点变为命名实体形式,如justin -> qtopic=person (justin对应的命名实体形式是person)。这⼀步的⽬的是因为数据中涉及到的命名实体名字太多了,这⾥我们只需要区分它是⼈名 地名 还是其他类型的名字即可。
3)删除掉⼀些不重要的叶⼦节点,如限定词(determiner,如a/the/some/this/each等),介词(preposition)和标点符号(punctuation)。
从依存树到问题图的转换,实质是就是对问题进⾏信息抽取,提取出有利于寻找答案的问题特征,删减掉不重要的信息。
kkc
找出正确答案
在候选答案中找出正确答案,实际上是⼀个⼆分类问题(判断每个候选答案是否是正确答案),我们使⽤训练数据问题-答案对,训练⼀个分类器来找到正确答案。那么分类器的输⼊特征向量怎么构造和定义呢?
特征向量中的每⼀维,对应⼀个问题-候选答案特征。每⼀个问题-候选答案特征由问题特征中的⼀个特征,和候选答案特征的⼀个特征,组合(combine)⽽成。
在使⽤的时候,对于每⼀个候选答案,我们抽取出它的特征(假设有k个特征)后,再和问题中的每⼀个特征两两结合(假设有m个特征),那么我们就得到了k*m个问题-候选答案特征,因此我们的输⼊向量就是⼀个k*m-hot(即k*m维为1,其余维为0)的3万维向量。 作者⽤带L1正则化的逻辑回归(logistic regression)作为分类器,训练每种问题-候选答案特征的权值
论⽂实验与总结
守望幸福候选答案的主题图是根据问题中的主题词确定的,⽽⼀个问题可能包含多个主题词。作者先通过命名
实体识别提取问题中的所有命名实体(如果提取不到⼀个命名实体,则使⽤名词短语代替),将所有命名实体输⼊到Freeba Search API中,选取返回排名最⾼的作为最终的主题词,使⽤Freeba Topic API得到相应的主题图。登记账簿
信息抽取的办法,总体来说涉及到了不少linguistic的知识,⽐较符合⼈类的直觉。虽然也涉及到了很多⼿⼯和先验知识的东西,但个⼈认为它的思想还是很不错的。
作者在构造候选答案特征时,引⼊了和P(R|Q)相关的特征,这个思路是⼀个很好的思路,但是对P(R|Q)的估计⽅式总体来说还是⽐较粗暴(⽐如使⽤backoff),个⼈认为可以使⽤Deep Learning的⽅法进⾏提升。
信息抽取的特征向量,每⼀维都代表了⼀个可解释的特征,是⼀种离散的表达。在下⼀期中,我们将介绍KB-QA的第三种传统⽅法——向量建模,它将使⽤分布式表达(Distributed Embedding)来构造问题和答案的特征向量,该⽅法相⽐信息抽取和语义解析,涉及到较少的linguistic和⼿⼯规则,也较容易通过Deep Learning进⾏提升。