知识库问答KB-QA——信息抽取

以一个该方法的经典代表作为例,该方法来自约翰·霍普金斯大学Yao X, Van Durme B.的 Information Extraction over Structured Data: Question Answering with Freebase(文章发表于2014年的ACL会议)。
该类方法通过提取问题中的实体,通过在知识库中查询该实体可以得到以该实体节点为中心的知识库子图,子图中的每一个节点或边都可以作为候选答案。通过观察问题,依据某些规则或模板进行信息抽取,得到表征问题和候选答案特征的特征向量,建立分类器,通过输入特征向量对候选答案进行筛选,从而得出最终答案。

如何回答问题

若有人问你 “what is the name of Justin Bieber brother?" ,并且给你一个知识库,你会怎么去找答案?显然,这个问题的主题(Topic)词就是Justin Bieber,因此我们会去知识库搜索Justin Bieber这个实体,寻找与该实体相关的知识(此时相当于我们确定了答案的范围,得到了一些候选答案)。接下来,我们去寻找和实体关系brother相关的实体(事实上freebase里没有brother这个实体关系,而是sibling,我们需要进行一个简单的推理),最后得到答案。

如何确定候选答案

根据人的思维,当确定了问句中的主题词,就可以去知识库里搜索相应的知识,确定出候选答案。如果把知识库中的实体看作是图节点,把实体关系看作是,那么知识库就是一个庞大的图,通过问句中的主题词可以找到它在知识库中对应的图节点,我们将该图节点相邻几跳(hop)范围内的节点和边抽取出来得到一个知识库的子图,这个子图作者称为主题图(Topic graph),一般来说,这里的跳数一般为一跳或两跳,即与主题词对应的图节点在一条或两条边之内的距离。主题图中的节点,即是候选答案。接下来,我们需要观察问题,对问题进行信息抽取,获取能帮助在候选答案中筛选出正确答案的信息。

如何对问题进行信息抽取

下图是 “what is the name of Justin Bieber brother?" 这个问句的语法依存树(Dependency tree),也可以把它理解成是一种句子成分的形式化描述方式。

在这里插入图片描述
首先通过依存关系nsubj(what, name) 和 prep_of(name, brother) 这两条信息知道答案是一个名字,而且这个名字和brother有关,当然我们此时还不能判断是否是人名。进一步,通过nn(brother, justin bieber)这条信息我们可以根据justin bieber是个人,推导出他的brother也是个人,综合前面的信息,我们最终推理出来我们的答案应该是个人名。(注:这里nsubj代表名词性主语,prep_of代表of介词修饰,nn代表名词组合,更多tag了解:http://www.hankcs.com/nlp/chinese-sentences-svo-java-extraction.html)当确定了最终答案是一个人名,就很容易在备选答案中筛选出正确答案了。

对问题进行信息抽取的实施过程
  • 提取的第一个信息是问题词(question word,记作qword), 例如 who, when, what, where, how, which, why, whom, whose,它是问题的一个明显特征 。
  • 第二个关键信息是问题焦点(question fucus, 记作qfocus),这个词暗示了答案的类型,比如name/time/place,我们直接将问题词qword相关的那个名词抽取出来作为qfocus,在这个例子中,what name中的name就是qfocus。
  • 第三个我们需要的信息是这个问题主题词(word topic,记作qtopic),在这个句子里Justin Bieber就是qtopic,这个词能够帮助我们找到freebase中相关的知识,我们可以通过==命名实体识别(Named Entity Recognition,NER)==来确定主题词,需要注意的是,一个问题中可能存在多个主题词。
  • 第四个我们需要提取的特征是问题的中心动词(question verb ,记作qverb),动词能够给我们提供很多和答案相关的信息,比如play,那么答案有可能是某种球类或者乐器。我们可以通过词性标注(Part-of-Speech,POS) 确定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)。

从依存树到问题图的转换,实质是就是对问题进行信息抽取,提取出有利于寻找答案的问题特征,删减掉不重要的信息。

如何构建特征向量对候选答案进行分类

在候选答案中找出正确答案,实际上是一个二分类问题(判断每个候选答案是否是正确答案),我们使用训练数据问题-答案对,训练一个分类器来找到正确答案。

特征向量中的每一维,对应一个问题-候选答案特征。每个问题-候选答案特征由问题特征中的一个特征,和候选答案特征的一个特征,组合(combine) 而成(组合记作 | )。

问题特征:我们从问题图中的每一条边e(s,t),抽取4种问题特征:s,t,s|t,和s|e|t。如对于边prep_of(qfocus=name,brother),我们可以抽取这样四个特征:qfocus=what,brother,qfocus=what|brother 和 qfocus=what|prep_of|brother。

候选答案特征:对于主题图中的每一个节点,我们都可以抽取出以下特征:该节点的所有关系(relation,记作rel),和该节点的所有属性(property,如type/gender/age)。对于Justin Bieber 这个topic我们可以在知识库找到它对应的主题图,如下图所示:

在这里插入图片描述
*注:*图中虚线表示属性,实线表示关系,虚线框即属性值,实现框为topic node。在知识库中,如果同一个topic节点的同一个关系对应了多个实体,如Justin Bieber的preon.sibing_s关系可能对应多个实体,那么freebase中会设置一个虚拟结点dummy node,来连接所有相关的实体。

例如,对于Jaxon Bieber这个topic节点,我们可以提取出这些特征:gender=male,type=person,rel=sibling 。可以看出关系和属性都刻画了这个候选答案的特征,对判断它是否是正确答案有很大的帮助。

问题-候选答案特征:我们希望一个关联度较高的问题-候选答案特征有较高的权重,比如对于问题-候选答案特征 qfocus=money|node type=currency(注意,这里qfocus=money是来自问题的特征,而node type=currency则是来自候选答案的特征),我们希望它的权重较高,而对于问题-候选答案特征qfocus=money|node type=person我们希望它的权重较低。

接下来我们用WebQuestion作为训练数据,使用Stanford CoreNLP帮助我们对问题进行信息抽取。训练集中约有3000个问题,每个问题对应的主题图约含1000个节点,共计有3 million的节点和7 million种问题-候选答案特征,作者用带L1正则化的逻辑回归(logistic regression) 作为分类器,训练每种问题-候选答案特征的权值(L1正则化的逻辑回归很适合处理这种稀疏的特征向量,作者表示其效果好于感知机Percptron和支持向量机SVM)。 训练完毕后,得到了3万个非零的特征,下表列出了部分特征和它相应的权值,可以看出问题特征和候选答案特征相关度较高时,其权值较高。

在这里插入图片描述
因此,在使用的时候,对于每一个候选答案,我们抽取出它的特征(假设有k个特征)后,再和问题中的每一个特征两两结合(假设有m个特征),那么我们就得到了km个问题-候选答案特征,因此我们的输入向量就是一个km-hot(即k*m维为1,其余维为0)的3万维向量。

在提取候选答案的特征时,对每个实体提取了它的关系和属性,在论文中,作者还额外提取了一个更强力的特征,即每一个关系R和整个问题Q的关联度,可表示为概率的形式 P ( R ∣ Q ) P(R \mid Q) P(RQ)

概率求解:作者采用朴素贝叶斯backoff model(即 P ( Q ) = ∏ i = 1 ∣ Q ∣ P ( w i ) P(Q)=\prod_{i=1}^{|Q|} P\left(w_{i}\right) <

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值