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

简介:

Topic Aware Neural Response Generation


对话生成是一个非常热门的研究方向,通过 Seq2Seq 来生成与某个主题相关的对话,让整个对话内容的信息量更大、相关性更强,是一个非常有意思的研究思路。本文的工作给出了一些不错的想法。以下是Chatbot 专题阅读小组中的各位同学对本文的解读和讨论。


此外,PaperWeekly 将于今天正式成立自动文摘统计学习专题阅读小组,在组内发起「每周一起读」活动。我们将每周选定一篇优质文章,邀请国内外行业大咖和高校大牛入驻讨论,并为大家提供可撰写读书笔记和在线协同讨论的阅读工具。



阅读笔记精选



slvher


本文模型实现思路: 


1. 获取 topic word 的 embedding vector 用新浪微博语料训练 TwitterLDA 模型,算法是 collapsed Gibbs sampling。消息输入后,模型给出所属 topic,取该 topic 下的 top100 作为消息的 topic words,删除通用词后,将这些 topic words 转为各自的向量表示。其中,每个 topic word 的向量是通过计算 topic word 在所有 topic 下的归一化频率得到的(文中 Eq. 4),每个 topic word 对应的 vector 维度取决与 LDA 模型设置的 topic 数量;


2. 通过 BiGRU 网络对输入消息做 encode;


3. 根据第 1 步得到 input message 的 topic vector,结合第 2 步得到的 last hidden state,通过 MLP 网络和 softmax 层得到 topic attention,即得到了各 topic word 的权重;


4. 构造由 message attention 和 topic attention 联合影响的解码概率(文中 Eq. 6),该概率可突出 topic words 的作用。基于这个概率进行 token 解码;


5. 与标准的 seq2seq+attention 模型相比,TA-Seq2Seq 模型的解码过程由 ci 和 oi 共同参与,特别地,在解码第 1 个输出 token 时,c0 插入了先验 topic 信息,因此本文模型可以提高首次解码的质量,从而对整个解码结果的质量产生正向影响。 百度贴吧数据集上的实验结果表明,本文提出的 TA-Seq2Seq 模型达到了 state-of-the-art 的效果,优于 Li Jiwei 提出的 Seq2Seq-MMI 模型。

Miaosen


本文为了让回复符合 topic 特征,所以在 decode 过程中加入了 topic attention。而论文“A Persona-Based Neural Conversation Model”里,为了让回复符合某类人的性格特性,加入了 speaker model 的 vector。而这个 vector encode 的信息是年龄性别等信息,并没有 speaker words 直接去帮助 decode。虽然略有不同,但是从本质上讲,都是用其它途径获得的 vector 来影响 decode 的结果符合某种需求。 


还有一点类似的是,本文用的是 Twitter LDA (虽然数据来自于微博),而“A Persona-Based Neural Conversation Model”里,用的是 Twitter 数据,把发言的用户 cluster。 


在结果的生成中,Persona 论文是生成数个回复,然后 rank。不知道和本文用到 c0+Ο0 的方法结合后,效果会不会更好。

weijinfeng


文中描述的 TA-Seq2Seq 模型的核心思想是通过引入 LDA 模型结合 Seq2Seq 模型来产生更有信息含量、更为多样性及更话题相关的对话回答。其采用的思路是在现有的带 Attention 的 Encoder-Decoder 模型架构上,通过 joint 输入信息的 attention 和 topic attention 来共同影响对话的回答的生成。主要思路是意图通过引入先验知识到 Seq2Seq 模型来产生更高质量的回答。整体思路相对比较简单直接,但是在实现过程中,个人觉得有几点值得注意或借鉴的: 


1. 抓住了人们在实际对话过程中,在一定程度上,是基于某个话题来产生对话的特点,自然的引入了 topic 模型及 topic words,有其一定的合理性;


2. LDA 模型训练用的数据不是用的训练对话的数据,这样做是为了引入了其他数据源的先验知识,籍此提高对话的多样性和信息量,并且可以引入不同的数据源来实现不同的效果;


3. 与传统的 attention 机制不同,topic attention 除了利用 topic words 的状态信息,还利用了 input message 的最终状态作为额外的输入来弱化不相关主题词并加强相关主题词的概率;


4. 在对话生成的过程中,采取了有偏于 topic words 的生成概率来增大 topic words 的出现几率;


5. 有别于 Mou et al. 2016,此模型通过取多个话题词来产生更为有信息量的回答;

 

6. 不同于传统的 seq2seq 模型,对话的第一个词产生自 c0 和 o0 的组合,而不是只有 c0,这样的好处是可以产生更为准确的第一个词,来给后续的词及整个句子的产生带来了更好的效果,因为后续词的产生会依赖于前面生成的词。



 Q&A 精选


wumark


Topic Aware Neural Response Generation


我是这篇 paper 的作者之一,我建议大家在读完这篇 paper 时候,还可以读一读:


1. Sequence to backward and forward sequences: A content-introducing approach to generative short-text conversation [Lili Mou, Yiping Song, Rui Yan, Ge Li, Lu Zhang, Zhi Jin.] 


2. Incorporating Copying Mechanism in Sequence-to-Sequence Learning [Jiatao Gu, Zhengdong Lu, Hang Li, Victor O.K. Li] 


3. Pointer Networks [Oriol Vinyals, Meire Fortunato, Navdeep Jaitly] 


1 和本文解决的是同一件事,本文是 2 和 3 的一个特殊的应用。

mike


We estimate the parameters of Twitter LDA using the col-lapsed Gibbs sampling algorithm (Zhao et al. 2011). Afterthat, we use the model to assign a topiczto a messageX, pick the topnwords (n= 100in our experiments) with thehighest probabilities underz, and remove universal wordslike “thank” and “you” to get the topic wordsKforX.

1. 怎么产生 topic word? 200 个话题,每个话题 100 个 topic words? 


2. 训练时和测试时,是使用所有的 topic words 还是只是用对应主题的 topic?


Miao: 1. topic 和 topic word 是使用文中说的 Twitter LDA 在微博数据集上训练得到的,训练完之后每个 topic 实际上就是由词分布表示的,这里选择了词分布中概率最高的 100 个词作为这个 topic 的 topic words;2. 训练好之后,对于一个输入 X,可以根据这个模型判断 X 属于哪个 topic,然后选择对应的 topic words 送到后续的模型中产生 response。


xixi_meng: 是不是类似于我把一句话中的关键词提取出来后(这里你们提取关键词的方法是使用的 Twitter LDA 在微博数据上训练得到的所有的关键词,然后句子中看是否有这个词?),导入 jieba 分词模型中,找到前 100 个概率最大的词?将关键词和关键词匹配最高的词送到后续模型中?

BetterEmma


i et al. 2015)

除此之外,Deep Reinforcement Learning for Dialogue Generation 这篇文章将增强学习引入到生成对话中,使用 policy gradient methods 来对具有信息性,一致性,易于回答等特性生成结果进行奖励,从而来避免 general reply 的问题。 


wumark:


从效果来看,Deep Reinforcement Learning for Dialogue Generation 这篇 paper 会导致 chatbot 非常热爱问问题。因为他的 loss 是个能聊多少有意义的东西,最后就一直问问题。从我实验来看,GAN 是目前对 general reply 解决的最好的一种方法。


来源:paperweekly


原文链接


相关文章
|
人工智能 达摩院 自然语言处理
超好用的开源模型平台,ModelScope阿里达摩院
超好用的开源模型平台,ModelScope阿里达摩院
1243 1
|
7月前
|
人工智能 自然语言处理 机器人
2025年AI客服机器人推荐榜单:主流厂商与创新解决方案
本文探讨2025年AI客服机器人的行业趋势,从技术迭代、场景需求到数据安全等角度分析,并提供选型指南。文中强调技术能力(如大模型适配)、场景适配性、数据安全及全周期服务等关键标准,推荐合力亿捷、阿里云、科大讯飞、Salesforce等厂商,助企业理性选择适合的工具。
952 7
|
人工智能 自然语言处理 API
ModelScope是什么
【9月更文挑战第1天】ModelScope是什么
2486 2
|
10月前
|
XML Java Maven
防止反编译,保护你的SpringBoot项目
ClassFinal-maven-plugin 是一个用于加密 Java 字节码的工具,能够保护 Spring Boot 项目中的源代码和配置文件不被非法获取或篡改。使用步骤包括:安装并设置 Maven、创建 Maven 项目、将 jar 包作为依赖添加到 pom.xml 文件中、下载并安装 ClassFinal-maven-plugin 插件、配置插件参数(如加密密钥和目标机器 ID),最后通过命令 `mvn clean package classfinal:encrypt` 执行加密。插件通过 JNI 实现编译时混淆和加密,并在运行时动态解密类文件。
790 14
|
关系型数据库 MySQL
MySQL开窗聚合函数——SUM(),AVG(),MIN(),MAX()
MySQL开窗聚合函数——SUM(),AVG(),MIN(),MAX()
559 0
MySQL开窗聚合函数——SUM(),AVG(),MIN(),MAX()
|
内存技术
除了智能照明系统,PWM 还可以应用在哪些领域
脉冲宽度调制(PWM)技术不仅适用于智能照明系统,还广泛应用于电机控制、电源管理、音频处理和通信系统等领域,以实现高效能的信号和功率控制。
1022 11
|
Ubuntu 关系型数据库 MySQL
Linux系统MySQL安装
【10月更文挑战第19天】本文介绍了在 Linux 系统上安装 MySQL 的步骤,包括安装前准备、安装 MySQL、启动 MySQL 服务、配置 MySQL 以及验证安装。适用于 Ubuntu/Debian 和 CentOS/Fedora 系统,提供了详细的命令示例。
1543 1
|
自然语言处理 监控 测试技术
FunAudioLLM模型的技术测评
本文旨在对通义语音团队开源的FunAudioLLM模型,特别是SenseVoice和CosyVoice这两个模型进行技术测评,探讨其性能、功能和技术创新等方面的表现,并提出潜在的改进建议。
|
安全 Java Shell
"SpringBoot防窥秘籍大公开!ProGuard混淆+xjar加密,让你的代码穿上隐形斗篷,黑客也无奈!"
【8月更文挑战第11天】开发SpringBoot应用时,保护代码免遭反编译至关重要。本文介绍如何运用ProGuard和xjar强化安全性。ProGuard能混淆代码,去除未使用的部分,压缩字节码,使反编译困难。需配置ProGuard规则文件并处理jar包。xjar则进一步加密jar包内容,即使被解压也无法直接读取。结合使用这两种工具可显著提高代码安全性,有效保护商业机密及知识产权。
1589 3
|
Ubuntu 前端开发 测试技术
Nginx-性能优化-ab压力测试工具
Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工具 ,简单易用。
1141 0
Nginx-性能优化-ab压力测试工具