TOB领域chatbot交互场景和技术原理解密

聊天机器人场景和技术原理

聊天机器人应用是经由对话或者文字和人进行计算机交互的程序,能够模拟人的对话,提升人机对话的体验。从Facebook messenger到slack机器人到Google Assistant,再到Amazon Alexa,新型对话应用正在改变我们和软件的交互方式。

该篇文章将分享构建一款机器人应用时所遇到的一些问题和挑战,以及背后的技术原理。

首先,我们来看下IT技术的发展史,这个要从80年代说起:

第一个时代是IT时代,这是个人电脑出现的时代,它的特点是“运算力改变生活”,当时最具代表性的公司就是IBM、惠普、微软、甲骨文以及思科等传统科技企业。

第二个时代是互联网时代,这个时代最典型的特征就是“连接颠覆一切”,当时最具代表性的公司就是互联网新贵企业-Google;

第三个时代是移动互联网时代,这个时代最具典型的特征就是“数据效率以及交互方式”;数据利用效率方面的典型应用场景就是我们可以通过手机点外卖、叫车,这个在以前是无法实现的事情;
交互方式则从按键式交互变化到触摸交互,这个时代最具代表性的公司是iphone的鼻祖-苹果。

自从Alpha Go战胜李世石,我们就进入了最新的一个时代 – AI时代。这个时代所对应的入口就是语音对话产品,科学家认为对话是人类最自然的交互方式,这也是为什么各大巨头都在争相发力聊天机器人领域的原因。

聊天机器人最近几年在TOC领域发展迅速,导致市场上出现了大量的聊天机器人,比如小米音箱、天猫精灵等。各大厂商大力投入,想通过聊天机器人抢占AI时代的入口和流量。

当然,TOB领域的聊天机器人也应运而生,通过和企业应用的结合,不断服务企业市场,如客服机器人,服务机器人以及企业政策咨询机器人等。

聊天机器人技术分类

当然,无论是TOC领域还是TOB领域的聊天机器人,其技术分类主要以下几种类型:

TOB领域chatbot交互场景和技术原理解密
主动交互是每个厂商都希望能做到的,它指机器人能在合适的时间和地点,以合适的方式进行主动的对话,实现信息共享与推荐。

被动交互则是目前大家接触最多的一种交互方式,主要有三种类型:

第一种是闲聊机器人,如小米音箱;

第二种是问答系统,如IBM的Watson,可以回答一些事实型和非事实型的问题;

第三种是面向任务/目标的对话系统,比如当用户需要订机票、点外卖时,机器人就需要在对话中确定某项目标或任务。

后两类交互方式的一个主要区别在于:问答系统通常是单轮的,而面向任务/目标的对话系统通常是多轮的。

针对TOB领域的聊天机器人,主要面向的类型是第二种和第三种,即问答系统和任务系统。

那么如何从0到1构建一款问答型聊天机器人呢,我们接下来看下问答型聊天机器人技术的一些基本原理:

聊天机器人模型分类

开发一款聊天机器人大致分为以下3种模型:

  1. 基于规则的模型

  2. 基于检索的模型

  3. 生成式模型

基于规则的模型

如下所示,若问句中包含某个特定词,则机器人给予特定回答:
If “你好么” in
user.query:
chatbot.say(“我很好”)
If “天气” in
user.query:
Chatbot.say(“今天天气真好”)
这种方式需要尽心编写规则,还要考虑规则间的优先顺序,AML平台使用xml语言编写规则,可以快速搭建一个聊天机器人,以下就是使用xml语言编写的回答规则:

如何请假 请假 请假需要在系统中提交申请,说明请假的日期,并提交审批

当询问“如何请假”,机器人就说“请假需要在系统中提交申请,说明请假的日期,并提交审批”;

基于检索的模型

原理和搜索引擎很像,检索模式其实就是类似问答系统,我们会维护问答与答案的配对:
Questions = q1, q2, …,qn
Answers = a1, a2, …, an

根据使用者的输入问题和Questions中的哪一个q最接近,就把answers中配对的回复返回给问询者。问答系统的背后有一个强大的语料库系统,通过归类问询者的句型与语料库推理来计算出最合适的答案。
基于检索的模型技术关键技术包含提取关键词和相似度计算,计算问询者的问句与问答库中哪个问句最相似。
提取关键词常用技术:TF-IDF,BM25

TF-IDF

文本中某个词出现的次数称为“词频”,在词频的基础上,要对每个词分配一个重要性权重。最常见的词(“的”、“是”、“在”)给予最小的权重,较常见的词(“澳洲”)给予较小的权重,较少见的词(“人工智能”、“云计算”)给予较大的权重。这个权重叫做“逆文档频率”,它的大小与一个词的常见程度成反比。
TF-IDF计算方法:
TOB领域chatbot交互场景和技术原理解密TF-IDF = 词频 * 逆文档频率
TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言环境中的出现次数成反比。

以《人工智能行业调查研究报告》为例,假定该文长度为2000个词,“中国”出现36次、“人工智能”出现236次、“行业”出现110次,则这三个词的“词频”分别为0.02,0.12,0.055。然后,搜索Google发现,包含“的”字的网页共有102亿张,假定这就是中文网页总数。包含“中国”的网页共有27.9亿张,包含“人工智能”的网页为0.89亿张,包含“行业”的网页为7.4亿张。则它们的逆文档和TF-IDF如下:
TOB领域chatbot交互场景和技术原理解密

BM25

将一个句子分成了很多个词(qi), 每个词都会有一个分数(IDF),[f(qi,D)]指的是这篇文档中,qi这个词出现的次数,去除停用词,一个词在文章中出现越多次数,就越重要。
TOB领域chatbot交互场景和技术原理解密
在TF-IDF的概念的基础上,BM25引入了b与k1这两个基于经验调整的参数,两者中b又会显得重要些,b表示文章长度,词频相同,文章长度短的要比文章长度长的有更高的优先级。

BM25的计算TOB领域chatbot交互场景和技术原理解密
显然,‘文章’这个词与[u’这篇’,u’文章’]的BM25分值最高;

相似度计算

相似度计算方法有余弦相似度,简单共有词,编辑距离等

余弦函数

余弦相似性表示两个向量的相似程度,当向量是二维时,可表示为两条线夹角的余弦值,两条线之间的夹角越小,其余弦值越接近1,两个向量越相似
TOB领域chatbot交互场景和技术原理解密
当向量是二维时,根据余弦定理,余弦相似性的计算公式为:
TOB领域chatbot交互场景和技术原理解密余弦相似性计算公式在n维也成立,假定A和B是两个n维向量,A是 [A1, A2, …, An] ,B是 [B1, B2, …, Bn] ,则A与B的夹角θ的余弦计算公式为:
TOB领域chatbot交互场景和技术原理解密

简单共有词

对两个文本分词

句子A:我/喜欢/看/电视,不/喜欢/看/电影。

句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。

统计两个文本所有词

我,喜欢,看,电视,电影,不,也。

计算各个句子中包含在所有词中词的个数

句子A是5个;句子B是6个,所有词的个数是6

句子A与句子B的相似度

(5/6)*(6/6)=0.833

编辑距离

一段文本变为另一段文本要修改多少个字

句子A:我喜欢看电视,不喜欢看电影。 句子B:我不喜欢看电视,也不喜欢看电影。

句子A变为句子B要修改两个字,句子A与句子B的编辑距离是2。编辑距离越小,两个文本越相似。

生成式模型

自从google的论文发表后,用Sequence
to Sequence来实现聊天机器人就成为一股热潮。 Sequence to Sequence的基本概念是串接两个RNN/LSTM,一个当作编码器,把句子转换成隐含表示式,另一个当作解码器,将记忆与目前的输入做某种处理后再输出。
TOB领域chatbot交互场景和技术原理解密
序列生成,就是把前一刻的输出当成下一刻的输入

利用开源机器学习框架TensorFlow可实现sequence to sequence生成模型,以下是使用中文语料库训练得到的聊天机器人的效果示意图:
TOB领域chatbot交互场景和技术原理解密
从技术和场景适用性上,TOB领域的聊天机器人开发,如人事咨询、保险、医疗等,基于规则或检索的模型比较合适。闲聊的话,生成式模型比较适用。当然实际开发企业级聊天应用过程中,还是以规则和检索为主,闲聊一般是一个增值业务场景。

本片文章主要分析了问答类聊天机器人的场景和对应技术解决方案,后续文章将会对任务型机器人的场景和技术原理进行深度解析。