秒变金庸风 | NLP文本风格迁移

2020 年 12 月 23 日 AINLP

NewBeeNLP公众号原创出品  

公众号专栏作者@山竹小果


风格迁移是自然语言生成领域一个非常火的主题,对于文本风格迁移,先举个例子:

Input:谢谢
Output(金庸):多谢之至

Input:再见
Output(金庸):别过!

Input:请问您贵性?
Output(金庸):请教阁下尊姓大名?

再泼个冷水:

目前自然语言生成(NLG)领域的研究还不太实用,所以希望像人一样先理解句子,再改写句子是不太现实的。

那么能否用机器翻译的方法,不理解句子也能实现句子的转换?这也是挺有局限的。机器翻译需要使用使用大量的对齐语料进行监督学习,应该是不会有人专门标注这样的语料的。

不过在某些特定领域,可以通过一些巧妙的数据挖掘方式来获取语料。例如根据新闻报道自动生成评论或摘要等,这样的题目现在很多人在做。假如把新闻语料和新闻评论的关系也当做“风格转换”的话,那么答案还是存在的。

相关工作 接下来我们看一些文本风格迁移的工作,我们关心的:

  1. 文本风格转换是否可行?
  2. 用的什么方法?生成 or 翻译?
  3. 评价标准?

论文 LIST

  1. Unpaired Sentiment-to-Sentiment Translation: A Cycled Reinforcement Learning Approach
  2. Delete, Retrieve, Generate: A Simple Approach to Sentiment and Style Transfer
  3. Generating Sentences by Editing Prototypes
  4. Style Transfer from Non-Parallel Text by Cross-Alignment
  5. Style Transfer Through Back-Translation
  6. A Dual Reinforcement Learning Framework for Unsupervised Text Style Transfer
  7. A Hierarchical Reinforced Sequence Operation Method for Unsupervised Text Style Transfer

下面简单看下前三篇:

Unpaired Sentiment-to-Sentiment Translation: A Cycled Reinforcement Learning Approach

第一篇工作,从题目来看就很吸引人,unpaired 对应 cycle,很自然联想到 reconstruction。而 reinforcement learning 主要是为了解决训练过程中离散文本不可求导的问题。

虽然过去也有一些 text style transfer 的问题,但是因为缺少对于非 stylish 或者说“普通文本”的语义信息的显式保留,导致很容易出现下面这种情况:当把“The food is delicious”这句话从正向情感迁移到负向情感时,会得到“What a bad movie”——虽然情感被正确转化了,但是内容的主体也跟着变了。这显然是不好的。

为了解决这个问题,这篇工作使用了两个 module,一个 neutralization module 用于提取 non-emotional content,另一个 emotionalization module 用于生成或者说融入 sentiment words。

如上图所示,下面的 neutralization module 其实是通过直接删除emotional words 来实现 non-emotional content 的保留。这一步中,作者通过使用 self-attention 得到的注意力权重作为分类器特征,从而自动找出 emotional words。

从实验结果来看,这个方法的分类准确率也可以达到 90% 左右(不过 sentiment classification 本身也不是很难,稍微复杂一点的模型都可以达到95%甚至更高)。

接下来就是 emotionalization module,可以看到,一个 encoder 和两个 decoder。两个 decoder 对应 sentiment classification 的两个类别(positive or negative),并且分别用于训练时的 reconstruction 和测试时的 generation(emotionalization)。

由于文本的离散性,作者采用了 RL 的方法来训练这两个 module。RL 成功与否严重依赖于奖励函数的设计。在这篇论文中,作者提出了两个 reward:sentiment confidence 和 BLEU。尤其是 BLEU,主要是针对作者想解决的问题——non-emotional content perserving。最终的奖励函数如下:

插播:BLEU(Bilingual Evaluation Understudy)

其中,

这里的BLEU值是针对一条翻译(一个样本)来说的。例子:

候选译文(Predicted):It is a guide to action which ensures that the military always obeys the commands of the party

参考译文(Gold Standard) 1:It is a guide to action that ensures that the military will forever heed Party commands
2:It is the guiding principle which guarantees the military forces always being under the command of the Party
3:It is the practical guide for the army always to heed the directions of the party

Modified n-gram Precision计算也即Pn):

这里n取值为4,也就是从1-gram计算到4-gram。

首先统计候选译文里每个词出现的次数,然后统计每个词在参考译文中出现的次数,Max表示3个参考译文中的最大值,Min表示候选译文和参考译文中的最大值的最小值。例如,词"the":然后将每个词的Min值相加,将候选译文每个词出现的次数相加,然后两值相除即得

类似得到2-gram 3-gram 4-gram的Pn,例如"ensures that":然后我们取𝑤1=𝑤2=𝑤3=𝑤4=0.25,也就是Uniform Weights。得到:

下面计算BP(Brevity Penalty),翻译过来就是“过短惩罚”。由BP的公式可知取值范围是(0,1],候选句子越短,越接近0。

候选翻译句子长度为18,参考翻译分别为:16,18,16。所以𝑐=18(候选翻译句子长度),𝑟=18(参考翻译中选取长度最接近候选翻译的作为r)

所以

整合:

𝐵𝐿𝐸𝑈=1⋅𝑒𝑥𝑝(−0.684055269517)=0.504566684006

BLEU的取值范围是[0,1],0最差,1最好。通过计算过程,我们可以看到,BLEU值其实也就是“改进版的n-gram”加上“过短惩罚因子”。

从实验结果来看,过去的工作主要都只考虑了 style transfer 的成功与否(sentiment accuracy),而没有显性地考虑 content perserving,所以确实在 BLEU 指标下表现很差。

但是也可以看到,这篇工作提出的方法在大幅提高 BLEU 的情况下,ACC 也有一定损失。可以从这个结果看到,想要非常自然地融入 sentiment words 并且不破坏语义和语法,是很困难的事情。看一些直观的转换结果:

2. Delete, Retrieve, Generate: A Simple Approach to Sentiment and Style Transfer

第二篇论文,几乎也是一样的思路。但是在具体实现上要更直接一点。第二篇论文在进行 style transfer 的时候,基于的是这样的假设:文本的一些属性(attribute),比如文本传达出来的情感信息等,可以体现在文本中的某些特定词汇上。通过改变这些词汇,就可能直接改变整句文本的性质属性(value)。

由上面的示意图可以看出,作者将那些具有指示功能的特定词称为 attribute marker,通过(主要)改变这些 marker,进行 attribute transfer。文章进一步提出了4种具体的方法来改变 marker。

这4种具体的方式也由上图很清晰地展示了出来。值得一提的是 DeleteOnly 和 DeleteAndRetrieve。在删除了具体的 marker 后,作者提出再去根据这个没有情感特定性的句子去从数据中检索出一句最相似但是 attribute 的数值相反(target attribute)的话。检索出的这句话主要用于提取新的 target attribute marker,作为“重写” RNN 的输入之一。

很明显,这样的工作可能有一定局限性,但在一些简化场景中,却是更可控的。其实验结果也印证了这点。

3. Generating Sentences by Editing Prototypes

上面两篇工作都是进行风格转换,而在进行文本改写的时候,还有一类常见的场景就是进行非情感类改写,比如扩写句子,改写语法错误等。在进行这样的工作时,其实也可以采用类似的思路。先找到一个“中立”的、“简单”的“模板”,再在这个基础上加入希望增加的信息,如情感、一些复杂修饰词等等。今天要分享的最后一篇工作就是这样一个思路。

从上面的示意图中可以看到,修改后的句子增加了“modiocre”和“ridiculous”这两个形容词,变得更复杂了。而重中之重就是在学习 edit vector 上。

可以看到,此时的 edit vector 不再是 sentiment words,而是一种 semantic operation。如果让 edit vector 作为一种隐变量,也遵循某种分布,那么同样的 edit vector 应该符合同一种 edit operation,并且对于句子的改写是一种微小的可控的操作。

基于这样的假设和期望,作者用 VAE 来建模 z,目标函数如下:

关键就是如何保证学到好的 p 和 q。这篇论文使用的方式和过去很多 VAE 的文本应用都不太一样,有兴趣的同学请一定去查阅原文。值得一提的是,这篇工作中的 edit vector z 是直接拼接在给 decoder 的每一个时刻的输入上的,并没有额外的 gate 或者 transform。这也是和上面两篇工作的区别之一。

最后从结果来看,作者提出的方法确实能更自然地改写句子。这点从 case studies 还有句子的平滑度方面可以看出:

Summary

目前的方法大概就是深度学习在外加使用policy gradient的方法,对于文本的生成的损失函数只论词的生成概率,可添加语言规则的损失项,类似词性,情感等之类,可以提升,而后在beam search阶段也可添加语言规则,而不是以只关注概率。

另则,现在的文本风格迁移在人类的角度来看过于easy,离我们想象中的文本风格迁移还有很大一段距离。


- END -


由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入AINLP技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注NLP技术交流

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
2

相关内容

专知会员服务
42+阅读 · 2021年4月23日
【CVPR2021】GAN人脸预训练模型
专知会员服务
23+阅读 · 2021年4月10日
知识增强的文本生成研究进展
专知会员服务
96+阅读 · 2021年3月6日
【教程】自然语言处理中的迁移学习原理,41 页PPT
专知会员服务
94+阅读 · 2020年2月8日
【资源】文本风格迁移相关资源汇总
专知
13+阅读 · 2020年7月11日
一文超详细讲解文本风格迁移
深度学习自然语言处理
6+阅读 · 2020年6月27日
自然语言处理中注意力机制综述
黑龙江大学自然语言处理实验室
11+阅读 · 2019年2月26日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
机器学习算法与Python学习
5+阅读 · 2017年12月22日
NLP自然语言处理(二)——基础文本分析
乐享数据DataScientists
12+阅读 · 2017年2月7日
Arxiv
0+阅读 · 2021年4月21日
Deformable Style Transfer
Arxiv
14+阅读 · 2020年3月24日
Arxiv
4+阅读 · 2019年9月26日
VIP会员
相关VIP内容
专知会员服务
42+阅读 · 2021年4月23日
【CVPR2021】GAN人脸预训练模型
专知会员服务
23+阅读 · 2021年4月10日
知识增强的文本生成研究进展
专知会员服务
96+阅读 · 2021年3月6日
【教程】自然语言处理中的迁移学习原理,41 页PPT
专知会员服务
94+阅读 · 2020年2月8日
相关资讯
【资源】文本风格迁移相关资源汇总
专知
13+阅读 · 2020年7月11日
一文超详细讲解文本风格迁移
深度学习自然语言处理
6+阅读 · 2020年6月27日
自然语言处理中注意力机制综述
黑龙江大学自然语言处理实验室
11+阅读 · 2019年2月26日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
机器学习算法与Python学习
5+阅读 · 2017年12月22日
NLP自然语言处理(二)——基础文本分析
乐享数据DataScientists
12+阅读 · 2017年2月7日
Top
微信扫码咨询专知VIP会员