从智能对话系统导论,到如何设计第一个对话机器人
- 一、智能对话系统导论
- 1、生活中的 Conversational AI
- 2、一种新的人机交互方式
- 3、一些关于 Conversational AI 的数据
- 4、对话机器人行业产业链及产业图谱
- 5、课程主要部分
- 二、Conversational AI 概览
- 1、什么是Conversational AI?
- 2、对话机器人行业相关领域发展历程示意图
- 3、对话机器人的优势
- 4、对话机器人在学术界的种类
- 5、对话机器人在工业界的种类
- 三、Chatbot(Chichat)
- 1、什么是Chatbot - 闲聊型机器人
- 2、一般方法
- 四、QABot
- 1、什么是Question-Answering(QA) Bot
- 2、QABot 的实现方法
- 2.1、阅读理解 - MRC
- 2.2、语义匹配
- 2.3、文本搜索
- 2.4、知识图谱
- 2.5、单轮与多轮
- 2.6、其他形式
- 3、数据集
- 3.1、Dataset on KB-QA
- 3.2、Dataset on Machine Reading Comprehension (MRC)
- 五、Task-oriented Bot
- 1、什么是Task-oriented Bot
- 2、如何产生/构建intent
- 2.1、Modular/Pipeline Approach Architecture
- 2.1、NLU
- 2.2、DST
- 2.3、AG/DP
- 2.4、NLG
- 2.2、End-to-end
- 五、回顾与延展
- 1、back to QABot
- 2、back to Chichat
- 六、如何设计一个Chatbot?
- 1、制定目标
- 1.1、痛点是什么?
- 1.2、如何解决痛点?
- 1.3、是否能够回答这些问题?
- 2、定义使用场景
- 3、创建虚拟人物性格
- 4、从简单口语对话开始
- 5、设置边界
- 6、设计对话路径
- 7、测试及调整
- 8、长尾路径设计
- 9、持续迭代
- 参考
- 更新时间
一、智能对话系统导论
1、生活中的 Conversational AI
- 一些软件APP中,FAQ问答型,例如淘宝客服:
- 与一些硬件结合,语音+对话,如服务型机器人:
- 车载系统,对话机器人:
- 手机助手,以及推销电话,或者客服服务引导对话:
- 游戏npc对话场景中,从固定的对话脚本到鲜活的自由对话:
- 智能音箱,集成了对话机器人,播音乐,操纵智能家居,订机票打车等等一些任务:
2、一种新的人机交互方式
对话机器人,已经不仅仅是进行某种简单的对话,而是像人一样的一种新的人机交互的方式:
3、一些关于 Conversational AI 的数据
来自国外的调查数据:
- 63%的客户考虑使用在线对话机器人去沟通业务或品牌
- 80%的业务场景计划使用对话机器人
- 50%的企业会在聊天机器人的创新上花费比传统手机app开发更多精力
- 对话机器人每年会为商业成本节省80亿美元
4、对话机器人行业产业链及产业图谱
5、课程主要部分
主要分为三大部分:
- 文本摘要
- 对话理解
- 对话机器人
1和2比较单一,解决方案的实现在学业界都大同小异。
而3是一个比较综合性的项目,可以结合包括1和2的任何NLP技术。
二、Conversational AI 概览
1、什么是Conversational AI?
AI的思想最初来源于图灵,他尝试使用各种技术如声音、文本、姿势和接触等方法让与人类与计算机程序进行交互。
而图灵测试则是指,将机器与人混在一起进行交互,观察人类是否能发现交流者中存在机器,若人类不能发现,说明机器的交流与人类非常近似,则通过了图灵测试。
2、对话机器人行业相关领域发展历程示意图
3、对话机器人的优势
及时回复、带来更多收益、减少成本、最大化职员技能、更好的理解顾客、开辟新渠道、增加忠诚度、7*24h在线、建立差异化
4、对话机器人在学术界的种类
- Task-oriented: 任务动作过程型导向机器人,帮忙打个电话
- Chitchat:无目的型,闲聊
- QA:问与答,结果为导向
一些专有名词,便于看paper:
Conversational AI 包含所有明指或暗指的对话交流
Dialogue system 专门指对话
Bot = Agent = 做的机器人
Task-oriented/Task-completed Bot
QA(Question Answering) bot
Chitchat/Social Chat/Chatbot
Open-domain chatbot - 开放领域机器人,什么都做,不区分领域
Domain chatbot - 特定领域场景下的机器人
5、对话机器人在工业界的种类
在学术界,三种机器人类型分得很清晰;而在工业界,则没有分得这么开,基本是混合型多功能的。
三、Chatbot(Chichat)
1、什么是Chatbot - 闲聊型机器人
2、一般方法
Sequence-to-Sequence
用户的对话
输入模型进行编码
针对该话生成结果
输出模型并且解码
四、QABot
1、什么是Question-Answering(QA) Bot
2、QABot 的实现方法
2.1、阅读理解 - MRC
本质上是一个MRC,一个阅读理解方面的对话机器人。
将用户说的话从产品文档里面扫描一遍,发现有一段话是来描述该问题的,然后截取出来,给用户一个反馈。
结合MRC做一个QA的任务。
相关paper (colab)
2.2、语义匹配
语言表达方式的多样性,但含义的确定性,将相似问题全部都转化为标准问题。
2.3、文本搜索
Text-QA: Text Retrieval
类似于搜索引擎,用户输入一段话,然后网站返回一堆文章。
这里是用户输入一个问题,然后去文档库里寻找与用户问题最相关的文档,返回给用户,如果回答太长,则可以进行文本摘要,将文章中最核心的部分抽取出来。
AnyQ (github)
2.4、知识图谱
不同于前面的几种类型的QA,该类型可以进行问题的进一步推理。
- KB-QA
• KB(Knowledge Base)
• KG(Knowledge Graph)
2.5、单轮与多轮
Single-turn and Multi-turn KB-QA
Single-turn: 一问一答
Multi-turn: 对多个问题和描述进行回答
2.6、其他形式
将自然语言转换成SQL
3、数据集
3.1、Dataset on KB-QA
paper里比较常见的英文数据集:
SQA (msropendata)
CSQA (github)
3.2、Dataset on Machine Reading Comprehension (MRC)
SQuAD (github)
MS MARCO (github)
The automated QA track
The LiveQA track (trec)
然而,对于我们来说一般会使用其他的中文数据集。
五、Task-oriented Bot
1、什么是Task-oriented Bot
在回答用户问题时,先弄清楚问题背后的intent (意图)
2、如何产生/构建intent
- Modular. 分模块,很多个模块一同运作去构建成一个对话机器人
- End-to-end. 一个模型就把所有对话问题都解决了。
2.1、Modular/Pipeline Approach Architecture
当今比较流行的
- 用户的对话
- 自然语言理解 - NLU
- 对话状态跟踪 - DST
- 动作生成 - AG/DP
- 自然语言生成 - NLG
2.1、NLU
Modular Approach: Natural Language Understanding
输入用户问题,进入模块寻找intent。
Terminology in Task-oriented Bot:
- Intent
- Slot/Entity 词槽,为了完成intent,需要的条件是什么,例如:Type, Area
- informable
- requestable
- State
- Action
在做产品之前,需要对于某个问题进行预测,用户可能具有哪些意图,做好意图的分类,可能有成千上万个。
一个多轮对话的例子:
在收集到重要信息之前,不断地对GET-TICKET进行其他信息的补充
2.2、DST
Modular Approach: Dialogue State Tracking
在拿到intent和slot后,因为每一个对话都会有意图和词槽,所以过去的信息都存储在Past State里,但是只会筛选出跟当前对话相关的slot,相当于整个对话系统的大脑。
2.3、AG/DP
Modular Approach: Action Generation (Dialogue Policy)
将存储的State拿出来,寻找机器人可以做的事情Action,选出跟该状态最相关的动作,然后调用搜索引擎或者数据库,去寻找这样的结果。下面例子找到了Type和Name,然而这个结果不能直接返回给用户,会造成体验不佳,后续继续处理。
2.4、NLG
Modular Approach: Natural Language Generation
将AG的结果送入到NLG,组装成自然语言
完整流程的例子:
2.2、End-to-end
五、回顾与延展
我们可以发现,Task-oriented Bot的架构同样可以用于 QABot 和 Chichat
后期会用这四个模块去解决这三类对话机器人问题,工业界里大部分也选用的这种架构,非常灵活,并且可以满足不同场景的需要
1、back to QABot
2、back to Chichat
六、如何设计一个Chatbot?
1、制定目标
1.1、痛点是什么?
1.2、如何解决痛点?
1.3、是否能够回答这些问题?
2、定义使用场景
3、创建虚拟人物性格
和对应的用户产生共通感,提高使用体验。
4、从简单口语对话开始
将人类活动的某场景的对话记录下来,当成最原始的数据,放在对话机器人中进行测试。
5、设置边界
防止对话的话题跑偏,紧抓主题进行对话。
6、设计对话路径
对话流程图:
7、测试及调整
8、长尾路径设计
把最重要的头部实现了,然后尾部慢慢实现。
9、持续迭代
发现问题,不断改进和优化。
参考
张春阳老师 - 开课吧 - 自然语言处理与文本检索
更新时间
2022/01/21