Chatbot入门系列开启
计划用7篇文章讲解下Chatbot入门需要了解的各种概念和简要的实现方式
· Chatbot入门1 - 聊天机器人简介
之前文章已经发过了,见《AI说 | 你接触的各种机器人,他们是怎么和你聊上天的?》
· Chatbot入门2&3 - 闲聊机器人
本文讲解实现方式,下文讲解应用
·Chatbot入门4&5 - 问答机器人
·Chatbot入门6&7 - 任务型机器人
说实话,写这些东西还蛮花时间的,看的人也不多,但是输出倒逼输入一直以来是我坚信的观点,所以不管有没有人看吧,我都会坚持写下去的:)
欢迎各位捧场~
01
啥是闲聊机器人?
「闲聊」简单讲,就是在开放域的对话中,没有明确意图的聊天,相对随意。
聊天的内容可以是天南地北,各种寒暄,问候,瞎扯,调侃,笑话等等。
就像我们人与人沟通的时候
· 一见面先说吃饭了没有?
· 最近过得怎么样?
· 最近看的什么电影?
这些其实都是闲聊
闲聊在「智能音箱」中体现得更为广泛,日常生活里,我们问小爱同学/天猫精灵/小度等一堆乱七八糟的问题,一般他们都能兜住,就是因为背后有「闲聊机器人」
而「闲聊机器人」中一些取巧的回答,往往能博得满堂彩,让大家觉得AI十分滴智能:P
02
闲聊机器人的对话流程
闲聊机器人本身的抽象流程并不复杂,可以简单概括为4个步骤
1)输入问题
即获取用户的问题,又分为两种场景。
· 文本场景(例如微信文字聊天)
在这种场景下直接将文本的内容作为输入即可
· 语音场景(例如智能音箱)
在这种场景下,问题输入前,需要先将语音转化为文本(通过ASR实现)
2)语义理解
这一步即机器要如何实现理解文本话语的内容,这是整个流程中最具有技术性的一步,我们在 Part3部分讲解下。
3)回答生成
当机器理解了问题之后,要去找寻这个问题对应的答案,这个部分我们在 Part4 部分讲解下
4)输出回答
和输入相同这一步也是需要区分场景
· 文本场景(例如微信文字聊天)
在这种场景下直接将 第3步 的文本回答内容作为输出即可
· 语音场景(例如智能音箱)
在这种场景下,回答输出前,需要先将文本转化为语音播报出来(通过TTS实现)
03
闲聊机器人的语义理解如何实现
1)基于规则 -rule-based模型
这种方式听起来高大上,实际上非常简单,就是通过关键词或者是正则表达式进行匹配。
例如上文中的「喜欢你」的回复
这种方式,你简单理解为 IF-Else 方式实现的没毛病。
之前一张图特别火,说只要三行代码,就能够搞定上亿的人工智能项目,
也可以同样理解为 IF-Else 匹配方式
这几行代码的意思是
· 如果语句出现「?」,就去掉「?」,加上「!」回复
· 如果语句没有出现「?」,会回复相同的内容
这当然是个玩笑:)
但基于规则的方式,目前确实是在广泛的使用中。
· 优点:
因为它和模型相比,他并不需要进行大量的语料训练,当你出现了这个关键词,就给你指定的答案,配置起来效率非常高。
· 缺点:
1. 规则是不存在泛化能力
例如上文的的「喜欢你」和「对你很有好感」,意思可能是相近的。
但关键词是配置的「喜欢你」,当用户说「对你有好感」时,机器人没法回答。
2. 难以调试
当规则的数量大到上千条的时候,调整规则变得异常的困难
因为你新增或修改了某条规则,就可能会影响到其他几条规则的生效
2)基于深度学习 -model-base模型
这种就是真正的用到了NLU(自然语言理解)和深度学习
在通过「深度学习模型」去理解用户的话语后,将其和已有的问题列表进行匹配,找到「语义最相似」的一个问题
· 优点:
1. 较强的泛化能力
例如,有时候在语音的场景下,因为ASR转译出错,出来的语句可能是「我喜欢嗯啊」
这时候规则如果配置的是「喜欢你」,出不来相应的答案,但模型可能还能正确的识别
甚至也能识别「我觉得我喜欢上了小爱同学了」、「喜欢上小爱了怎么办」等多种问法
2. 问题数量庞大的时,也能较好的调试
由于是基于语料进行训练,所以只要问题和问题之间,是有明显清晰的边界,那么即使问题数量庞大,通过添加问题的相似句(即各种各样的问法),也能实现较好的调试。
· 缺点:
1. 训练需要大量的语料
因为是使用深度学习训练模型,必须要有大量的语料
2. 深度学习是「黑盒」,有时候你对他无能为力
因为深度学习本身是一个「黑盒」模型(即你不知道模型内部是如何理解语义的),所以有时候出现一些Badcase,即使添加了大量语料进行优化,效果可能也很差
3)混合使用
在实际的场景里面,一般会结合两者进行使用。
简单的不容易产生歧义的直接用规则搞定,复杂的需要泛化能力的才使用深度学习。
03
闲聊机器人的回答是怎么产生的
1)实现原理
正如上面提到的,「闲聊机器人」理解用户问题的方式,将「用户的问题」和数据库中「已有的问题列表」进行匹配,找到最符合的那个。
所以回答也就变得简单的,就是将这个问题对应的答案返回即可
一个问题里面存在多答案的时候,可以根据「用户的问题」和「各个答案」在语义上的相似程度去打分,取得分最高的那个
另外答案本身也可以带有一些标签,例如给「男性」和「女性」用户,分别有不同的答案。
2)答案数据来源
主要有两种
· 爬取网站
例如微软小冰刚做的时候,就是爬取了大量网站的问答,清洗出了海量的问答对
· 人工编写答案
这种在「智能音箱」中特别的多,你甚至可以自己给自己定制一些个性化的回答。
04
如何考量一个闲聊机器人的做的好坏
目前在业界普遍人会采用CPS进行评价
CPS(Conversations Per Session,平均单次对话轮数)
用人话来解释,就是你和一个「闲聊机器人」进行单次对话,有来有回,聊的越多,那么说明这个聊天机器人做得越好
网上的公开数据显示,微软小冰的CPS高达 32!
而大家熟知的苹果Siri,CPS只有2~3,真的差了有十几条街的距离!
05
重点总结
闲聊机器人的对话流程:
1)输入问题
2)语义理解 - 三种实现方式
· 基于规则 - rule-based模型
· 基于深度学习 - model-base模型
· 两者相结合
3)回答生成
- 实现方式
· 通过找到「问题」对应的预设「答案」
· 有多答案时,根据「语义相似度」打分,取分值最高的
- 数据来源
· 爬取各种网站数据
·人工录入编写
4)输出问题
# 推荐阅读
-AI说 | 如何入门AI行业,成为人工智能产品经理?(上)
更多内容,欢迎关注公众号【朱利安笔记】,定期推送AI产品干货 ~
网友评论