文主要参考2019年3月出版的《自然语言处理实践-聊天机器人技术原理与应用》一书,结合个人理解对原理进行阐述,若有不当之处,请联系本文作者。另在此感谢此书作者王昊奋、邵浩、李方圆、张凯、宋亚楠(排名不分先后)。
目录
一、聊天机器人分类
1.1基于应用场景分类
1.2基于实现方式分类
1.3基于功能分类
二、对话机器人技术原理
2.1 AI对话机器人实现流程
2.2 语音识别&语音合成
2.3 自然语言理解(NLP)
2.4 自然语言生成
2.5 对话管理
以下这段描述出自CSDN人工智能专栏:
对话系统(对话机器人)本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工智能领域的一个技术集中演练营。
在这段话中,以最简要的词语总结了市面上大部分AI聊天机器人的主要功能,那就是“让机器理解人的语言”,此后机器人会根据自身功能定位,以不同的行为模式对人类做出回复,例如生活中常见的个人助理型对话机器人(如:siri,小度等),就能够在任何语境下对用户的提问做出相对合理的反应,而一些任务问答型的对话机器人则只能对固定的提问模式和领域中解答用户提问(如:淘宝客服机器人等),根据机器人服务场景以及实现技术的不同,我们首先对此类AI对话机器人进行大致的分类。
类别 | 主要功能 | 常见产品 |
在线客服聊天机器人系统 | 自动回复产品、服务的相关问题,降低企业客服运营成本,缩短用户等待时间,提升用户体验 | 京东JIMI, 阿里小米 |
基于娱乐的聊天机器人系统 | 不限主题的闲聊、用于陪伴与慰藉,对机器人行为模式有极高要求;也提供特定主体服务,如查天气等 | 微软小冰、微信“小微”、北京龙泉寺“贤二机器僧” |
教育场景下的聊天机器人系统 | 帮助用户学习某种操作;指导用户深入熟悉某项技能;帮助辅助学习 | UC、儿童教育机器人 |
个人助理聊天机器人系统 | 实现用户个人事务的查询代办 | siri、小米音箱、echo |
智能问答聊天机器人系统 | 回答用户以自然语言形式提出的事实型及复杂推理的问题,帮助用户获得信息于辅助决策 | IBM watson |
实现方式 | 具体详解 |
检索式 | 此类机器人多是为解决某类特定问题而被提出,所有回答是提前设定好的,通过规则引擎、知识图谱、模式匹配、机器学习模型等数据媒介,在知识库中挑选一个最佳的回复给用户,优点是回答自然,缺点是回答问题的范围领域是封闭的,性能的优秀与否在很大程度上取决于知识库的数据储备 |
生成式 | 不依赖于提前定义的回答,利用大量的语料训练监督模型,使得该模型能输入用户问题,自动生成一个回复,优点是能覆盖任意领域,缺点是生成式的效果容易存在问题,比如句法错误,语句不通顺等 |
功能分类 | 具体功能 | 使用场景 | 当前产品 |
问答系统 | 对用户某个封闭领域内的问题做出解答 | 操作助手,客服答疑,知识检索 | 教育机器人,淘宝客服 |
对话系统(任务型) | 完成用户给出的某个具体任务操作 | 设置闹钟,购买指定物品,编辑提醒事项等 | 大多手机或电脑系统内置对话机器人具备此功能 |
闲聊系统 | 模仿人类交谈模式与用户进行日常对话 | 闲聊,增加用户使用乐趣 | Siri,Windows小娜,微软小冰等 |
推荐系统(主动型) | 根据用户特点向用户进行某一类消息的推送 | 增加用户浏览量 | 今日头条等 |
前三者为当下聊天机器人的主要的3个方向,问答系统主要应用的是语言理解、匹配与检索技术;任务型对话系统主要技术是意图识别、对话管理;闲聊主要是自然语言检索与生成,最后一种在这里不做论述。
语音识别:语音转换成文本
自然语言理解:将自然语言转换成计算机能理解的表征
对话管理:根据当前对话管理状态判断系统应采取的策略
自然语言生成:将系统策略转换为自然语言回复给用户
语音合成:将文本转换为语音
在以对话而非文本作为交流方式的对话机器人中,需要使用的语音技术主要分两块:一块是语音转文字,即语音识别;另一块是文字转语音,即语音合成。
语音识别技术(ASR):将人说话的语音信号转换为可被计算机识别的文字信息,从而识别说话人的语音指令以及文字内容的技术。
其大致过程由上图所示,在用户通过语音激活(按键确认后发声)/语音唤醒(特定声波捕获)向搭载了对话机器人的设备进行语音输入后,由系统对声音波段进行处理以提取语音特征,之后由训练完成的一套体系(譬如一个训练完成的神经网络)判断不同特征最有可能对应哪一个字的发音,将得到的单字进行排列后,输出一句完整的文本作为对话机器人之后阶段的输入。
当然在这个过程中可能还包括将词组或常见短句作为依据对文本进行修正的情况,在这里不详细描述。
语音合成技术(TTS):将文字信息转变为语音数据,以语音的方式播放出来的技术。
理解为ASR的反向操作就可以。
对话机器人的自然语言理解一般包含以下几个方面:
NPL | 解释 |
实体识别 | 识别文本中出现的专有名词,如国家,地名等 |
意图识别 | 分辨文本中包含的显式意图与隐式意图,如询问外貌评价时渴望得到赞美回应的行为 |
情感识别 | 分辨用户的显式情感与隐式情感,如反话、气话等场合 |
指代消解 | 明确用户使用的代词的指代对象 |
省略恢复 | 恢复被用户省略掉的句子成分 |
回复确认 | 当用户意图模糊时,将由对话机器人主动询问,确认用户意图 |
拒绝判断 | 主动拒绝识别及恢复超出范围的或者设计敏感话题的用户输入,尽可能终止当前话题 |
为了完成上述表格所示的用于自然语言理解种种功能,词法分析、句法分析及语义分析这三种基础的技术常常在NPL过程中被使用。其中语法分析主要用于将汉语分词并进行词性标注;句法分析在此基础上解析短语的结构及深层文法;语义分析则是在获得了这些自然语言的表征后将它转化为机器能够理解的向量表示形式。
2.3.1基于知识图谱的自然语言理解
知识图谱可以被看成是结构化的语义知识库,其中包含实体-关系-实体这样的三元组以及实体-属性这样的对,其目的旨在以符号的形式描述真实世界中存在的各种实体或概念及其互相关系。
构建:
从传统数据库的结构化数据中映射到知识图谱;
从HRML等半结构数据中利用AI与规则抽取模式信息到知识图谱中;
在非结构化的文本与图像中利用文本挖掘技术进行信息抽取,利用图像技术进行图像处理。
融合:
将多个数据源抽取的指数进行融合
价值:
个性化的知识图谱可以支撑对话机器人应对用户的多样化需求,能够将问答、对话、闲聊等多个功能集中在同一个对话机器人身上,使得其应用场景的限制逐渐减少
自然语言生成系统的两大主要架构:
1. 流线型pipline自然语言生成系统
系统由几个不同的模块组成,模块之前相互独立,一般包括文本规划(决定说什么),句子规划(决定怎么说),句子实现(让句子更连贯)
2. 一体型integrated自然语言生成系统
模块之间相互左右,后续模块可以参与前面模块的决策。更符合人脑思维,但实现较为困难。因此较常用的未流线型自然语言生成系统
自然语言生成系统的目前的两大主要技术:检索、生成
2.4.1 检索技术
需前期准备大量的qa对语料库,通过排序与深度匹配技术,在已有语料库中找到适合当前输入的最佳回复。
缺点:
(1)强烈依赖对话库 (2)回复不够灵活 (3)缺乏多样性
优点:
(1)实现相对简单 (2)容易部署
2.4.2 生成技术
基于深度学习,通过编码-解码的过程,逐字或逐词地生成回复。
通过对抗圣城网络GAN生成自然语言。
缺点:
(1)实现困难 (2)训练数据难以整理
优点:
(1)回复灵活 (2)答案具有多样性
对话管理的主要任务:维护更新对话状态,动作选择。
对话状态是指当前用户与机器对话数据的表征;
动作选择是指基于当前的对话状态,选择接下来合适的动作
为了实现对话管理的功能,常用的有四种实现技术:
对话行为识别:相当于是意图识别,封闭式的行为识别是讲用户意图映射到预先设定好的意图类别中,如在任务型对话中有订机票、点外卖、搜美食等。开放式行为识别是没有预先设定的行为类别的,一般用于闲聊系统。
对话状态识别:对法状态识别需要考虑进对话的上下文与对话行为的相关信息,在某时刻的对话行为序列即为某时刻的对话状态。
对话策略学习:通过离线的方式,预先让机器进行对话策略学习,从人-人的真实对话中学习对话行为、状态等,然后再人-机对话过程中进行策略选择。
对话奖励:评价对话系统的评价机制,比如槽位填充效率、回复的流行度,以及日渐火爆的强化学习中的长期奖励机制。
2.5 1 对话管理的4种方法
1.基于有限状态自动机 finit state machine, FSM
人工显式地定义出对话系统可能出现的所有状态,对话状态会根据当前输入在预定的状态间进行跳转,从而根据新的状态去选择合适的动作。
优点:简单易用。
缺点:人工设计状态,与状态对应的动作,难以应用于复杂场景。
2.基于统计的对话管理
将对话过程表示成一个部分可见的马尔科夫决策过程。设定系统在每个特定的状态下执行某一特定动作都会获得对应的回报,因此选择动作时会选择期望回报最大的那个动作。
优点:(1)只需定义马尔科夫决策过程中的状态与动作,机器可以通过学习得到不同状态下的转移冠关系;(2)可以使用强化学习的方法学习出最有的动作选择策略
缺点:仍然需要人工定义对话系统的状态,在不同的领域中通用性不强。
3.基于神经网络对话管理方法
将自然语言理解的输出以及其他各类特征作为神经网络的输入,将选择的动作作为神经网络的输出。对话状态由神经网络的隐状态表示。
优点:不需要人工定义对话状态
缺点:需要大量的训练数据
4.基于框架的对话管理
框架即槽值对,明确规定特征槽状态下的用户动作对应的系统动作。
优点:用于特定领域的对话系统
缺点:难以衍生到其他领域
由上述介绍我们最终可以认为一个基础的AI对话机器人的实现原理大致为:
通过语音识别技术获取用户输入后,使用自然语言理解技术将得到的输入文本转换为计算机能够理解的向量形式,之后借由一个训练完好的对话管理系统(如一个基于深度学习的神经网络)判断用户意图并根据学习到的人类行为模式做出策略选择,之后通过自然语言生成技术规划出符合人类思维的回答并通过语音合成技术转化为语音播放,从而与用户进行互动。