【NLP-ChatBot】我们熟悉的聊天机器人都有哪几类?
本篇是专栏中介绍聊天机器人的第一篇,会大概介绍聊天机器人的历史、特点、分类以及技术框架,让大家对聊天机器人有一个大致的了解。
作者&编辑 | 小Dream哥
1 chatbot概述
关于对话机器人的研究,可以追溯到上个世纪50年代,Alan M. Turing提出了“机器可以思考吗?”的图灵测试问题来衡量人工智能发展的程度。图灵测试简单来说,就是让测试者分别与机器人和人进行对话,看测试者能否将机器人辨别出来。该领域接下来就变成了人工智能领域中一个十分有趣又具有挑战性的研究问题:如何设计及开发智能聊天机器人。
从应用上来说,智能聊天机器人实际上是为了应对信息爆炸的今天存在的信息过载问题。早期,人们是把智能聊天机器人当作搜索引擎的终极形态来进行设计和开发的。具体来说,其需要解决的问题是,人们对于简单的搜索引擎仅仅返回一个网页集合的不是特别满意。通常,现有的搜索引擎需要逐个浏览和仔细阅读搜索引擎返回的每个链接网址中的信息,再剔除冗余信息后才能得到期望的答案。
更好的用户体验是,用户在向智能对话系统用自然语言提出一个问题之后,且智能对话系统也能够自然又通顺地回答问题,且回答内容与问题紧凑相关又答案精准,为用户节约了更多的时间。
到目前为止,智能聊天机器人在产业界已经有了一些初步成功的应用,在智能客服、个人助理等场景中,在电商、保险等行业中已经能够替代大量的人工客服,进行简单的业务处理和客户支持。
基于聊天机器人的应用场景,聊天机器人主要分为3种类型,即问答系统(QA),对话系统,闲聊机器人,下面大致介绍三种类型的聊天机器人的特点。
2 问答系统(QA)
问答系统是基于用户的问题,给定一个回答,不涉及到多轮对话。通常用于智能搜索,智能家居中的家电控制等场景。问答系统往往不需要调用业务能力,只需要完成对用户问题的匹配及回答。
下面介绍下问答系统中最常用的技术方案,如下图所示:
抽象的看,问答系统的任务其实就是,对用户的输入进行相似度或者相关性计算,然后在相应的FAQ的库里,寻找该用户输入对应的答案,并返回给用户。
所以,通常来讲,QA系统一般是针对某一个领域的,通常用于某一个领域的客户支持和服务。
那么,要构建一个QA系统,第一步就是要构建一个高质量的FAQ语料集。语料集中应包含大量高质量的问题-答案(Q-A)对。
模型的训练过程,就是让模型能够学习到问题-答案(Q-A)对之间的联系,或者Query集的特征。所以,目前QA系统的实现,只要以下三种方式:
1.计算用户输入Query和Question的相似度。通过计算用户输入Query与FAQ语料集中Question之间的相似度,选出相似度最高的Question,再通过Q-A map找到相应的答案返回给用户。
2.计算用户输入Query和Answer之间的相关性。通过计算用户输入Query与FAQ语料集中Answer之间的相关度,选出相关度最高的Answer,返回给用户。
3.结合用户输入Query和Answer之间的相关性以及用户输入Query和Question的相似度。通过结合相关性和相似度,选出最匹配的Answer,返回给用户。
3 对话系统
对话系统(Dialogue System)通常是面向某一个任务,机器人需要同用户交互,甚至交互多轮。最后,还需要调用业务资源,以完成某一项任务。例如,查天气的机器人,根据用户的输入,判断是否能够查询到某时某地的天气,如果条件不足,需要主动向用户问询,最后再调用类似“中国天气网”获得天气数据。
对话系统的应用场景很丰富,像客服机器人,销售机器人等都是对话系统的代表。
如下图所示,展示了一个对话系统的技术架构图:
通常,对话系统包含自然语言理解(NLU),对话管理(DM),自然语言生产(NLG)等部分。
NLU部分负责对用户输入进行理解,主要包括意图识别和实体识别;DM部分是对整个用户的对话状态进行管理,包括槽位管理,行为决策,数据获取等功能;NLG主要负责答案的生成。
4 闲聊式机器人
闲聊就是一种开放域的聊天场景,就像两个朋友之间聊天,不限制主题和内容。闲聊式的机器人主要用于私人助理、娱乐等场景,典型的代表如微软小冰、苹果Siri等。
闲聊式的机器人,开发难度非常的大,需要巨量的数据集以及能兼顾灵活度和准确度的算法模型。目前,闲聊式的机器人效果都差强人意,个人认为后续需要结合优质的知识图谱网络以及强大的增强学习算法。
这里介绍一种比较流行的生成式的闲聊机器人的技术架构,让大家熟悉下闲聊式机器人最基础的实现方式。
如上图所示,生成式的闲聊机器人通常基于seq2seq架构,利用模型自动生成答案,结合Attention等技术进行优化。目前,为了实现对用户输入更好的编码,会引入Attention等技术;为了实现模型对用户前后文输入的理解能力,会引入用户历史记录的编码等。这种方式完全基于数据,优点是比较灵活,不需要做复杂的对话管理;缺点是可控性不强,生成的答案往往比较短,很多无意义的答案返回,需要大量的训练数据。
总结