本文包括对话系统分类、数据汇总、和一些目前对话系统paper的总结、评价。
以下paper的“一句话评论”均为个人观念,评价标准苛刻,也有可能夸大了论文的缺点,希望与持不同意见的各位有识之士共同讨论。
- 对话系统分类
- Data
- Papers
- Neural Responding Machine for Short-Text Conversation
- Conversational Contextual Cues The Case of Personalization and History for Response Ranking
- Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models
- A Hierarchical Latent Variable Encoder-Decoder Model for Generating Dialogues
- End-to-End Generative Dialogue
- MemN2N based dialog system
- Evaluating Prerequisite Qualities for Learning End-to-End Dialog Systems
- End-to-end LSTM-based dialog control optimized with supervised and reinforcement learning
- Sequence to Backward and Forward Sequences A Content-Introducing Approach to Generative Short-Text Conversation
- A Network-based End-to-End Trainable Task-oriented Dialogue System
对话系统分类
对话系统按功能性分为goal-driven dialog system(比如功能机器人,Contana,出门问问)和open domain dialog system(比如闲聊机器人,小冰)。
PS:个人从产品角度觉得功能性机器人才是有用的,陪你聊天的机器人是伪需求,然而事实证明我错了,刚好相反,度秘的log分析表明能够留下用户聊10分钟的都是被他们调戏的闲聊话题,而且大量流量都是来闲聊的。
本文主要从数据、模型/算法方面看一看现在paper里的对话系统,是。。。怎样的不靠谱。。。
Data
综述见文章Dialog data survey 。在后面Papers一章中也会介绍每篇所用的数据,但靠谱的数据总是少的。微博、twitter、贴吧上的数据噪声太大;人造/合成数据太容易被拟合;
Papers
Neural Responding Machine for Short-Text Conversation
一句话评论:数据靠谱;方法现在来看无创新,但易实践;
李航老师团队发在ACL 15的paper。
data: 微博数据, 每句限长140个字。每条微博有平均20条回复,共约22w个微博,也就是约440w条问答对。
方法:带attention的seq2seq翻译模型
Conversational Contextual Cues: The Case of Personalization and History for Response Ranking
一句话评论:数据很好,方法还算靠谱,不过是answer selection(因为answer selection需要大量备选语聊,而且,看起来还ok的结果是蒙对了呢还是真ok呢? 这些都不清楚,所以认为answer selection的做法本质上不是人工智能)。
Google的论文,对Reddit上的评论进行end-to-end的建模, 最后选用answer selection(而不是generation)的方式输出每一次对话的sentence,出发点两方面:对文本内容和personalization建模.
数据:Reddit上的1.33亿conversation,共21亿句对话。
模型如下图所示:
网络输入input:dialog[i], context: dialog[0:i-1], author: 该评论作者的feature,
response: 正样本,response = 真实dialog[i+1], 此时输出final prediction=1. 负样本,response = 随机的一条其他地方的comment,此时输出final prediction = 0. 其中dialog[i]表示对话过程中的第i句话。
另外,文章还提出了multi-loss的方法,旨在度量以上网络中每个feature的有效性。分别对组合{response, input}, {response, context}, {response, author}求一个hidden layer, 将这3个hiddenlayer{h1, h2, h3} concatenate成一个总hidden layer h4, 将{h1, h2, h3, h4}分别得到的分类loss加和作为网络总loss进行优化,但最后prediction的时候只采用h4的输出结果。
Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models
一句话评论: end2end,模型看着挺炫,但不一定好使
https://arxiv.org/pdf/1507.04808v3.pdf
seq2seq的典型方法,用前N-1句话生成第N句话。假如说现在A, B对话内容是: a1,b1,a2,b2 , 其中每个都表示一句话
a1 -> [emb[word] for word in a1 ] -> RNN( a1 )
b1 -> [emb[word] for word in b1 ] -> RNN(