zoukankan      html  css  js  c++  java
  • 智能问答与对话系统

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

    问答到对话

    • 人机交互的趋势

      (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) 种,极大增加了训练语料数量。

    前景与挑战

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

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

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


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

  • 相关阅读:
    Spring整合hibernate4:事务管理
    eclipse添加约束文件
    转]@SuppressWarnings 详解
    spring + springMVC +hibernate 配置2
    spring +spring+ hibernate配置1
    eclipse下 hibernate逆向数据库操作示例!!
    Spring+hibernate 配置实例
    dubbo接口快速测试技巧
    Spring Boot Starter列表
    Spring Boot Starters是什么?
  • 原文地址:https://www.cnblogs.com/zjp-shadow/p/14761906.html
Copyright © 2011-2022 走看看