text edit model FELIX的理解与python实现

FELIX

Felix出自论文Felix: Flexible Text Editing Through Tagging and Insertion,被2020的ACL收录,之前看到苏神对于NAT的一个回复,即使是在相同BLEU或rouge-L的指标下,自回归模型(AT)的生成效果基本都会比非自回归模型(NAT)的效果要好,单从效果上面来说,目前的AT模型已经能够表现得很好了,然而AT的瓶颈就在于生成效率,如果能从解码效率方面进行改进AT肯定比NAT更好,但是要改进AT的解码效率,用串行的方式提升20倍的效率仍然是一个非常困难的点,因此大多数研究仍然是基于NAT,本着更快生成文本的目标,本文用简单的代码对FELIX进行了复现,并在中文短文本生成数据集CSL上进行了实验,模型开源地址在FELIX,模型框架采用bert4keras,配置好环境后可以快速执行

模型框架

FELIX
FELIX的整体模型框架如上图所示,其主要组成部分包括TAGGER,POINTER和MASKED LANGUAGE MODEL。

TAGGER

TAGGER模型,顾名思义就是一个标签判别模型,在这篇论文中,作者为每一个字符设计了3种类型的标签,KEEP,DELETE,KEEP|number_insert,其中number_insert代表当前位置需要插入多少个字,使得source能够重构成target

POINTER

POINTER模型是attention的简化版,其公式为 Q ( X ) K ( X ) T ∈ R T × T \mathcal{Q}(X)\mathcal{K}(X)^T \in\mathcal{R}^{T\times T} Q(X)K(X)TRT×T,为每一个字预测其下一个字所在位置,因此这就需要在构建数据集的时候,构建出位置标签。作者采用的方式是首先用字典记录每个字出现的位置,然后根据target中每个字出现的先后位置,在字典中选择相同字最近的位置,为source中每一个字确定下一个字的位置。例如

source: 2033年,侵略地球的可能是外星人
target: 外星人侵略地球
dict={
‘2’: [0],
‘0’:[1],
‘3’: [2,3],
‘年’: [4],
‘,’: [5],
‘侵’: [6],
‘略’: [7],
‘地’: [8],
‘球’: [9],
“的”: [10],
‘可’: [11],
‘能’: [12],
‘是’: [13],
‘外’: [14],
‘星’: [15],
‘人’: [16]
}

那么对于source来说,其index为14 0 0 0 0 0 7 8 9 0 0 0 0 0 15 16 6 ,source的目标顺序为14->15->16->6->7->8->9->0
由于存在target中的字在source中不存在的情况,因此会在index后面加上一个added_phrase,用于辅助TAGGER生成对应标签KEEP|number_insert

MASKED lANGUAGE MODEL

根据TAGGER和POINTER模型,可以生成目标序列以及在相应位置需要insert字的个数,用[MASK]进行表示。MLM模型的作用就是像BERT一样对MASK的地方进行预测相应位置的字。

模型的结果在开源地址中,也可以直接运行进行复现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值