智能对话技术介绍
前言
对话领域发展已经有半个世纪的历程,在上个世纪60年代有了最早的与人对话程序——伊莉莎(ELIZA),通过规则和脚本库的方法可以像心理咨询师一样和人对话,而后又出现了Alice、Mitsuku等基于更好剧本引擎的对话机器人。
近几年,智能对话问答领域在不断发展,出现了Siri、Watson、Google Assistant、微软小冰、天猫精灵、小度等。
本文将系统地介绍对话系统前沿的技术。
对话系统分类
任务对话系统(Task - Oriented)
- 业务办理技能(面向动作)
问答系统
- 业务咨询技能(面向需求)
开放域对话系统(Open Domain Dialogue System)
- 闲聊技能(无目的,无领域约束)
技术选型
基于模版:
- 优势:准确率高
- 劣势:泛化能力弱
基于检索:
- 优势:业务适应能力强
- 劣势:准确率低
基于深度学习:
- 优势:准确率高
- 劣势:数据要求高
基于模版
基于检索
语料生产
- 社区抓取:豆瓣、微博、贴吧等各类公开社区对话语料
- 语料挖掘:相关性、可用性、封禁、人设
- 语料运营:生产人设、同语义对话对、剧本等
语料召回
- 索引:倒排索引、向量索引
- 范式和模版:基于句法范式、常用话术、关键词、模版等
排序
- 相关性:相关性特征、低耗时
- LTR排序:基于词、句法、语义、topic、相似度等特征,GBDT模型融合
- 触发排序:基于索引、特征组合、实体以及特殊字符匹配等策略、保证触发准确性
- 标准问题匹配当前使用的主要模型是 Bi-LSTM-DSSM
劣势
- 在目前的端到端对话模型中,经常出现很多 badcase
- 包括出现上下文逻辑冲突
- 背景有关的一些信息,比如年龄其实不可控
- 安全回复居多,对话过程显得很无聊
对话系统架构
第一种是TaskBot: 完成的是任务型对话,如询问天气、订票服务,某些客服也可以看成是一种任务型对话;
第二种是QABot: 问答是人们见的最多的,主要是一问一答;
第三种是ChatBot: 闲聊范围广,常见的例子就是微软小冰,聊天是平常最多的信息交互,也是技术上难度最高的。
对话系统架构细分
常见的对话系统除了语音的ASR和TTS以外,就是一个NLU和NLG,中间一个DM,但是这里多出来一些东西。
从一个系统的角度或者更加拟人的角度来说明,对一个对话来说理解并不是内容的理解,还需要根据对话的人的对象的理解以及基于我们的记忆和知识去理解。
任务对话系统主要模块
任务对话系统主要场景
- 整合资源,提供丰富的信息服务
- 一站式的智能服务场景
- 天气询问
- 知识小卡片
- 国学/诗词/百科/谚语/俚语
- 新闻
- 股票/汇率查询
TaskBot基于任务型的对话系统是一个小的通用对话系统,需要针对不同领域做一些优化,类似地,在DM和NLG中也需要补充相应的policy和表达式。
槽位提取
提取对话文本中的词槽,当前主要使用的是 IDCNN+CRF 的方式进行。
问答系统主要模块
-
问答机器人有很多种,最简单的是基于配规则的卡片式问答。
-
这里主要讲两种问答
- 基于知识图谱的knowledge based question answering(KBQA)
- 基于非结构化的网页知识来抽取答案的问答机器人称为DeepQA
-
推荐一个在非结构化挖掘做的比较好的:https://magi.com/
主要流程
对话闲聊的解决方案
- 一类是检索式
- 一类是基于深度学习的生成式 seq2seq+Attention
传统的对话解决思路和问答是类似的,因此数据变得很重要。
生成式对话系统通过深度学习直接生成最后的回复,目前应用还不是很成熟,其准确率很难达到90%。
生成式方法容易生成单调乏味的短回复,或者一些不通顺的长回复,相关性上也常会出现一些过于通用泛化的弱相关性结果。