Sequence to Backward and Forward Sequences:A Content-Introducing

从今天开始后面的paper都与bot有关,除非arXiv刷出一些好玩的paper。本文是Sequence to Backward and Forward Sequences: A Content-Introducing Approach to Generative Short-Text Conversation,2016年7月4日发在arxiv上,作者是来自北京大学的博士生Lili Mou

这里所讲的bot是指chat bot,也是当下研究领域最火的应用之一。在实际的工程应用中使用的方法可以分为两类,基于rule、template的和基于database query的,应用范围比较窄,比如垂直领域的客服机器人,解决的问题通常都是一个闭域的问题;而真正的AI是应该可以解决开域问题的,无论问什么样的问题,都会得到一个满意的答案,当然,现在的研究水平还难以达到这样的境界。最近几年随着深度学习技术的火热,nlp领域中很多任务都得到了长足的进步,现在最流行的解决方案是seq2seq,尤其是在自然语言生成任务中得到了广泛的应用。简单bot的问题可以理解为给定一个query,生成一个reply,这样的bot是single turn,研究意义大于应用意义。更多的实际问题都是一个multi turn问题,以客服bot为例,单轮对话很难解决了客户的疑问,一般都是通过多轮对话来帮助用户得到满意的答复。关于多轮bot的文章,后面会慢慢涉及到,今天分享的paper是关于单轮、短文本的对话生成。

生成式的bot比起基于rule、template和database query的bot具有更加灵活的特点,不仅仅拘泥于现有的rule、template和database,而是可以生成更加多样性的reply。但生成式的bot也有一个非常显著的问题,就是经常生成一些非常“呵呵”的reply,比如“我不知道”,“我也是”等等没有营养但绝对“安全”的话,导致了这种bot没有什么实用价值。产生这个问题可能有两个原因:一是在decoder部分以log概率最大为目标,而不是别的目标,所以容易生成一些没有意义的人类语言,因为训练语料中这样无意义的reply会经常出现,用deep learning从data中抓feature的时候就会出现这样的问题;二是query的信息量太少,encoder捕捉的意思有限,导致了生成“呵呵”的reply。

本文旨在提出一种叫做content introducing的方法来生成短文本reply,一共分为两个step,如下图:

step 1 给定query之后,预测一个keyword作为reply的topic,这个topic词性是名词,这里的keyword并不能捕捉复杂的语义和语法,而只是根据query的每个词来预估出一个PMI(Pointwise Mutual Information)最高的名词作为keyword,两个单词之间的PMI由下式计算:

每个单词与query之间的PMI由下式计算:

虽然数学上不太严谨,但后面的实验表明用这个来计算结果还是不错的。

step 2 本文的模型叫做Sequence To Backward and Forward Sequences,首先进行backward step,给定一个query,用encoder表示出来得到一个context,decoder的部分首先给定keyword作为第一个词,然后进行decoding,生成的这部分相当于keyword词前面的部分;接下来进行的是forward step,也是一个典型的seq2seq,用encoder将query表示成context,然后给定backward生成的话和keyword作为decoder的前半部分,继续decoding生成后半部分。整个的流程这样简单描述下:

query + keyword => backward sequence

query + keyword + backward sequence(reverse) => forward sequence

reply = backward (reverse) sequence + keyword + forward sequence

传统的seq2seq模型都是从第一个词生成到最后一个词,无法生成指定词,而本文的模型可以生成指定词,并且该词可以出现在reply的任意位置。

数据集是从百度贴吧上爬下来的对话数据,规模有500k的query reply pairs,PMI统计是由100M的query reply paris。结果是与seq2seq进行比较,本文模型得到了更好的结果。下图展示了本文的example:

本文用keyword来做topic的思路是一个很好的思路,会让算法生成的reply更加有营养,这个在单轮的应用背景下可以取得不错的结果。但是本文用topic的思路和处理方法太多简单,如果考虑到多轮对话的问题,我想用上下文信息来预测topic,而不是只考虑该句query的信息,而且不仅仅用一个单词来做topic,可能还会是短语,也可能是语义层面上的topic,而不仅仅是从一个候选列表中选择单词来作为topic。文章的思路很有启发性,我个人认为生成式的bot在闭域中应用是一个大趋势,传统的rule、template、database都会被替代,但真实应用场景中的bot需要将context做好处理,然后作为先验知识,来生成reply。其实难点也就在context的处理上,包括user profile,dialogue history,user current state等等各种context信息。

来源:paperweekly

原文链接

时间: 2024-08-02 04:10:44

Sequence to Backward and Forward Sequences:A Content-Introducing的相关文章

深度:解密巨头们所关注的聊天机器人

雷锋网(公众号:雷锋网)按:本文作者张俊,文章将会详细解密1)聊天机器人所要解决的三个问题:2)以及它们所使用的模式. 引言: chatbot是最近一段时间非常火的一个词或者一个应用,不仅仅各大新闻媒体在热炒bot的概念,各大巨头也投入巨大的资源进行研发,arxiv上刷出bot相关的paper也更是家常便饭.炒作归炒作,PR归PR,不得不说一个尴尬的事实是市面上确实难以找到一个真正好用的bot.bot按照涉及的领域,分为开放域(open-domain)和面向具体任务(task-oriented)

教 Chatbot 生成更有营养的对话

Sequence to Backward and Forward Sequences: A Content-Introducing Approach to Generative Short-Text Conversation https://arxiv.org/pdf/1607.00970.pdf 用一般的 seq2seq 框架来直接生成对话,经常会有类似"哈哈"."我不知道"的话产生,虽然很连贯,但信息量太少,没有实际意义.那么,如何根据上文来生成相关的.有信息量

PaperWeekly 第十八期 --- 提高seq2seq方法所生成对话的流畅度和多样性

引言 对话系统是当前的研究热点,也是风险投资的热点,从2016年初开始,成立了无数家做chatbot.语音助手等类似产品的公司,不管是对用户的,还是对企业的,将对话系统这一应用推到了一个新的高度.seq2seq是当前流行的算法框架,给定一个输入,模型自动给出一个不错的输出,听起来都是一件美好的事情.seq2seq在对话系统中的研究比较多,本期PaperWeekly分享4篇的paper notes,涉及到如何提高所生成对话的流畅度和多样性,使得对话系统能够更加接近人类的对话.4篇paper如下:

“嗨,我叫汪仔,今年三岁了”- 论如何为聊天机器人定义一个固定的人格 | 论文访谈间 #12

近年来,人工智能之火大家已经有目共睹了:从<未来简史>.<必然>等国外著作到李开复的<人工智能>.李彦宏的<智能革命>等成为畅销书,大众对于 AI 的热捧程度达到了历史高点,人机对话是人工智能领域中最重要的问题之一,聊天机器人(chatbot)顺势成为了研究的热点. 聊天机器人这一热潮可从两个角度进行解释:从学术上,机器人的智能一方面体现他能否理解人类的语言并给出合理的回复,另一方面也体现在他是否足够的类人化,即可以被当作一个人类用来交流,这对应了人工智能的

如何生成主题相关的对话 | 每周一起读 #11

Topic Aware Neural Response Generation 对话生成是一个非常热门的研究方向,通过 Seq2Seq 来生成与某个主题相关的对话,让整个对话内容的信息量更大.相关性更强,是一个非常有意思的研究思路.本文的工作给出了一些不错的想法.以下是Chatbot 专题阅读小组中的各位同学对本文的解读和讨论. 此外,PaperWeekly 将于今天正式成立自动文摘和统计学习专题阅读小组,在组内发起「每周一起读」活动.我们将每周选定一篇优质文章,邀请国内外行业大咖和高校大牛入驻讨

Programming Clojure - Unifying Data with Sequences

In Clojure, all these data structures can be accessed through a single abstraction: the sequence (or seq).  A seq (pronounced "seek") is a logical list, the seq is an abstraction that can be used everywhere.   Collections that can be viewed as s

SAP SD 模块面试题

I BASIS KNOWLEDGE AND SYSTEM NAVIGATION 1. Name two ways to start a transaction. i. Dynamic Menu ii. Command Field 2. Why do you create user-specific parameters? i. They supply defaults to R/3 fields. If a field is indicated, the system automatically

Data Blocks and Freelists (from ixora)

Questions and Answers Data Blocks and Freelists Transaction and process freelists 26 October 1998 You mentioned that there are different types of free lists. Could you please explain a bit more about all this?   Each segment has at least a master fre

Copycat - command

client.submit(new PutCommand("foo", "Hello world!"));   ServerContext connection.handler(CommandRequest.class, request -> state.command(request));   State.command ReserveState开始,会把command forward到leader,只有leader可以处理command @Override