原创
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
目录
研究意义
QA系统发展历程
QA系统分类
QA系统的处理框架
基于FAQ的问答系统
1、候选问题集的建立
2、问句匹配度相似度计算
3、问题答案集合更新
基于大规模文档集的问答系统
1、问题分析模块
2、检索模块
3、答案抽取模块
研究意义
搜索引擎系统:1、检索需求的表达不够准确:用户的检索需求往往是非常复杂而特殊的无法以几个关键字的简单逻辑组合来表达用户的检所需求。2、检索结果不够简洁:返回结果太多导致用户很难快速准确地定位到所需信息。3、缺乏语义处理技术的支撑:传统信息检索以关键词为基础的索引、匹配算法尽管简单易行,但毕竟停留在语言的表层而没有触及语义,使得检索效果一般。
问答式信息检索是一种允许用户以自然语言方式询问,系统从单语或多语文档集中查找并返回确切答案或者蕴含答案文本片断的新型信息检索的方式。问答系统允许用户以自然语言的形式查询信息,例如:世界上最大的宫殿是什么宫殿?系统则直接提供用户准确、简洁的答案,例如:紫禁城/故宫。问答系统能够提供用户真正的有用、精确的信息,它将是下一代的搜索引擎的理想选择。
基于自然语言处理技术的问答系统是传统搜索引擎改进的方向之一,自然语言问答系统本身处理的输入就是以自然语言形式表达的问句,通过提取问句中的查询新息,然后解析出用户的查询意图,再根据查询意图从文档中精准定位答案所在,将自然语言形式的答案抽取出来返回给用户,而不仅仅是将问题的答案文档分布返回给用户,这无论是从精确程度还是满足用户的检索需求上都是很大的进步。
智能问答系统涉及的领域很广,其中主要关键技术有知识的抽取和表示,用户问句的语义理解和通过知识推理得到答案。这些领域都需要进行深入研究我们才会得到更好的智能问答系统。而无论我们在任一领域取得重大的突破,不仅仅对于智能问答系统,而且对于其它领域,包括文本分类、推荐系统等都会有相当大的促进作用。
QA系统发展历程
1950年,英国数学家A.M.Turing在其论文《Computing Machinery and Intelligence》中提到测试机器是否具有智能的问题:“机器能思考吗?”,并提出了判定机器能否思考的方法——图灵测试。其方案为:由测试人A与另一房间中的两个对象B和C对话,E和=中有一个是人,另一个是计算机。如果经过一段时间的对话之后,A不能断定B和C中谁是人,谁是计算机,则认为计算机已经具备了人的智能。图灵测试可以看作是QA系统的蓝图。
早期的两个比较著名的QA系统:BASEBALL(1961年)和LUNAR(1973年)。BASEBALL可用来回答美国一个季度棒球比赛的时间地点成绩等 自然语言问题。LUNAR可帮助地质学家方便的了解、比较和苹果股阿波罗登月计划积累的月球突然和岩石的各种化学分析数据。它们的后台有一个数据库,保存系统可提供的各种数据。而在用户提问时,系统把用户的问题转换成SQL查询语句,从数据库中查询到数据提供给用户。
一般认为,第一个QA系统是JasephWeizenbaum在1966年实现”Eliza”。Eliza扮演一个心理学专家的角色,它采用启发式的心理疗法,通过反问来应对精神病人的提问,诱导病人不停地说话,从而达到对病人进行心理治疗的目的。Eliza用的是模式及关键字匹配和置换的方法,没有发展成一套系统的技术。
可进行对话的系统有TerryWinograd在1971年用MACLICP语言开发的SHRDLU(积木游戏)和Bobrow等在1977年前后开发的GUS(旅行信息咨询)。
20世纪70年代,出现了阅读理解系统:耶鲁大学人工智能实验室开发的SAM,SAM的能力限制于必须要有脚本来描述对问题的回答。但脚本不存在时或者尚未准备好时,系统将无法工作。
20世纪90年代,问答系统的研究和开发热点转向基于大规模文档集的问答(TREC于1999年开始了QA技术的评测;2000年10月,ACL以“开放域问答系统”为专题)。研究领域也从初期的限定领域拓展到开放领域,研究对象从当初的固定语料库拓展到互联网,真正的面向Web开放域的QA系统的正确率和精确性都不高,还不能提供良好的商业服务。
Start是世界上第一个基于Web的QA系统,自从1993年12月开始,它持续在线运行至今。现在Start能够回答数百万的多类英语问题,包括“place”类(城市,国家,湖泊,天气,地图,人口统计学,政治和经济等),电影类(片名,演员和导演等),人物类(出生日期,传记等),词典定义类等。
国外目前比较成功的QA系统有 START、Watson (IBM)、Siri (iPhone) 、Microsoft Cortana …
国内的众多企业和研究团体也推出了很多QA系统,例如 微软小冰 、小度机器人(百度) 、知乎(社区问答平台) ……由于中文的特殊性,比如说没有英文天然的分词等,研究起来困难也比较多;相比TREC评测,缺乏一个相对成熟的汉语QA系统评测平台。
QA系统分类
限定域问答系统是指系统所能处理的问题只限定于某个领域或者某个内容范围,比如只限定于医学、化学或者某企业的业务领域等。开放域问答系统不同于限定域问答系统,这类系统可回答的问题不限定于某个特定领域。在回答开放领域的问题时,需要一定的常识知识或者世界知识并具有语义词典,如英文的WordNet在许多英文开放域问答系统中都会使用。FAQ基于常见问题集的问答系统。FAQ自动问答系统把用户常问的问题和相关答案保存 起来,使得用户使用系统更加便捷。当用户输入问题时,如 果在已有的“问题—答案”对集合中能找到与之相匹配的问句,系统就直接把相应的答案输出给用户,而不需要经过问 题理解、信息检索、答案抽取等复杂的处理过程。
结构化文本:按照一定格式严格生成(数据库、票据);自由文本:无格式,文字合乎自然语法规则(新闻报道、科技文献);半结构化文本:介于前两者之间,这类文本有一定格式约束、不完全符合自然语言法则,但又按自然语法组织语言(电报、公告)。
在检索模型中,系统会根据所给的问题从Question-Answer数据库中找 寻与该问题语义最相近的问句,然后返回该问句对应的答案,该方法的主要 问题有两个:第一个是数据库中Question-Answer对数量有限,有可能检索 不到用户提出的问题的答案。第二个问题是Question-Answer对是固定的, 可能无法根据用户提出的问题得到完全对应的答案。在生成模型中,对话系统会首先理解用户提出的问题,然后逐字的生成对应于该问题的答案。目前主流的方法是深度学习中Seq2Seq模型,该模型 先用encoder端将问句编码为一个向量表示,再由decoder端将该向量表示解码为一个回复,该模型的主要问题是有可能生成的答案很容易是通用的、 单调的回复(例如:“我不知道”、“好的”等),这样的回复包含的信息较少, 没有实质性的意义。
QA系统的处理框架
不同类型的问答系统对于数据处理的方法存在不同。例如,相对于面向FAQ的问答系统的问句检索直接得到候选答案,面向开放领域的问答系统首先需要根据问题分析的结果进行相关文档、文本片段信息的检索,然后进行候选答案的抽取。虽然不同类型的问答系统对于系统模块的功能分工和具体实现存在差异,但依据数据流在问答系统中的处理流程,一般问答系统的处理框架中都包括问句理解、信息检索、答案生成三个功能组成部分。
对应问答系统的处理流程,问答系统研究包含三个基本问题:如何去分析问题;如何根据问题的分析结果去缩小答案可能存在的范围;如何从可能存在答案的信息块中抽取答案。
提问处理模块:负责对用户的提问进行处理;生成查询关键词(提问关键词,扩展关键词,...);确定提问答案类型(PER, LOC, ORG, TIM, NUM, ...)以及提问的句法、语义表示等等。
检索模块:根据提问处理模块生成的查询关键词,使用传统检索方式,检索出和提问相关的信息;返回的信息可以是段落、也可以是句群或者句子。
答案抽取模块:从检索模块检索出的相关段落、或句群、或句子中抽取出和提问答案类型一致的实体,根据某种原则对候选答案进行打分,把概率最大的候选答案返回给用户。
基于FAQ的问答系统
首先,问答系统首先接收用户提出的问题(即用户输入的问句)。然后,根据用户输入的问句,从常用问题库(即FAQ库)中查找并建立与用户问题比较相似的候选问题集。接着,对候选问题集中的句子与用户输入的问句进行相似度计算,从候选问题集中寻找与用户输入的问句最相似的问句。如果在候选问题集中找到了与用户输入的问句相似的问句(即该问句和用户输入的问句的相似度大于某个阈值),就直接把和该问句对应的答案返还给用户;如果没有找到与用户输入的问句相似的问句(即候选问题集中所有问句和用户输入的问句的相似度都小于某个阀值),那么就利用其他的方法,比如答案抽取、信息检索等,来寻找答案,并且将这个新的问题和其对应的答案加入FAQ库,对FAQ库进行更新。
FAQ自动问答系统中需要处理的主要问题是候选问题集的建立、句子相似度计算、FAQ库的更新。

1、候选问题集的建立

候选问题答案集合建立是为了缩小答案的范围。该步骤会选取出可能包含答案的候选问题答案集合。这么做的目的使后续的问句相似性计算等步骤能够缩小范围,以较高的效率进行。在该步骤中,通常会使用信息检索技术。
用户输入的目标问句(W1,W2,…,Wn)
FAQ库中共有m个问句,第i(1 ≤i≤m)个问句含有ni个词(Q1,Q2,…,Qni)
第i个问句和目标问句之间重叠的词个数记为Numi,即Numi=|{W1,W2,…,Wn}∩{Q1,Q2,…,Qni}|
选择Numi值最大的若干问句,组成候选问题集

2、问句匹配度相似度计算

这一步是将候选集合中的每一个问句分别与用户输入的问句进行匹配并计算相似度得分。得分最高的问句所对应的答案就是最终答案。这一步骤比较关键,它关乎到答案的质量。
两类:
1、不考虑两个句子的语义信息:模式匹配、关键字匹配技术、基于向量空间的TF/IDF方法等计算两个句子的相似度;
2、考虑两个句子的语义信息:利用WordNet、HowNet、同义词词林等语义知识资源计算两个句子的语义相似度。一般的方法的是结合多种特征来计算句子之间的相似性。

3、问题答案集合更新

计算出用户所输入的目标问句和候选问题集中每个问句的相似度
如果相似度的最大值大于一定的阈值,直接将这个问句对应的答案输出给用户
如果最大相似度的值小于阈值,将用户所问的这个问题和对应的答案加入FAQ库,对其进行自动的更新
基于大规模文档集的问答系统
基于大规模文档集的问答系统:信息检索技术和信息抽取技术的结合。
命名实体识别(NamedEntitiesRecognition, NER)是自然语言处理(NaturalLanguageProcessing, NLP)的一个基础任务。其目的是识别语料中人名、地名、组织机构名等命名实体。由于这些命名实体数量不断增加,通常不可能在词典中穷尽列出,且其构成方法具有各自的一些规律性,因而,通常把对这些词的识别从词汇形态处理(如汉语切分)任务中独立处理,称为命名实体识别。命名实体识别技术是信息抽取、信息检索、机器翻译、问答系统等多种自然语言处理技术必不可少的组成部分。
命名实体是命名实体识别的研究主体,一般包括3大类(实体类、时间类和数字类)和7小类(人名、地名、机构名、时间、日期、货币和百分比)命名实体。评判一个命名实体是否被正确识别包括两个方面:实体的边界是否正确;实体的类型是否标注正确。主要错误类型包括文本正确,类型可能错误;反之,文本边界错误,而其包含的主要实体词和词类标记可能正确。
命名实体识别的主要技术方法分为:基于规则和词典的方法、基于统计的方法、二者混合的方法等。