GPT2自动写作实战

GPT2自动写作实战

  • 实战中使用到的搜索词扩展方法
    • 基于模版的方法
    • 基于模型的方法
      • 基于GPT2自动写作的方法

实战中使用到的搜索词扩展方法

以手机为例,我们做这个任务的目的是为了自动生成指定手机+指定维度的文章/营销文案。例如:生成小米10的外观的文章。

基于模版的方法

基于模版的方法,很容易理解,先根据文章想写的内容范围,制作一批合适的模版,由于文章可能存在定制化需求(例如:生成一篇小米10和荣耀20的 文章,不同手机的参数不同),因此模版中的内容分为通用内容和定制内容,通用内容指的是对不同手机文章都能够适用的内容,不需要做任何改变就可以进行迁移使用,而定制内容指的是针对不同手机的描述内容,一般我们可以将定制内容插槽化,这样模版就由一系列文字+插槽组成,通过对模版填充插槽,可以生成定制化的文章。
此外,填充插槽的过程,也存在很多细节,例如:
(1)提取填充插槽的内容,一般可以通过正则或者NER解决
(2)对填充插槽的内容进行知识理解,一般这么做是为了扩充多样性,例如:手机屏幕大小“14英寸”,那么可以将它知识理解为“大屏幕”,可以对不同类型的插槽进行填充。
(3)…
基于模版的方法生成的文章稳定,不易出错。但是如果在互联网大规模投放的场景下,容易产生生成文章千篇一律的情况。

在制作模版的过程中,可以考虑对不同维度进行制作,例如:手机外观、手机配置 …,将这些维度的模版,在生成文章的过程中,进行组合,那么可以提高文章多样性。但是这样生成的文章,本质上在段落维度上依旧多样性低。

基于模型的方法

考虑到模版生成方法的局限性,我们希望能够生成多样性高的文章,这样就对模型生成方案提出了要求。
基于模型的方法主要分为:
(1)data2text
(2)文本改写
(3)语言模型
其中第一种方案需要大量的对齐语料,即data和text之间关于手机的配置信息需要对齐。对语料的要求高,我们缺乏这样的语料,因此该方案没有上线。
对于第二种方案,现阶段学术界的研究较少。主要有两种方式:
(2.1)本质上和翻译模型类似,是将文章从风格1到风格2的翻译过程。因此同样需要对齐语料。
(2.2)根据句子级别的依存关系分析,解析句子模式,然后改写成可读的句子模式,例如:“魅族被小米打倒了” ->“小米打倒了魅族”。或对其中可替换的单词进行替换,“魅族被小米打倒了”->“魅族被小米击败了”。这种方案,依旧存在多样性问题,同时需要总结大量的语法规则,实用性不强。
因此,在我们最终的落地方案是GPT2语言模型自动写作,具体原理不在这里赘述。

基于GPT2自动写作的方法

我们的目标是能够生成指定手机,指定维度的文章段落,然后通过对段落的组合生成一整篇文章。
众所周知,通过GPT2自动写作时,需要给定前几个字,然后模型会通过“记忆”自动完成后续文章写作。但是实验来看,这么做无法生成指定内容的文章,同时文章内容容易写“飞”,错误率较高。我们可以将第一次没有对数据集进行改造的模型,作为预训练模型。
参考论文《Few-shot Natural Language Generation for Task-Oriented Dialog》对gpt2模型在微调阶段进行改造。通过对数据集以及模型的改造,让模型在计算下一个“字”该生成谁时,对手机和维度进行attention计算,然后再蹦出“字”来,那么这样做就可以解决指定内容的生成了。
虽说可以实现指定内容的自动写作了,但是依旧会存在一些配置参数错误,这个在ai落地中是不能接受的,因此后续还需要加上一些规则校验,不做赘述。

你可能感兴趣的:(GPT2自动写作实战)