查看原文
其他

AACL2022 | “讲好中国故事” ! 一种基于数据增强的中文故事生成框架(竟然有源码)

ShuYini AINLPer 2023-07-11
点击下方卡片,关注‘’AINLPer‘’
更多干货,第一时间送达

引言

 故事生成旨在基于特定输入生成较长的叙述内容,在自然语言处理中也是一项比较有挑战性的任务。之前看过的关于故事生成的模型大多都是针对英文的,而对于中文故事生成模型相对比较少。好巧不巧今天就遇到了,「今天给家分享的这篇文章厉害了,实验结果显示,本文模型框架优于最先进的中文故事生成模型」

背景介绍

 故事生成是一项具有挑战性的任务,主要是因为端到端神经网络模型在长文本生成过程中难以保持逻辑连贯性。「这些挑战在中文故事生成任务中更加突出,主要是因为缺少用于字符分隔的显式分隔符导致歧义程度增加」。另一方面,最近的研究工作旨在通过寻求更有效的框架来改进长文本生成,亦或者通过预培训和额外知识的注入的方式来增强现有框架。

 然而,「本文观察发现当前的生成模型仍然难以生成流畅和连贯的中文故事,这可能是由于在书面中对中文特征捕获效率低下的结果」。例如,汉字有一系列的形态学解析策略,例如“小心地滑”可以理解为“小心地滑”(小心湿地板)或“小心地滑”(小心滑动),其含义高度依赖于上下文。这可能会导致重要的句子角色,如主语、谓语和宾语,难以被神经模型识别和处理。此外,当神经网络学习一个话语的语义时,同义表达式可能会导致混淆,损害生成模型的鲁棒性,例如“游历”、“周游”和“游览”是不同的中文单词,但都表示“旅行”。因此,「我们提出训练神经网络学习上下文中包含的语义级特征,而不是字符的低级特征」。为此,本文提出了一个新的数据增强故事生成框架,如下图所示。

模型框架

「本文基于中国故事生成基准LOT的OutGen任务制定了我们的故事生成任务」。该任务的定义是:给出一个包含任意数量的汉字和事件的汉语短语的无序列表X作为输入。该模型需要生成一个连贯的故事,其中表示故事中的第i个符号(汉字)。

依赖标记

 这里使用HanLP来分析中国故事中的依赖性。与英语不同,汉语依赖分析的基本单位是表示为,其中包含m个标记。因此,一个故事可以表示为对于每个故事,我们首先识别依赖集,然后选择目标标签 插入到原始故事中。这些目标标签是nsubj(表示主语)、root(通常表示动词)、dobj(表示直接宾语)和pobj(表示介词后面的间接宾语)。过程描述如下:是一个带有目标依赖标签的故事。例如,输入“他们游历了所有的国家”(“They visited all the countries”)将被标记,输出将是“他们<nsubj>游历<root>了所有的国家<dobj>”。

语义去噪

 为了帮助神经网络理解隐含在句子中的中文片段语义,「使用SimBERT,输入一个句子,输出一个意义相同的相似句子」,以生成包含大量同义句的训练语料库。因此,我们的目标是训练神经网络抵抗不同汉语表达引入的语义噪声。例如,复合词“去过”和“去了”在汉语中都表示“去”的意思,其中“去”,有不同的辅助字,可能有相同的意思。由于这种现象在中文中普遍存在,「本文强制神经网络去除表面上的这种形式变化,以便更好地理解这些片段的语义」。因此,我们获得了一个用于语义去噪的增强数据语料库: 其中的同义词。是一个与Y不同但输入X相同的故事,我们为每个X生成6个相似的故事,并在扩大的语料库上训练我们的神经生成器。

生成器LongLM

「本文使用一种中文长文本预训练语言模型(LongLM)作为我们框架的基础生成器」。它由基于Transformer的神经块组成,使用编码器-解码器架构来生成故事。训练过程如下: 其中Encoder和Decoder的最大序列长度都设置为512。然后用标准交叉熵损失对LongLM进行微调。

实验快照

 1、如下表所示,本文提出的模型在很大程度上超过了所有的对比基线。 2、下表的消融实验,观察到依赖和语义的增强特征捕获大大改善了原有神经生成器,并且结合这两种方法进一步提高了性能。

推荐阅读

[1]NeurIPS 2022|拯救“中国相声”!预训练模型(PLMs)应用新场景?(含源码)

[2]COLING2022|情感分析?零样本预训练模型调优“Prompt 设计指南”(含源码)

[3]预训练模型微调|一文带你了解Adapter Tuning

[4]预训练模型微调|一文了解预训练模型 Prompt 调优

论文&&源码

Paper:https://arxiv.org/pdf/2210.10618.pdf

Code:https://github.com/hehedaozuiteng/chinese-story-generation

点击下方链接🔗关注我们

每日原创着实不易,麻烦点个再看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存