引言
语言是人类交流的主要工具,幽默是其中最具吸引力的部分之一。自然语言生成(NLG),已被广泛用于对话系统、聊天机器人、机器翻译以及计算机辅助创作等。然而,「在这个预训练语言模型的时代,相声幽默段子生成方向的研究却相对较少。为此本文初步测试NLG能否能像人类一样产生幽默相声段子」。
NeurIPS2022接受论文已更新,下载方式回复:历年NeurIPS
背景介绍
人工智能(AI)已广泛应用于自然语言处理(NLP)、计算机视觉(CV)、语音、机器人以及生物学等领域。在NLP中,大规模预训练语言模型(PLMs)显着改善了许多自然语言任务,包括文本分类、问答和自然语言生成。尽管它对人类社区的技术贡献已被广泛探索,但其社会或文化影响却未得到充分研究。
为了探索PLMs在文化上面作用,本文利用预训练语言模型的生成能力来拯救濒临灭绝的文化遗产,即中国相声。我们相信预训练语言模型生成的多样性可以丰富中国相声,这可能有助于防止它灭绝。从更广泛的角度来看,「我们的目标是在PLMs(尤其是大规模GPT)的背景下测试“人工智能如何变得有趣”的能力」。
幽默植根于汉语,起源于2000年前中国历史学家司马迁所著的《史记》中,有这么一章名为《滑稽列传》。从此,「幽默成为汉语不可分割的组成部分」。该文章旨在探索中国喜剧相声的一种传统表演艺术,称为“相声”,它有非常悠久的历史,起源于中国北方,大约从1800年开始。它最初是街头表演的一种形式,结合了讲笑话、喜剧笑话、模仿或借鉴其他表演艺术(如京剧、梆子、民间小调等),所有这些都是为了让观众发笑。相声剧本(除了独唱演员)通常是多回合对话。它通常包括两个(或更多)表演者在多个回合中讨论一个主题(在
数据集中一个主题平均72轮对话),通常从10到20分钟不等。相声剧本的特点是:
- 1)「以幽默为导向」:旨在通过畅所欲言使观众发笑。
- 2)「语言风格新颖」:相声语言本身是一种快速的、戏谑的、互动性很强的风格。更有趣的是,它有丰富的双关语和典故。
- 3)「文化基础」:它通常不仅涉及当地的日常生活(特别是在中国北方,如北京),而且涉及中国从公元前3000年到现在的漫长历史事件。有趣的是,它在某些时期通常使用北京话(与普通话相近)。
- 4)「资源较低」:相声生成任务可能依赖于资源相对较低的数字化脚本。
其中下表为相声脚本示例。
幽默段子的产生是一项具有挑战性的任务,因为我们可能不知道是什么让一个笑话有趣。用算法解决这个问题需要对语义有深刻的理解。如果在中国相声中考虑到文化和其他上下文线索,这就变得更具挑战性。从实际操作角度来看,数据准备通常要比算法和模型设计更要提前,因为新模型(特别是大规模)在数据准备好之前无法很好地进行评估。
基于以上考虑,我们从互联网上收集了许多相声脚本。「建立了一个新的数据集,包含大量数字化的中国相声剧本(简称
),该数据集可通过开放资源许可(Apache 2.0)公开获得。对各种生成方法进行了基准测试,其中包括从头开始训练Seq2seq生成、微调的中型PLM和大型PLM(有微调和不微调)」。
任务设计
根据表演者的数量,相声通常是两个表演者之间的对话,称为“对口”,或者很少是一个单独表演者的独白,称为“单口”(就像西方的单口喜剧),或者更少的是,更多的表演者组成的团体表演,称为“群口”。我们以'对口'相声为例。双人表演通常包括两个角色,一个叫“捧哏”(简称“捧”),另一个叫“逗哏”。“逗哏”的目标是通过说话和动作来表演一种滑稽的方式。“捧”是辅助角色,使对话更加流畅和清晰。对话由一个迭代的话语序列组成:
- 1)Seq2seq 话语生成任务:它可以被视为一个seq-to-seq任务,在给定先前话语的情况下预测下一个话语;
- 2)下一个词生成任务:它也可以认为是一个不考虑话语边界的典型语言模型,即预测下一个词的原始语言模型。
实验结果
1、结果如下表所示。「GPT-3在大多数指标上优于其他模型」(除了ROUGE-L和Distinct-1/2);这可能是由于它使用大量的普通语料库进行训练,因此它可以根据语料库中的相似文本生成流畅的文本。
2、「对各种生成方法进行了基准测试」,其中包括Seq2seq、UniLM、GPT、GPT-3、GPT-3-finetuned。
3、「人工评估相声脚本生成质量」。可以发现原始脚本达到了最好的综合质量,这可能证明人类的创造力和幽默能力比SOTA预先训练的语言模型要好得多。在这些预先训练的模型中,GPT-3及其微调版本获得的一般质量分数显著高于其他模型。
4、本文结论:1)大规模的预训练大大提高了相声的生成质量;2)最好的PLM生成的相声脚本只有65%的人类创造相声的质量。最终结论是,「使用大规模plm可以在很大程度上改进幽默生成,但它仍处于初级阶段」。
论文&&源码
Paper:https://arxiv.org/pdf/2207.00735.pdf
Code:https://github.com/anonNo2/crosstalk-generation