IBM Watson机器人算法介绍
(2011-02-24 17:15:24)
标签:
ibmwatson机器人deepqa问答系统语义网络jeopardyit |
分类: 语义和知识管理 |
(具体版权参考reference,我仅仅是把英文版的总结了一下,写了出来。
Watson机器人产生于IBM的Watson研发中心,机器人短期的主要目标是回答Jeopardy!
Watson机器人分为三大部分
1,
2,
3,
硬件部分这里不重点讨论。
语音识别部分:IBM在90年代开始做ViaVoice,产品推出也很多年了,不过在Watson机器人中以及Watson研发中心的一些关于医疗,保险等商业软件中,语音识别部分主要是由Nuance公司提供。
Watson机器人研发力量主要集中在自动问答系统里面。这部分由该研发中心的DeepQA项目组负责。
DeepQA项目组有大概40多个研发人员,主要分为下面几个小组:
l
l
l
l
l
l
l
l
下面详细介绍DeepQA项目。
1. 目标
目前我们获取知识的途径主要依赖搜索引擎,搜索引擎通过关键词能找到大量的文档,但缺少对找到的文档内容进行进一步分析的能力,可以说获取的知识并不够准确,给用户提供知识的效率也需要提高。
DeepQA项目先要做好基础架构,所以先做成了开放领域的自动问答,以便未来能够更好的适应各个专业领域的知识。目前机器人已经可以像人类专家那样快速的,准确的回答竞赛中的问题了,而且问题的范围可以很广。不过由于竞答类问题的局限,在扩展到各个专业领域时还是需要进行细节上的改动。不过整体架构应该变化不大。
DeepQA机器人未来可能对下面这些行业有所发展:
l
l
l
l
l
l
l
l
l
需要用到的具体技术有:
l
l
l
l
l
l
l
l
l
l
l
2. 问答部分的处理模块和流程
DeepQA主要有两部分:
l
获取结构化的,半结构化的信息,选取其中置信度高的做为知识。这部分第三章介绍
l
用户输入问题,机器人给出答案。
自动问答部分的各个模块和处理流程如图1,主要做了下面这些工作:
1.
2.
3.
4.
5.
6.
由于期望建立一个扩展性比较好的基础架构,在问答部分的处理流程中,几乎包括现有的所有NLP技术,各种技术有的作为基础,有的从不同的角度给出答案的置信度,最后综合各个角度得来的判断,给出结论。下面对这几部分分别介绍。
2.1 问题分析(Question Analysis)
问题分析部分做了很多NLP相关的基础工作,比如:
l
l
l
l
l
l
这些部分的算法在这里不详细介绍了。
2.1.1 问题分类
问题的类型有:
l
l
l
l
如果一个问题由多个子句组成,还需要对各个子句进行分类,有的类型的子句需要特殊处理,比如:现任美国总统
这类子句问题可能需要从本体关系知识库中查询。
问题的分类使用的是常见的基于统计的自动分类算法,通过各种问题的不同特征的表现,来判断具体问题属于什么类别。
能用到的特征有:
1,
2,
3,
4,
5,
6,
2.1.2 LAT标注和疑问焦点提取
LAT: Lexical Answer Type,通过问题中的词或者短语来确定答案的类型,比如:(红色部分标注为LAT)
Clue: Invented in the 1500s
to speed up the game,
Clue:
Though
LAT有:
l
l
l
l
l
大约不到50%的问题中可以找到LAT,具体LAT的出现概率见图2:
问题的焦点:如果把答案替换了焦点部分,新句子是个独立完整的陈述句。焦点很多时候包含对答案有用的信息,经常作为线索中的主语或者宾语出现,并且当用一个答案来替换的话,可以组织成一个事实陈述句。
举例:(红色部分为疑问焦点)
l
l
l
2.1.3 实体间的关系检测(语义网络应用)
问题中包含的关系:
1,
由句法分析得出。
2,
watson有一个三元组库(本体关系库)用以处理语义方面的替换,推理,查询等。方法参考SPARQL语言的介绍。SPARQL是目前国际上通用的语义网络查询和推理语言,主要应用在OWL形式的本体库和RDF形式的本体库。在开放域的QA中,语义关系比较分散,对问答的贡献比较低。
watson的本体库主要来源于Dbpedia等开源本体组织。
语义网络
语义网络通过概念和其他概念之间的关系来定义概念的语义。概念间的关系可以组织成图,图中的节点表示概念,连接表示关系,连接上的标注表明了关系类型如图3。IBM构建了一个语义网络的应用。参考:(http://www.ibm.aqui.com)
当用户的问题是复句,包含多个子句的情况下,机器人需要将问题进行分解。目前主要支持两种情况的复句,
1,
这类问题包含多条线索,如果试图从一句话中匹配到这多条线索很困难。每条线索分别匹配,寻找公共的答案,很大程度上就是问题最终的答案
2,
有的问题的两条线索有递进关系,第一条线索的答案替换这个问题和下一条线索组合成新问题,答案比较容易找到。比如:和美国没有建交的国家有4个,其中的一个在远东。新问题:不丹,古巴,伊朗,朝鲜这四个国家哪个在远东。
2.3 假设句子集的总结(Hypothesis Generation)
先从答案库中检索出可能出现答案的文档,再对候选答案进行总结。问题线索分析可以从下面这几种角度考虑:
1.
2.
3.
4.
5.
具体的流程如下:
l
l
l
2.3.1 答案搜索
模块采用了多种搜索相结合
1,
2,
3,
4,
2.3.2 候选答案总结
候选答案的选取需要:
1,
2,
3,
问题的答案一般是陈述句,一句中包含一个或多个本体,需要判断陈述句中的哪个部分可能是答案(大部分答案是本体,在句子中作主要成分)
通过前期的这些标注,结合问题的类型,答案的类型,在候选的答案文档中抽取出具体的答案来。
在候选答案集得到后,将这些候选答案填充到原始问题中,得到假设句子集。
2.4 假设和检验
通过搜索实例库(Evidence Sources),看这些假设是不是有evidence支持。搜索策略结合了各种方法,比如:
1,
2,
3,
4,
5,
6,
7,
通过这一系列策略,给出每个假设的置信度。这部分结合了信息检索和自动分类的算法。由信息检索计算字符串方面的值;由自动分类算法,综合这些来源的信息(作为特征),给出置信度的可能区域。
所以这部分算是有一定的自学习能力。
在系统结合了多个子句的答案后,综合考虑得出最终答案以及最终置信度。
3. 知识获取和知识表示
3.1 结构化内容获取
现在互联网中也已经整理好了很多结构化的信息,比如:
l
l
l
l
这些知识一般可以总结为:【主本体】
3.2 半结构化内容获取
机器人选择一些比较可信的文档作为种子,通过互联网,检验种子文档中的信息,对种子文档进行扩充。
Nugget定义:
1,
2,
锚的定义:
1,
2,
举例:
The girl working in the bookstore in Hollywood talked to the diplomat living in Britain.
可以分解成多个Nuggets,如下:
l
l
l
l
l
l
方括号中的部分为锚
通过上面的介绍,就可以了解。每次机器读取一句话,就把它分解成多个Nuggets,然后在Evidence库中去计算这些Nugget的置信度,如果可信,就增加到现有的知识库中来。
1,找一个种子文档,从web检索相关文档
2,抽取各个nuggets
3,计算哪些nuggets对种子文档有用
4,整合最有用的nuggets到语料库中
通过这种方法,可以让机器人的知识库达到一种全自动扩张的效果,当然,种子文档的选择很重要,这些文档是知识扩展的初始化信息,对后续扩展的方向有直接的作用。
Reference:
1,
2,