Tokenizer
首先,这里介绍我们对 Tokenizer 的完善工作。mT5 使用的 Tokenizer 是 sentencepiece [2] ,这是一个 C++ 所写的分词库,具有高效轻便的特点,但是很遗憾,对于中文来说它并不是特别友好,主要体现为:
1. sentencepiece 会把某些全角符 强制转化为半角符 ,这在某些情况下是难以接受的,而且还可能影响任务的评测结果;
2. sentencepiece 内置的算法虽然有能力分出中文词来,但对于中文分词来说其实还是不够智能的;
3. sentencepiece 用 C++ 写的,虽然开源了,但对于用惯 Python 的人来说 C++ 就相当于黑箱,难以阅读源码,改起来也不容易。
除了用这个新 Tokenizer 来训练 T5 PEGASUS 外,我们还用它来重新训练了一版 WoBERT 模型(WoBERT+),也欢迎读者尝试。
https://github.com/ZhuiyiTechnology/WoBERT
具体来说,假设一个文档有 n 个句子,我们从中挑出大约 n/4 个句子(可以不连续),使得这 n/4 个句子拼起来的文本,跟剩下的 3n/4 个句子拼起来的文本,最长公共子序列尽可能长,然后我们将 3n/4 个句子拼起来的文本视为原文,n/4 个句子拼起来的文本视为摘要,这样就构成了一个“(原文, 摘要)”的伪摘要数据对了,就用这些数据对去训练 Seq2Seq 模型即可。
注意,如果文档里没有重复句子的话,那么原文跟摘要的句子是不会有交集的,所以这样的生成任务并非是原文的简单复制,因此还是有一定难度的。
搜索算法则是通过如下的贪心算法逐步搜索至满足长度要求:
1. 先找出 1 个句子,使得它跟生成的 n-1 个句子的最长公共子序列最长;
2. 假设已经找到了 k 个句子,那么继续找第 k+1 个句子,使得这 k+1 个句子拼起来的文本,跟剩下的 n-k-1 个句子拼起来的文本的最长公共子序列最长。
实验与评测
在 CSL 和 LCSTS 两个文本生成任务上,T5 PEGASUS 是我们已知的所有模型中的 SOTA:
哪怕样本标注样本降低到 10 个,T5 PEGASUS 依然可以微调出一个摘要(标题)生成模型出来,性能显著超过其他模型。在 LCSTS上,T5 PEGASUS 具有类似的小样本学习效果,只不过非 T5 PEGASUS 模型效果实在太差了,所以就没有把表格整理在此了。
简单的总结
[1] https://arxiv.org/abs/1912.08777
[2] https://github.com/google/sentencepiece
[3] https://kexue.fm/archives/7758
[4] https://arxiv.org/abs/1912.08777
[5] https://kexue.fm/archives/bert4keras
更多阅读
#投 稿 通 道#
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢strong>答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
来稿标准:
投稿邮箱:
投稿邮箱:hr@paperweekly.site
所有文章配图,请单独在附件中发送
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34188 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!