Dialog Systems and Chatbots —— DA学习笔记1

前言:正常人进行对话的一个general rule是: do not dwell on any one subject. But to pass lightly from one to another without effort and without affectation. To know how to speak about trivial topics as well as serious ones.翻译过来,i.e.说人话的话,大体意思就是说,不在一个问题上执着不放,不做作地从一个话题转到另一个话题,而且既能进行琐碎的chit-chat,又能进行特定领域的严肃正经的话题。


概述:

语言是人类对话和感知的标志,对话(conversation or dialog)是语言最根本的表现形式。总体来说,dialog systems,或者说是conversational agents可以分为两大类,一类是是task-oriented dialog agents,另一类是chatbots。下面进行分别介绍。


Task-oriented dialog agents:为执行特定task而设计的(如预定航班等任务),与用户进行短对话(进行单一互动(single interaction)或者half-a-dozen interactions)来获取信息并帮助完成task(个人理解就是,问用户一些问题来获取task的具体内容)。在手机等电子产品中的助手就是这类的,如Siri,可以给出旅行路线、智能家居控制、找到餐厅、打电话或者发送信息等任务。一些公司部署一些特定领域的dialog agents在他们的网站上来帮助客户解决问题。


Chatbots:Extended. 模拟人和人之间的非结构性对话,是人与人之间交互的时候“chat”的那种情形,常常有一定的娱乐特性,如微软小冰以文字的形式和用户chit-chat。除了一般的chit-chat之外,还可用于家教领域和进行一些心理咨询领域学说的测试。


对于多个对话系统之间,可以有很多衡量的维度,其中一个是系统可进行对话的轮数(turn)。对于一个由多轮组成的对话,每一轮可能是一句话,可能是一个单词,也可能是很多的句子。一般来说,简单的系统可与用户进行单轮对话,表现地更多类似于是QA或者是command-and-control系统,这种在电子助手中较为常见。单轮对话不能解决follow-up的问题,lowlow的(以前的Siri就是只能进行单轮对话,17年的Siri可以进行两轮对话了)。But!很多任务是需要longer对话的,较为典型的场景是,旅行规划和管理。


一、Chatbots

chatbot从系统组成上可分为两大类:基于规则的系统(很野人的做法)和基于语料的系统。基于规则的忒原始了,pass掉。基于语料的系统从大量的人与人之间的真实对话中进行挖掘,可以用一些信息检索的方式(直接从出现过的对话中把人类的回答扒下来)或者用例如NN中seq2seq的那一套在机器翻译里用的套路来学习人类的回答方式。


1. 基于规则的chatbot:ELIZA和PARRY。ELIZA是用来模仿一位心理医生,看了一下test语料,真的超逼真,可见规则系统做的有多庞大!!ELIZA是用pattern/transform 规则的形式来进行工作的,也就是说,把用户说的东西与既定的模板进行match,然后根据匹配到的模板进行相应的回答,即transform阶段,在transform阶段会抽出match到的模板中特定位置的关键字,然后插入到回答的模板中。整个ELIZA系统是围绕各个句子中的keyword来进行工作的,根据每句话中rank最高的keyword来匹配相应rank最高的rule,并作出相应的响应。整个系统中有memory stack的概念,在memory stack的部分,比如说拿到一个rank最高的keyword,ELIZA会从memory list中随机选一个transform,套到sentence里,然后存到stack中。个人理解:memory list是之前该词作为rank最高的keyword出现时的用户输入。ELIZA的这套框架(在1966年提出的)在当今还是在用,如ALICE。PARRY也是一个以心理医生角色出现的chatbot,用来研究精神分裂症。在ELIZA的框架中增加了用户mental state的部分,用来记录用户的情绪,如fear或者anger,PARRY在1972年通过了图灵测试!


2. 基于语料的chatbot,敲黑板!!这个是重点!!

前边基于规则的chatbot是基于人工建立的规则完成的,通过在人人之间,有时也会在人机之间domain的真实对话来进行pattern的挖掘,这样的语料可以在一些聊天平台,如twitter或者电影对话中获得,可以近似认为这些语料是自然的人人对话。

有两种类型的基于语料的chatbot:一类是基于IR的系统,另一类是基于sequence transduction的监督机器学习系统(p.s. sequence transduction是什么不明白,这坑后续填上)。和基于规则的chatbot类似,大部分基于语料的chatbot没有对对话的上下文进行建模而不考虑整体的conversational goal,多用于进行单轮对话,因此也常被称为是response generation system,和QA系统类似。


2.1 基于IR的chatbot

这类方法的一个核心思想就是对于用户扔过来的turn X,从语料中检索到合适的turn Y来进行回答,简单来说,就俩动作:找!返回!这类系统之间的区别在于如何选择语料以及怎么确定最优turn Y。对于语料的选择上,一个common choice是搜集人与人之间的真实对话,可从twitter或微博中获取;另一种方法是从电影对白中选取。在给定语料和用户的turn X的情况下,就可以用任何检索算法来进行最优回答的检索,最简单的两种方式如下:

1)返回最相似turn的回答:此时用户的turn X可以认为是一个query,找语料C中与query最相似的turn q(可以用余弦相似度来进行衡量相似值),返回turn q对应的回答作为turn X的回答

2)返回最相似的turn:和前一种类似,找和turn X相似的turn q,直接返回turn q。这种方法背后的理论是:一个good response通常和对应的query享有相同的词和语义。

无论是1)还是2),可使用任意一种相似度衡量方法,最常用的就是余弦相似度,在词向量上进行计算或者单词层面上进行(使用tfidf)。即使说是从intuition上来讲,用1)更符合情理,但是实际效果上来讲,2)的效果更好,这可能是因为多了一个选择回答的操作引入了更多的噪音。

基于IR的chatbot可以进行一定的拓展,如除了使用q中单词作为特征外,使用更多的特征(如用户信息、前一turn中出现的单词等)以及使用各种排序算法。这种方法在现实中的使用是微软小冰和Cleverbot。

除了使用对话类的语料之外,还可以从一般的narrative文本中获取response(COBOT就是这么干的),如Wikipedia。


2.2 Seq2Seq的chatbot

这种方法是将对话生成视为一个将user’s prior turn转换为system’s turn的任务,就是ELIZA的机器学习形式:从语料中进行机器学习来将一个问题转换为答案。这种最开始是从基于短语的机器翻译发展而来的,即将user turn翻译成system response,但是从本质上来讲,应答生成和机器翻译太太太不一样了。在机器翻译里,source和target中的单词或短语互相邻接,而应答很可能不含用户turn中的任何单词或短语。

猜你喜欢

转载自blog.csdn.net/katherine_cai_7/article/details/78922820