[ACL2020] SongNet:格式控制下的文本生成

2020 年 7 月 23 日 AINLP


作者:李丕绩(腾讯AI Lab 研究员)

原文链接,点击文末阅读原文直达:

https://zhuanlan.zhihu.com/p/162216597




SongNet模型是腾讯AI Lab NLP中心自研的一套基于预训练语言模型的硬格式控制下的文本生成模型。它能接受任意指定的格式进行文本生成,例如生成歌词、唐诗宋词、莎士比亚十四行诗等。以下为论文的详细解读。

标题:Rigid Formats Controlled Text Generation

代码:https://github.com/lipiji/SongNet

论文链接:

https://www.aclweb.org/anthology/2020.acl-main.68/


1 背景

歌词、诗词等是比较独特的文体形式,有严格的格式、韵律等要求。平时我们见到的文本生成任务如对话生成、故事生成、摘要生成等多以自由生成方式为主,给定固定模板严格限制格式进行填词的文本生成任务研究较少。SongNet模型旨在解决此类硬格式控制的文本生成问题。例如,给定一首歌的歌词,让模型能够将歌词全部改写,或者只改写部分歌词。在改写的同时保证文本的格式正确、韵律合理、句子完整等基本的质量需求。具体的,给定《十年》这首歌词的格式,我们可以通过SongNet重新进行配词,并保证格式不变,可以根据原来的曲谱进行演唱:

原歌词:十年之前/我不认识你/你不属于我/我们还是一样/陪在一个陌生人左右/走过渐渐熟悉的街头
新配词:夜深人静/思念你模样/多少次孤单/想伴在你身旁/是什么让我如此幻想/为何会对你那般痴狂


2 方法

2.1 问题定义

输入:一个模板
输出:将替换成真实的文字,生成符合模板格式的完整句子。


2.2 模型框架

图1 模型框架

基于Transformer的自回归语言模型,我们提出了自己的框架。为了解决模板、韵律、句子完整性问题,我们定义了几种符号来对这些特殊的信息进行建模。

模板和韵律符号:

其中代表普通文本符号,代表该位置是韵脚,代表标点符号。如此设计的目的是让模型在读模板的时候,碰到的时候能推测出该处是结尾词、韵脚词,遇到的时候能够知道该输出一个标点符号(也可以保留模板中的标点符号不做改写)。

内部位置符号:

模板中的每个句子都会有一个内部位置序列,特别强调的一点是,我们这里将符号倒序排列,旨在让模型能够学习到句子的一个渐进结束的过程,当遇到的时候句子结束,那么当遇到,的时候模型能够意识到句子生成动态到了尾声。除此之外,句子内部位置信息还能捕捉诸如对联一类文本的前后句对仗位置特征。

句子符号:

对句子位置进行建模,每个符号代表句子在序列中的ID,旨在让模型推测出目前在生成的句子位置,捕捉学习到押韵的句对。例如莎士比亚的十四行诗押韵格式为“ABAB CDCD EFEF GG”,有了句子位置特征模型就会比较容易捕捉到1句和3句押韵,2和4押韵等。

训练的时候,所有的符号以及文本转化成向量后输入到基于Transformer的语言模型中:

为了让模型在auto-regressive的这个动态过程中能够看到模板的未来信息,我们还引入了另一个变量,只融合了之前定义的符号信息,没有输入的文本信息避免了右侧信息泄露:

然后通过两个Attention层对输入的信息进行建模,第一层是auto-regressive建模中的带masking的Attention建模机制:

第二层是能够看到模板全局信息的Attention层:

采用最大似然估计作为优化方法:

2.2 训练中的masking策略

在生成任务中,会遇到给定部分文本,补充其他文本的局部补全需求。例如,在模板中,给定部分句子,补全其他句子;在句子中,知道了部分词,补充其他词。为了使得模型有解决该类需求的能力,我们在预训练阶段,设计了masking策略:模板中保留部分词,模型来学习预测其他的词。

这样模型就可以根据两侧的context信息进行预测生成,近似的有了双向语言模型的能力。


3 Inference方法

我们采用了top-k sampling的解码方法来生成多样性好的结果,通过调节超参k可以平衡多样性和质量。


4 试验

4.1 数据集

中文我们以宋词生成作为预测目标;英文生成莎士比亚十四行诗(sonnet)。

模型分预训练和微调两个阶段。在预训练阶段,中文语料主要是新闻和维基百科,英文语料是维基百科和BooksCorpus。

4.2 评测指标

除了常用的文本生成评测指标如ppl、distinct外,我们还专门设计了度量模板准确率(Format)、韵律准确率(Rhyme)和句子完整度(integrity)的指标。

4.3 结果

表1:宋词生成效果评测
表2:莎士比亚十四行诗效果评测

表1和表2分别是在宋词和十四行诗上的格式生成评测结果,可以看出我们的模型SongNet在ppl、多样性、模板准确率、押韵准确率、句子完整性上都取得了不错的指标。相比宋词,十四行诗的效果差一些,主要原因是十四行诗的训练样本太少(只有100首)。

5 例子

指定模板生成

例子中模型不仅可以根据已有的格式模板(例如鹧鸪天、卜算子)进行生成,还能根据我们自己定义的格式进行宋词生成,而且押韵效果也不错。

预先填入词的生成

得益于masking的训练策略,我们的模型可以进行生成结果的精修,例如生成了一些结果之后,我们可以删掉不满意的部分,让模型重新进行局部补全生成,上面的结果可以看出,效果还是比较令人满意的。

歌词生成

正文开始我们提到可以通过SongNet进行歌曲配词,我们也试验了将《桥边姑娘》这首歌进行重新配词,模型可以轻松的产生成千上万首新的歌词,选择部分结果如下:

夜风扬/残月如霜/又见她在梳妆/一缕柔情凝结成冰凉/谁在空中遥想/她的影子浮现眼眶/孤独飘忽迷茫/怎不愿把这份思量/悄悄藏在心房/天涯两殇/你可曾相望/花落情殇/难道是梦乡/爱过恨过之往/秋水悠长/我却为你痴狂/岁月已成沧桑/寂寞守望/繁华盛放/只有对酒品尝/伴着忧伤流淌/夜风扬/好凄凉/醉看霓虹绽放/谁能看透这几度惆怅/苦涩与绝唱/都变得愈演愈勉强/痛彻愁肠帐/让时光停止流浪/当作路程远航/江山未央/回忆旧模样/地老天荒/何处话凄凉/值得我去吟唱/日出朝阳/映照整个过往/陪看红尘万丈/无力遗忘/寂寞依墙/等到白发苍苍/唯剩满眼悲怆

推荐阅读

这个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

相关内容

在自然语言处理中,另外一个重要的应用领域,就是文本的自动撰写。关键词、关键短语、自动摘要提取都属于这个领域的一种应用。
【文本生成现代方法】Modern Methods for Text Generation
专知会员服务
43+阅读 · 2020年9月11日
【神经语言生成:形式化,方法与评价,70页pdf】
专知会员服务
35+阅读 · 2020年8月8日
【ICML2020-浙江大学】对抗性互信息的文本生成
专知会员服务
43+阅读 · 2020年7月4日
【ACL2020】利用模拟退火实现无监督复述
专知会员服务
13+阅读 · 2020年5月26日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
【哈工大】基于抽取的高考作文生成
专知会员服务
36+阅读 · 2020年3月10日
【论文解读】使用Lattice LSTM的中文NER
深度学习自然语言处理
7+阅读 · 2020年5月16日
“马踏飞”AI机器人实现方案介绍
PaperWeekly
5+阅读 · 2019年8月31日
赛尔原创 | ACL 2019 检索增强的对抗式回复生成
哈工大SCIR
12+阅读 · 2019年7月4日
FINS协议格式及功能码简介
FreeBuf
8+阅读 · 2019年6月9日
强化学习与文本生成
微信AI
41+阅读 · 2019年4月4日
基于 Doc2vec 训练句子向量
AI研习社
6+阅读 · 2018年5月16日
如何使用 RNN 模型实现文本自动生成 | 赠书
人工智能头条
5+阅读 · 2017年12月13日
Arxiv
6+阅读 · 2018年2月24日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
【文本生成现代方法】Modern Methods for Text Generation
专知会员服务
43+阅读 · 2020年9月11日
【神经语言生成:形式化,方法与评价,70页pdf】
专知会员服务
35+阅读 · 2020年8月8日
【ICML2020-浙江大学】对抗性互信息的文本生成
专知会员服务
43+阅读 · 2020年7月4日
【ACL2020】利用模拟退火实现无监督复述
专知会员服务
13+阅读 · 2020年5月26日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
【哈工大】基于抽取的高考作文生成
专知会员服务
36+阅读 · 2020年3月10日
相关资讯
【论文解读】使用Lattice LSTM的中文NER
深度学习自然语言处理
7+阅读 · 2020年5月16日
“马踏飞”AI机器人实现方案介绍
PaperWeekly
5+阅读 · 2019年8月31日
赛尔原创 | ACL 2019 检索增强的对抗式回复生成
哈工大SCIR
12+阅读 · 2019年7月4日
FINS协议格式及功能码简介
FreeBuf
8+阅读 · 2019年6月9日
强化学习与文本生成
微信AI
41+阅读 · 2019年4月4日
基于 Doc2vec 训练句子向量
AI研习社
6+阅读 · 2018年5月16日
如何使用 RNN 模型实现文本自动生成 | 赠书
人工智能头条
5+阅读 · 2017年12月13日
Top
微信扫码咨询专知VIP会员