返回介绍

PaperWeekly 第二期

发布于 2025-01-21 00:48:32 字数 5544 浏览 0 评论 0 收藏 0


图片来自 paper The Dialog State Tracking Challenge Series- A Review

人机对话系统通常包括上面的几个部分,task-oriented chatbot 重点关注的是 DST 和 NLG 问题,其中 DST 是核心问题,没有太多关注这个比赛,但个人理解 DST 的作用类似于一张 user conversation logs 状态表,记录着用户当前的状态,以订机票为例,这张表的 key 是预先设定好的 slots,比如目的地、出发地、出发时间等等,与系统背后的业务数据表中的 attributes 相关联,不断地从 user conversation 中抽取相应的 values 来填充这个表格,或者将其定义为一个多分类任务,不断地从对话中判断这句话中包括哪些 slots 和 values(这里的 values 是多个分类结果),当状态表中的信息存在空白时,bot 会根据空白的 slots 来提问并获取 values,直到获取到足够的 slots,给出用户 suggestion,或者进行相应的服务。

DST 的问题解决之后,就是 NLG 的问题。传统的 NLG 采用 rule-based 或者 template-based 的方法,需要很多的手动设置,横向扩展性较差,维护成本高。最近流行的 end-to-end 方案很适合解决这个问题,给定用户的 query,结合着当前 DST,自动生成 response,完全的 data driven,不需要什么人工干预。

生成 response 除了 rule-based 和 end-to-end 的方法之外,工业界中更加常见的是 retrieve-based 的方法,即从庞大的 example base 中进行 retrieve,一方面避免了 NLG 生成 response 时常遇到的 grammatical 问题,另一方面当前的 IR 技术很容易集成到此类 bot 系统中,降低了门槛。

本期的三篇 paper 中前两篇都是关于 task-oriented bot 的 NLG 问题,第三篇是在 retrieve-based bot 的每个细小环节中应用了 deep learning 技术,并且将外部的非结构化文本作为数据源,从中 select responses。

Semantically Conditioned LSTM-based Natural Language Generation for Spoken Dialogue Systems

关键词:NLG、bot、自定义 LSTM

来源:EMNLP 2015

问题:task-oriented bot NLG 问题,给定了 user query 和 DST,如何生成一个更好的 response?

方法:

首先定义了两个概念 delexicalisation 和 lexicalisation,前一个的意思是将句子中的 slot-value 用特定的 token 来替换,像是一种抽象,比如用 food 来代替对话中的各种食物名称;后一个的意思是将句子中的特定 token 还原回具体的 value。

本文最大的亮点在于将传统的 LSTM 重新定义,针对这个具体问题在 LSTM cell 部分中添加了一层,Dialogue Act Cell,通过 gate 机制来保留合适的信息,比如 slot keywords,如下图:

这一层 cell 更像是一个 keyword detectors,整个 NLG 仍是采用 encoder-decoder 框架。

评论:

这层 Dialogue Act Cell 的目的是确保在 decoding 部分,不会遗漏任何一个 slot,所以专门增加了一层 cell 来 encoding act、slot-value 信息,在生成时作为 context vector。我觉得 model 的这个设计与 attention 机制有一点类似,只是 attention 更加地平滑,对每个 word 都有一个 weight,而不是本文中的 gate,非 0 即 1。整体来说,自定义的 cell 是一个很有启发性的思路,针对具体问题的特点,修改现有的 cell 结构,也许会起到非常关键的作用。

Natural Language Generation in Dialogue using Lexicalized and Delexicalized Data

关键词:NLG、bot、自定义 LSTM

来源:arXiv 2016.06.11 cs.CL

问题:task-oriented bot NLG 问题,是第一篇的升级版。

方法:

本文是针对第一篇文章进行的改进版,改进的地方在于不仅仅利用了 delexicalisation 进行训练,而且利用了 lexicalisation 数据,从而提高了准确率,基本的模型框架与第一篇文章类似,不同的在于输入的处理,就是 dialogue act 的表示,如下图:

每一个 act representation 由两部分组成,一部分是 act、slots 的 one-hot 表示,与文章一类似的结构,另一部分是由 value 的每个 word embedding 组合而成。

task-oriented bot NLG 存在的一个更加现实的问题是 data 规模太小,cover 的 features 太少,生成质量不高,本文针对这一问题,用相似 domain 的、大量的 reviews 或者其他相关数据作为 corpus 预训练出一个效果不错的 LM,在 decoding 部分采用预训练好的 LM 模型权重进行 NLG。

评论:

本文中最值得借鉴的地方在于 transfer learning,虽然 DL 效果很好,但实际应用中常常遇到 data 规模太小的问题,DL 难以发挥作用,但如果从大量相似的 domain data 中学习一些表示模型,然后迁移到待解决的问题上,这是一件幸事,也就是人们常说的举一反三。混合大量的相似 domain 数据,会 cover 到更丰富的 features,为 DL 提供了广阔的舞台。

DocChat: An Information Retrieval Approach for Chatbot Engines Using Unstructured Documents

关键词:Retrieve-Based Bot,Unstructured Documents

来源:ACL 2016

问题:如何从大量非结构化文本中 select 出合适的 response 返回给用户?

方法:

本文研究的问题是给定大量的非结构化的 documents 和用户的 query,从中选择并返回一个满意的 response,典型的 IR 问题,作者将解决方案分为三步:

1、response 检索,根据 query,从 documents 中找到合适的 N 句话作为候选。

2、response 排序,将候选中的 utterances 进行排序。

本文大多数的工作在 ranking model 上,提出了 7 种 level 的 features 来对 candidate 进行打分,通过实验发现 sentence-level feature 最有区分度。

3、response 触发,并不是一定可以从 documents 找到合适的 response,所以最后添加一个分类器,来判断最优的 response 是否合适,合适则输出,不合适则输出空。

评论:

本文解决的问题思路比较简单,但中间用到了很多复杂的 DL model,个人感觉有点杀鸡用牛刀。本文的思路更加适合 informative 式的 query,并不适合娱乐和闲聊。但用外部知识,尤其是大量的非结构化的、可能还带有噪声的资源来提供 response,是一个很不错的思路,弥补了只用 training data 或者很有限的 examples 存在的局限性问题,如果可以将两者进行结合,是一个非常好的实用方案。

Tips

引起大家的讨论是一件挺难的事情,所以这一期不再提出问题。之前有同学问如何读 paper,这里简单分享一个简单的 tip,后续的每一期可能都会分享一个 tip。

1、如果刚刚进入一个领域,建议读一些这个领域的 survey 或 review 类型的 paper,这类型的 paper 基本上会将最近的方法归类进行总结,从一个较高的层次来解读每一篇 paper 的贡献和优缺点,对快速了解一个领域很有帮助。如果你关注的这个领域没有 survey,那么恭喜你,说明你可能走到了前沿,用关键词去 google 一篇或者几篇相关的 new paper,读 Related Work 那一节,相信你会有所收获。(注:这个方法是从清华大学刘知远博士那里学来的)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文