智能问答与对话系统

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

问答到对话

  • 人机交互的趋势

    \(\mathrm{CLI} \to \mathrm{GUI} \to \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是从维基百科中取出组织关系结构的数据库。

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

本体与推理

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

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

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

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

答案生成

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

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

端到端的阅读理解问答技术

  • 端到端:在原始输入到最终输出间减少人的干预,只考模型自己学习。

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

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

什么是阅读理解任务

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

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

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

阅读理解任务的模型

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

2ebdb429293fcd4d147c5db4df43bc3

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

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

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

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

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

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

前景与挑战

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

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

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


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章