本文转载自:https://blog.csdn.net/ai_1046067944/article/details/86627518

声明:本文是综合网上问答系统介绍,做的总结,如有侵权,请联系处理,谢谢。

一、问答系统架构

   

1.1、问题分析模块

       负责对用户的提问进行处理;生成查询关键词(提问关键词,扩展关键词,...);确定提问答案类型(PER, LOC, ORG, TIM, NUM, ...)以及提问的句法、命名实体、语义表示等等。

1.2、问题回答模块

       依据不同的数据类型,进行不同方式的信息检索:

  • 利用问题处理模块抽取的查询关键词,用信息检索方式,检索出和提问相关的信息(段落、也可以是句群或者句子);
  • 对于某些提问类型(某人的出生日期、原名、别称等),问句和包含答案的句子之间存在一定的答案模式,或者从已有问答对库中进行匹配得出候选答案;
  • 通过对问题进行语义理解和解析,利用知识库进行查询、推理得出答案,回答的答案是知识库中的实体。

1.3、答案抽取模块

        从检索模块检索出的相关段落、或句群、或句子中抽取出和提问答案类型一致的实体,根据某种原则对候选答案进行打分,把概率最大的候选答案返回给用户。

二、问题分析

对不同类型的问题,往往有不同的处理方法,所以一般都有问题分类这个过程。

  • 基于规则

针对于不同类型的问题制定相应的答案抽取规则,以便在答案抽取阶段应用这些规则来抽取问题的答案。比如对于询问地点的问题,我们就可以规定,答案中必须含有位置信息。

  • 基于统计

       人工方式对一批问题的类别进行标注
      设计机器学习算法,已标注的这个集合进行分类模型的自动训练
      训练得到的模型对测试问题进行自动分类

eg: 比如通过统计,“什么颜色”这几个词经常出现在问题中,那我们就可以把“什么颜色”当作一个疑问短语。然后凡是含有“什么颜色”这个短语的问题都当作一类问题。

二、信息检索(数据类型)

2.1、信息抽取

方法描述:从问句中提取关键词语,用信息检索的方法找出包含候选答案的段落或句子,然后基于问答类型用信息抽取的方法在这些段落和句子中找出答案

  • 检索过程:段落或者句子级排序,利用不同类型关键词的加权组合
  • 答案抽取过程:根据问答类型从排序后的段落或句子中抽取答案

2.2、模式匹配

基本思想:对于某些提问类型(某人的出生日期、原名、别称等),问句和包含答案的句子之间存在一定的答案模式,该方法在信息检索的基础上根据这种模式找出答案。因此如何自动获取某些类型提问的尽可能多的答案模式是其中的关键技术

例如,询问“某人生日年月日”类提问的部分答案模式如下:

  • 1.0 <NAME>(<ANSWER> -)
  • 0.85 <NAME> was born on <ANSWER>
  • 0.6 <NAME> was born in <ANSWER>
  • 0.59 <NAME> was born <ANSWER>
  • 0.53 <ANSWER> <NAME> was born
  • 0.50 –<NAME>(<ANSWER>
  • 0.36 <NAME>(<ANSWER> -

2.3、KBQA

揭开知识库问答KB-QA的面纱1·简介篇   https://zhuanlan.zhihu.com/p/25735572

  • KBQA问答流程

 

  •   KBQA解决方案

 

   2.4、综合对比

      

三、答案生成

  • 一般搜索引擎返回的是一堆网页,而问答系统需要返回的是简短的答案。这样,通过信息检索模块搜索出来的相关文档就要提交给答案抽取模块来提炼答案。答案可以是一句话,或者是几句话,也可以是几个词或者短语。对于那些问时间地点的问题,就可以用很短的语句来回答,而对于询问原因、事件的问题就需要较长的语句才能回答。比如对于问题“9.11事件的是怎么回事?”就不可能用一句话就能回答的。所以答案的抽取还需要依据问题的类型。
  • 境通过提供管理后台,让用户建立自己的业务场景,并在场景中建立上下文会话,而会话则由实体、意图和生成模板构成。在新的问题中,如果语法错误,比如缺少实体和目标属性,那么需要根据上下文回溯到之前提到的实体和属性,如果上下文中还是缺少这些内容,则需要用追问的方式让用户补充回答以填充(slot-filling)
  • 最后是用户行为反馈,就是怎么样根据用户的结果去指导我们去做更好对话模型的理解。

四、实战案例

4.1、基于模板问答

问题类型 问题模板
电影票房 nm 票房
电影风格 nm 主题 风格
电影角色 nm 角色列表 角色 nnt 简介
电影导演 nm 制作 导演列表

 

          1. 问题分类

         2. 问题查询模板(Neo4j)

            

 

4.2、基于检索问答

      基于问题到问答库中进行ES检索(ES检索的结果是有个评分score,评分越高,越相似)

 

4.3、基于知识图谱问答

   即根据一个问题,抽出一条三元组,生成 Sparql 语句,进而进行知识图谱查询返回答案。

  原创:基于知识图谱的问答系统入门—NLPCC2016KBQA数据集 https://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw==&mid=2247494128&idx=1&sn=3b044a4435e0ed221161e5a434fe9670&chksm=96ea3670a19dbf6654f1964bd225e9d51efbcb733aaa7c13309b17a9f5c548101561a7cc1889&token=609043407&lang=zh_CN#rd

 

4.4、综合问答

  • 小米智能音箱案例

   1. 知识库

   2. 问答对匹配

  • 金融智能问答

    综合了基于模板+信息检索+知识图谱的综合问答系统:夏磊(数库科技)智能问答在金融领域中的实践与应用    https://zhuanlan.zhihu.com/p/25966699

           1. 基于意图的结构化问答系统(个人理解是基于模板)

           

           2. 基于检索的问答系统

            

           3. 基于知识图谱的问答系统

                  

       

参考文献

 夏磊(数库科技)智能问答在金融领域中的实践与应用  https://zhuanlan.zhihu.com/p/25966699

 小米小爱    https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/79933707

 陈松坚(腾讯)智能问答算法原理及实践之路

问答系统学习综述   https://blog.csdn.net/sinat_33231573/article/details/83473741

对话机器人技术简介:问答系统、对话系统与聊天机器人   https://blog.csdn.net/u010159842/article/details/81333828

赵军(中科院) 信息抽取与问答系统