How Did Watson Answer?——Get Unstructured Textual Resource

来源:互联网 发布:数据挖掘十大算法 知乎 编辑:程序博客网 时间:2024/05/18 09:59

 

一、      系统高级架构

Watson获取非结构化文本信息主要通过三种方法——资源采集(Source Acquisition)、资源转换(SourceTransformation)、资源扩展(Source Expansion)。后面的一节将一一对这些方法进行介绍。

在这一篇文章中,只讲述非结构化文本信息而避开结构化、半结构化的信息,后两者将在后面的文章中讲述。(其实是因为,那部分论文我也还没读完……)

二、      资源采集

(一) 功能简介

通过迭代的方式,不断地收集能够覆盖现有资源中明显“漏洞”的新的文档集合。所谓的明显的漏洞也就是现有资源所覆盖不到的主题。

(二) 初始语料库的覆盖分析

Watson利用13GB的Wikipedia文档作为初始语料库。原因是(简单而粗暴),Wikipedia中的标题能够覆盖95.47%的《Jeopardy!》题目。别着急,幸福来得不会这么容易!

不幸的是,虽然覆盖率很高,如果只利用Wikipedia文档生成候选集,最终的准确率为59%,召回率为77.1%。很明显,这种精度还不能够去参加比赛,毕竟人类选手也是很变态的。为了解决这个问题,就用到了下面的方法。

(三) 错误分析与添加资源

训练的每一轮迭代中,如果召回率过低,那就关注由某一领域资料匮乏而引起的查询失败。这里先不关注如何改善对现有资源的搜索和候选生成策略,主要关注(1)语料库中没有当前问题的答案、(2)语料库中当前问题的答案没有出现在候选集中。

如果在这里你想听什么高大上的算法问题,那你一定很失望——因为当我知道IBM这帮人是人工分析的时候,我也很失望!没错,在初始的几轮分析中,他们就是靠人工分析的到底有哪些题型是Watson回答不了的。然后作为解决方案,Watson的语料库添加了以下几种资料——Wiktionary、Wikiquote、多种版本的圣经以及古腾堡项目中的书籍。当这么多牛逼的语料库放在一起之后,还是不够用的,于是他们又把百科全书、新闻、小语种词典等等一股脑塞进了Watson里,再加上后两项技术那么一处理,语料库达到了59GB。

我承认,这似乎不算多,毕竟藏片达百G的宅男也不是没有。但是,这些可都是文本信息啊,文本啊,你懂得……

然后,IBM的攻城狮们是怎么对比把新的资源加进去的效果的呢?嗯,别失望,很简单,对比添加前后的准确率、召回率,就酱,简单、直接、暴力、有快感,不好意思,打错了,是有效果。

三、      资源转换

(一) 功能简介

把语料库中的信息抽取出来,并且表示为机器能够轻松使用的方式。不装逼的说法,把文本信息抽取到数据结构之中。

(二) 利用标题导向的资源

能够利用这种资源,是因为标题导向的资源在答题中有两个很有用的性质,(1)如果标题导向的文档的内容能够很好地匹配题干,那么答案往往就是文档标题,(2)如果题干中有特别明显的实体,而且这个实体有相关的多个标题导向的文档来描述它,那么答案往往就在这些文档中。也就是,利用标题在内容中找答案,或者,利用内容在标题中找答案。

有了这样两个很有用的性质,我们就可以搞一个“三叉搜索”——文档搜索、TIC段落搜索、段落搜索。莫怪我装逼,TIC段落搜索是Title-In-Clue段落搜索的简称,一长串单词后面打起来实在费劲。本来Watson只有段落搜索,也就是在语料库中抽取相关的短段落,很朴素也是在大部分QA系统中都采取的办法。但是,上面两个有趣的性质,让人直接想到——可以搜索文档内容,如果内容能很好地匹配题干,那么文档标题就是答案(文档搜索);可以搜索题干(Clue)中的标题(Title),然后采用内容作为答案。更深层次的讨论将在以后的文章中进行。单独使用文档搜索或者TIC段落搜索效果都不如段落搜索,但是,如果三者合起来用,召回率就从64.7%上升到77.1%。

擦亮双眼,看仔细哦,三种搜索方式和资源采集中的说法并不冲突。

(三) 生成标题导向的“伪文档”

上节中讲到了两个标题导向资源的很好的性质,既然有这么好的性质,自然是想大大地利用一下。于是,IBM的攻城狮们把许多其他的资料,比如莎士比亚的作品、圣经、歌词等等,都转换成了标题导向的。比如说,莎士比亚笔下的某个人物,会把Ta在作品中出现的那些片段都组织在这样一个“标题”下面。这只是一种方式,还可以利用很多方式,像什么歌词中的“隐喻”、人物的台词等等。以这种方式形成的文档,被称为“伪文档”,因为这些文档并不是它开始的模样了。

(四) 重组标题导向的文档

先看一下下面的两个定义:

l  Program

²  A set of structured activities.

²  A leaflet listing information about a play, a game, or otheractivities.

²  A performance of a show or other broadcasts on radio or television.

²  …

l  Programme

²  A planned sequence of events.

²  A sheet or a booklet that lists a schedule of events.

²  A presentation that is broadcast on radio or televisions.

²  …

好,现在题干中发现的线索是“Aset of structured activities or a planned sequence of events”,以上两个定义呢,都不能“完美”地匹配。但如果交叉引用这两个定义,我们可以知道,这里的答案就是program。为了解决这个问题,Watson使用了一种名为“支持片段检索”的技术。当program和programme以及其他N多候选答案列出来以后,Watson会评价一下如果交叉引用某两个答案中的片段效果如何。另外Watson还用了谓词逻辑结构来评估题干和文档中的片段的相似程度。

另一大类重组方式,则是为了更好地匹配题干中的语句,比如说“A program is a set of structured activities”。我们可以很轻易地将program词条组织为:

l  Program

²  A program is a set of structured activities.

²  A program is a leaflet listing information about a play, a game, orother activities.

²  A program is a performance of a show or other broadcasts on radio ortelevision.

²  …

四、      资源拓展

(一) 功能简介

为了解决百科全书、辞典中词条内容与自然语言的花式表达、相关内容不能完全匹配的问题,Watson中引入了资源拓展。也就是在以百科全书、辞典、Wikipedia等中的词条作为“种子”文档,在Web上搜索相关文本,并选取适当地内容加入到资料库中。

(二) 选择高度相关的种子文档

经过一番探索,IBMer们又发现了一个有用的性质,《Jeopardy!》的答案绝大部分是流行的实体。实体一般在Wikipedia或者辞典中都会有词条对应,只要评估一下实体的流行度,就可以决定要不要把它作为种子了。(不得不说,真是机智)

怎么评估流行度呢?也很简单直接暴力有效果,Wikipedia中用连接度衡量、百科全书辞典这一类的就用频率衡量。就这样,选出流行度最高的实体作为种子,放入到资源拓展算法中去。每一个种子文档都是一个特定主题的描述文档。

(三) 资源拓展算法

输入:种子文档

输出:种子相关的伪文档

流程:检索、抽取、评估、合并,如下图。


算法详解:

1.     检索

由每个种子文件生成一个查询,在搜索引擎中查询相关度排在前100的网页。对于百科全书,使用词条名称作为查询;对于辞典,在后缀中加上“定义”作为查询。

2.     抽取

抽取HTML页面中与种子相关的文本片段。注意,是片段,而不是整个页面的内容。这一步中滤去噪声非常关键。

3.     评估

评估需要一个前提——训练好的二分类机器学习模型。首先通过人工标注的方法,让模型学习区分相关与不相关的内容(插播一句,分成relevant与irrelevant两类让我不由自主地想起了宅总,美剧《Person of Interest》的人物,根妹,我的最爱!)。评估的标准这要是三种特性——主题特性、搜索特性、表面特性。其中,主题特性是指能够将文本片段内容与种子文档内容相关联的特性;搜索特性是指Web搜索中的排名;表面特性则指词汇本身的特性,比如说长度。

由于很多文本片段也是相关联的,所以最好还要文本片段的邻接表。

4.     合并

将挑选出来的文本片段,按照相关性评分从高到低的顺序,拼接成为以种子名为名的文档。这个文档也就是前面多次提到的“伪文档”。

 

 

后记:这篇文章中,很多东西仍然是概述性质的。实在不是我想忽悠大家,而是,我也还没读到后面的Paper,真不敢说在后面的paper中是不是对每一个算法有详尽的描述。反正代码级的东西大家还是不要指望了。


1 0