智能问答与对话系统

摘要:
从目录问答到对话对话系统的基本过程文本对话系统常见场景问答系统文本问答系统的主要组件问题理解问题理解内容问题理解方法扩展知识检索非结构化信息检索结构化知识检索本体和推理答案生成端到端阅读理解问答技术什么是阅读理解任务阅读理解任务模型阅读理解任务其他项目阅读理解任务技能、前景和挑战本文指的是大数据智能,这只是从科普问答到人机交互的一种趋势,从命令行到图形再到对话。日常聊天侧重于沟通和回应,不一定是个问题。

目录

本文参考自《大数据智能》,仅作科普

问答到对话
  • 人机交互的趋势

    (mathrm{CLI} o mathrm{GUI} o mathrm{CUI})

    命令行到图形到对话

  • 日常聊天侧重于交流和应答,不一定是问题。

    可利用检索模型、机器翻译模型、深度学习模型及情感模型。

对话系统的基本过程

  • 语音识别(Automated Speech Recognition)
  • 语音合成(Speech Synthesis) = 文本-语音转换(Text-To-Speech, TTS)
  • 语音信号中还可以提取语气、语速、情绪等信息

复杂场景还可以结合其他的输入(如动作)

文本对话系统的常见场景

  • 首先说话有”情商“高低,现有技术主要解决”智商“部分,机器想学好如何”说话“任重而道远。

  • 应用场景:

    • 寻求确切的答案和知识:例如搜索相关信息“附近有什么餐馆”
    • 为达成一个目标而指示机器完成一项功能:对Siri说“提醒我明早9点开会”
    • 无特定目的的聊天、寒暄等:“微软小冰”调侃打趣之类的

    可能上述几种互相穿插

问答系统的主要组成

  • 问题理解:理解问题是什么(例如区分“北京温度是多少”和“太阳天气是多少”)
  • 知识检索:将问题组织成一个计算机可理解的检索式,其格式由知识库的结构决定(“北京面积有多大”,如果用百科全书搜索就是在“北京市”这个词条内检索“面积”这一属性信息)
  • 答案生成:用搜索引擎获得的若干相关文档,然后从这些文档的大量内容中提取到核心的段落、句子或者词语
文本问答系统

知识组织形式不同,问答系统有很多种,文本问答系统是最基本的一类,也是各类问答的基础

问题理解

问题理解的内容

可以把问答系统的目标定义为解答这样一个问题:

谁(Who)对谁(Whom)在何时(When)何地(Where)做了什么(What)是怎么做的(How),为什么这样做(Why)?

中英文基本要素的提问形式是相近的。研究人员整理出若干种分类体系(taxonomy),既有平面分类(flat),又有层次分类(hierarchical),便于对答案进行筛选。

  • UIUC分类体系:双层的层次结构体系,主要针对事实类问题,设计了6个大类和50个小类。大类包括缩写、实体(某种事物)、描述(询问定义、原因等)、人物、地点和数值
  • Moldovan等人的分类体系:也是双层的层次结构体系,第一层主要针对问句的形式(疑问词),第二层针对答案的类别。
  • Radev等人的单层平面分类设计了17个类别,包括人物、数字、描述、原因、地点、定义、缩写、长度、日期等
  • 可以根据问题所属的垂直领域(主题)进行分类,如天气类、导航类、参观类等,然后交给特定的端口处理。

问题理解的方法

问题中提取关键成分过程主要涉及NLP中的语义分析技术。

  • 直观的做法:字符串模板匹配。

    例如查询关键词“XXX是什么”,那么“XXX”就是关键词。

    优势在于清晰直观,易于理解和编写;缺点在于无法适应千变万化的语言表达形式。

  • 灵活的技术:从词法、句法入手。将问句进行词性标注,做句法分析。

    例如可以用一个 (lambda - mathrm{DCS}) 表达式,便于知识库进行运算:

    微信图片_20210510111916

    其构建过程由如下几种操作完成:

    • 一元实体(Unary):实体词,例如“西雅图”
    • 二元卷席(Binary):属性词,例如“出生地点”

    完整知识可以以三元组给出,例如(比尔·盖茨,出生地点,西雅图)。

    • 连接(Join):将一元实体与二元关系连接,得到关系另一侧所有可能的实体,用点(“.”)表示(例子可以见图)
    • 交集(Intersection):两个一元实体集合的相交部分,用 (prod) 表示。例如“职业.科学家 (prod) 出生地点.西雅图”代表所有出生在西雅图的科学家
    • 计数(Aggregate):一元实体集合的元素数量,记作 (mathrm{count(cdot)})

    如问:汤姆·克鲁斯出演过多少部电视剧?其 (lambda - mathrm{DCS}) 表达式为 (mathrm{count(类型.电视剧prod 演员.汤姆·克鲁斯)})

虽然其更加灵活,但是计数储备较多、门槛高,未必适合于小规模系统的快速开发和部署。

问题扩展

  • 同义词词语的多样性:“贝克汉姆”和“小贝”。可能可以借助《同义词词林》。
  • 大数据中的知识也需要进行句法分析,答案可以作为标注用于指导有监督的学习过程

知识检索

大数据时代,结构化数据少而精,非结构化数据多而全。可以利用这两方面优势,来满足用户需要。

非结构化信息检索

  • 直观的理解:搜索引擎,从问题中提取关键词,便可以查询索引,得到与这些关键词最相关的文档。再通过后续的筛选和提取步骤,生成最终答案。
  • 主要障碍:商业授权许可和网络延迟。我们可以自建索引,搭建自己的搜索引擎。如Lucene等开源搜索引擎框架给开发者提供极大便利。

传统信息检索任务的相关性计算方法不一定适用于问答任务,问答任务的检索式已经经过筛选了。检索出的文档应当尽量满足所有查询词的查询条件,要尽量全。

  • 常用的策略:以段落为单位,计算连续少量段落是否出现了所有关键词,可以去除一些相关性不高的文档。取一个尽量短的窗口,包含尽量多的问题关键词。

    经典做法:标准基数排序(Standard Radix Sort) 以如下三个因素排序:

    • 相同顺序的关键词数目
    • 最远关键词间距
    • 未命中关键词数

结构化知识检索

  • 百科类知识:识别主条目的时候易于定位答案。

  • 关系类知识:两个事物 (E_1, E_2) 和他们的关系 (R) 表示成一个三元组 ((E_1, R, E_2)) 例如 ((北京,面积,16801平方公里)) 。DBpedia和YAGO是从维基百科中取出组织关系结构的数据库。

    可以从百科类知识和非结构化知识中抽取构建出关系类知识,并且可以根据需求针对特定垂直领域手机数据,自行组织成结构化知识。(例如“某某相机多少钱?”)

本体与推理

蜜蜂有几条腿?( o) 蜜蜂是一种昆虫 ( o) 昆虫有六条腿 ( o) 蜜蜂有六条腿

人工智能的一大重要分支——专家系统,依赖于精确组织的知识结构。整理好知识领域,可以搭建这样的技术框架。

人工整理知识库(基于专家系统方式)的问答技术已经逐渐退出了历史舞台。现在利用互联网语料自动挖掘实体关系、知识图谱的思路为其注入了新鲜血液。

基于深度神经网络模型,让机器自动学习知识并完成推理,也是有前景的研究方向。FaceBook有个数据集bAbI可用于文本理解和推理。 端到端的神经网络模型,可以充分发挥其“记忆”功能,将事实隐式地存储在向量、权重中,从而完成推理。

答案生成

问题的关键词和答案的词语之间存在某种联系,因此可以考察问题和候选答案的相似度,此外也可能存在句式之间的关联。

如“北京的面积是多少?”可以把“多少”替换成答案。

端到端的阅读理解问答技术
  • 端到端:在原始输入到最终输出间减少人的干预,只考模型自己学习。

避免了传统机器学习方法设计特征的环节,而让模型隐式地学习特征,通常比专家设计的还要好。

模型的一些“记忆”机制可以记住长距离的上下文信息,自动将多句话的重要知识存储在数字模型中,不需要人工设计知识结构和记忆逻辑,只需要足够的训练数据。

什么是阅读理解任务

即阅读一段文章,回答有关文章的若干问题,以理解文中事实为主。

有一个基于维基百科的阅读理解任务数据集SQuAD,有多个团队的数学模型超过了人类的平均得分(如BERT,CMU的QANet,百度,猿辅导等)。

在这些任务中,知识库以非结构化的篇章形式出现,阅读理解时需要包含一些简单的推理过程。

阅读理解任务的模型

前面提及的参赛队伍的模型有一些共性:

2ebdb429293fcd4d147c5db4df43bc3

  • 输入和编码:先做词(字符)嵌入/人工提取一些特征(如词性、命名实体),作为向量。然后把问题和段落各两三个向量拼接在一起,输入到BiRNN、BiLSTM或其他序列模型进行处理,从而分别形成问题和段落的编码表示。

  • 问题-段落的融合:最简单的办法是把问题向量和段落向量相乘,矩阵元素表示相关程度;也可以采用attention机制,那么此时可以得到二者的关联。

    还有一些加强的方式,例如反复自乘、重复几遍上述运算,重复计算段落与段落之间的关联。

  • 确定答案:要求找到答案的具体位置,通常使用指针网络(Pointer Network),把问题与前面注意力层的段落表示相结合,即可计算出答案在段落内的概率分布,最大值就是起始位置。然后问题与起始位置相作用,即可得到答案的结束位置。(或者利用语言学特征进行重排,找到最佳答案)

阅读理解任务的其余工程技巧

  • 集成学习:前几名的队伍都是用集成学习,多个弱分类器的集成效果反而可能强过一个强分类器,单一模型得到的训练结果并非每次相同;集成模型可以达到好的综合效果。
  • 瓶颈及其突破:深度神经网络的一大瓶颈是训练数据的数量,比赛提供的数据量有限。谷歌大脑团队的模型是较快的CNN,因此设计了方法增加训练数据量。例如将英文翻译成法文得到 (k) 种版本(有一定的语言上的差异),然后将法文翻译回英文( (k) 种),那么累计有 (k^2) 种,极大增加了训练语料数量。
前景与挑战

问答系统在大数据的支撑下有了相当大的进展,大数据更多的知识,使得有问必答;另一方面,深度学习模型提高了问答系统的准确性。

可预见的未来,问答系统的基本技术将广泛应用于各个领域,使机器逐渐从“用知识”变为“学知识”。

中文领域的问答技术发展迅速,例如《一站到底》的汪仔,将语音识别、图像处理、语义理解多种技术融合。


问答系统设计的技术较多,既包括语义分析、信息检索,又涉及知识的挖掘与管理。需要我们对我们每个环节一丝不苟,在方方面面下功夫。

免责声明:文章转载自《智能问答与对话系统》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu中apache2修改默认首页03 Zabbix4.0添加cisco交换机基本监控步骤下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

OpenWrt路由器通过LuCI界面实现Guest SSID功能

此外,OpenWrt路由器上的访客SSID不会受到主SSID的MAC地址过滤功能的影响,这是番茄路由器的优势。...

JQuery 导入导出 Excel

正在做一个小项目,从数据库中查询数据放在HTMLTable中.现在想要从这个table中导出数据来.另外用户需要选择导出的列.使用jQuery的导出插件可以完成这个需求.jQueryPlugintoExportHTMLTables例子:导入插件:[javascript]viewplaincopy˂/scr...

JS获取当前时间

如果有更好的方法,请提出建议。进一步解释如下:varmyDate=newDate();我的日期。getYear();//获取当前年份(2位数)myDate getFullYear();//获取完整的年份(4位数,1970-???=0)||);}//----------------------------------------------//日期格式//格式...

Excel数据透视表、高级筛选

目录:1.数据透视表:数据透视表格式和操作说明:多个表一起创建数据透视表创建组创建计算字段创建计算项值显示方法切片器2。高级过滤:高级过滤和或关系精确过滤和模糊过滤通配符过滤原则查询不重复值(使用高级过滤)高级过滤区分大小写使用高级过滤查找空数据使用高级过滤查询两个表中相同的记录或未使用的记录过滤记录1和数据透视表1.正确的数据透视表格式:① 数据源的第一行...

谷歌浏览器中预览海康大华等监控视频的思路与方法

本人近些年来对海康,大华,宇视等视频厂商做过一些视频对接的开发,但始终存在一个问题,在谷歌浏览器中如何进行视频监控的预览。本文将主要解决在谷歌,火狐等非IE浏览器中预览视频监控问题,给广大开发者提供一个思路方法。现在谷歌浏览器中现已不支持ActiveXObject的创建及调用,这是由于chrome浏览器在45版本后不再提供对npapi插件的支持。这种方式基本...

Docker(一)

Docker的优势:1.更高效的利用系统资源。docker-v:查看Docker版本。dockerhistory:查看镜像内的历史记录。dockerdiff:查看修改的内容。使用Dockerfile定制镜像:1.以之前定制nginx镜像为例,这次我们使用Dockerfile来定制。操作Docker容器:启动容器有两种方式:一种:是基于镜像新建一个容器并启动,...