How Did Watson Answer? —— Search & Candidate Generation

一、      摘要

前面两篇文章分别介绍了如何处理事实性问题和特殊类型问题,今天的这篇主要介绍如何处理通用问题。

不同于传统QA系统要处理的问题,Watson面对的答案类型可谓是丰富多彩,数量庞大,处理通用类型问题主要依靠两个构件——搜索、候选生成。其中,搜索利用了标题导向的文档(还记得吧)的标题和内容的性质关系,还利用问题中的语法和语义关系在结构化知识中查询。另外,候选生成利用它的标准知识库中的非结构化的内容来查询生成候选答案。

二、      概述

(一) 问题分析概述

这里的问题分析包括了前面讨论的一些内容。先说结果,问题分析的结果直接封装了语法和语义分析结果,包括依赖分析、语义分析、LAT、题眼(focus)。

系统中的Parser就是之前提到的ESG(English Slot Grammar),还有一个题眼检测器,一个关系识别器,以及LAT检测器。

(二) 搜索与候选生成概述

系统与DeepQA的连接见下图。


在初级搜索阶段,主要是对诸如百科全书、新闻版块这样的非结构化文本的搜索,但是Answer lookup和PRISMATIC search注重的是结构化的文本。在生成候选项的时候,主要利用的是标题导向的文本内容以及内容之间的“链接信息”。

三、      搜索非结构化资源

概括来说,非结构化的资源搜索,主要基于问题/答案对与相关文档的以下三种关系。第一种,正确答案就是文档的标题,文旦的内容能够很好地匹配问题的描述,答案直接就是文档标题,这种被称为面向标题的搜索(Document-Oriented Search)。第二种,文档的标题出现在了题干中,文档内容能够回答问题,针对这种情况,可以对那些标题出现在题干中的文档的内容进行搜索,这种被称为TIC段落搜索(Title-in-clue Passage Search)。第三种情况,文档的标题既没有出现在题干中,也不是答案,这时候采用的就是传统的QA搜索策略。

(一) 搜索查询生成

生成的查询分为两种,一种是“完整查询”(full query),另一种是LAT查询(LAT-only query),无论是哪个query,都是由问题分析的结果来生成。完整查询基于题干中抽取出来的关键内容和词组产生,而LAT查询则仅仅基于有修饰词的LAT产生。

在应用过程中,完整查询会在文档搜索和段落搜索中使用,而LAT查询只会在段落搜索中使用。

(二) 文档搜索

文档搜索基于Indri搜索引擎进行,目标是标题导向的文档内容,追求的目标是让文档作为一个整体来更好的匹配问题。最终,会得到50个最相关的长文档和5个最相关的短文档。所谓长文档就是百科全书或者Wikipedia那种,而短文档就是辞典条目那一类的。

(三) 段落搜索

对比已有的QA系统,Watson在段落搜索的改进主要有,1)采用了TIC段落搜索来搜索那一小部分高度相关的文档,2)采用了多种搜索引擎共同搜索。(简直喜极而泣了,我怎么没想到混合采用Indri和Lucene)

1.     Indri段落搜索

在Watson的实现中,Indri的查询窗口大小被设置为20,滑动偏移为6。也就是从前往后,每20个词作为一个查询,每次查询以后6个词。

2.     基于Indri的TIC段落搜索

针对Watson要处理的题型的基本特点,另外实现了一个映射,把规范化的Wikipedia文档标题跟与之相关的Wikipedia文档进行了关联。这样在检索的时候,只检索那部分相关的文档。

3.     Lucene段落搜索

Watson中使用Lucene做检索分为两步,第一,使用Lucene文档搜索检索相关文档,第二,抽取这些文档的段落,并依据接下来几个特性评分。评分的特性有,1)句子的偏移,越接近开头的句子越有可能相关;2)句子长度,越长的句子越有可能相关;3)命名实体的数量,命名实体越多越有可能相关。

(四) 搜索结构化资源

对于结构化资源的搜索,主要有两种手段,针对用现有知识库描述语义中的关系的“答案检查”(Answer Lookup),以及针对语法和浅层语义关系的“棱镜搜索”(PRISMATICSearch)。

1.     答案检查

Jeopardy!中的很多问题虽然不适合用逻辑语言来重新表述(我会告诉你只是因为这件事很难才放弃吗),但是问题的一部分可以用逻辑语言重组来让计算机看懂。Watson中使用的是基于规则的关系检测,首先在题干中查找数据库中已知的命名实体,这一步称作“实体消岐与匹配”,如果能够匹配,那就生成一个与该实体相关的查询。

由于是基于规则的,答案检查对于关系的检测不会做到全面,但是覆盖使用频率最高的那部分就足够赢了。

2.     棱镜搜索

(笔者发癫:一想到棱镜这个翻译,自己都被自己的才华感动了。其实我是吸引眼球来的,这个搜索方式可与棱镜计划一点关系都没有。You’re being watched…)

棱镜(PRISMATIC)是一个大型的词典式的关系资源,可以提供浅层语义信息。在Watson中,最典型的应用就是“is a”关系,可以解决大部分涉及到LAT的题目。

四、      从搜索结果中生成候选集

对于从结构化资源中检索到的结果,可以直接作为候选答案,而对于非结构化资源搜索的结果则需要进一步处理。处理的方式有三种:1)文档标题候选生成,用于文档搜索结果;2)Wikipedia标题候选生成,用于段落搜索结果;3)锚文本候选生成,两种搜索结果都可以用。

(一) 文档标题候选生成

对于文档搜索的结果,文档中那些包含了匹配到的文档的标题的实体就是很好地候选项。

(二) Wikipedia标题候选生成

Wikipedia文档的标题能够覆盖95%以上的Jeopardy!问题的答案,这个性质太尼玛过分了……(笔者已哭晕厕所,谁告诉我高考答案能用什么覆盖……)。

对于文档中已经抽取的全是名词词组的段落,如果是Wikipedia的文档标题,并且没有被其他标题直接包括在内,那么就把这个标题作为候选答案。

(三) 锚文本候选生成

之所以能够使用链接的锚文本来辅助候选生成,是基于链接信息能够帮助提高准确率这样一个假设,同时,也因为有歧义的候选答案主要满足以下两个标准:1)代表了Wikipedia文档中的某个重要概念、2)Wikipedia有文章是关于这个候选答案的。

对于每篇Wikipedia中的文章,我们发现有以下几类文本能够代表文档中的重要概念:

1) 文档中的锚文本

2) 超链接目标文档的标题(通常是1的同义词)

3) 当前文档的标题

4) 当前文档的重定向文档的标题(通常是3的同义词)

为了用锚文本消岐,有三种应对策略。

1) 使用链接信息来定位候选答案的出处,以此来消除歧义;

2) 对于基于锚文本抽取出来的候选答案,用目标文档来消岐;

3) 对于从文档标题或重定向中抽取的答案,可以用当前文档内容来消岐。

 

 

后记:这篇文章,笔者更换了一种写文的方式,一边读Paper,一边整理。以前都是先读完,再写,明显效率不太高啊,现在效率可就高多了!归根结底,还是英语不行……背单词去了……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值