pgn model和一些解决oov的方法

本周主要有面对out of vocabulary时的一些方法,以及对应的pgn模型。

1、当我们面对oov问题出现,往往的解决方法有以下:

01 忽略oov  遇到不认识的词,直接忽略,但是这种方法会严重影响文本摘要的意思。

02 用默认的词代替(unk) 但是这种方法会直接造成,摘要内容可读性很差。

03 扩大词表  这种方法,从某种程度上可以缓解。但是也会带来计算量大的问题,以及有一些低频词,是不能很好的学习到其中的意思(因为深度学习是基于统计来学习的)。

04 将token分解为char级别的  这种虽然在某种程度上解决了oov的问题,但是char之间缺乏语义的信息,所以可读性很差。

05 spell check 这种可以改善因为拼写错误而出现的oov问题,但是没有办法解决本身就不在词典中的词。

06 subword的方法  这种利用滑动窗口的方法,可以制造一些词根。但是问题是生成的时候,会产生很多的子词,可读性比较差。

07 Bpe的方法  这种方法是基于词频统计的单个字符进行合并,依次将最高的平吕的字符合并为,对应的词根。这种方法,极大的解决了oov的问题。现在的robert和gpt就是采用的这种方法。

08 wordpiece 这种方法是基于字符与字符之间的最大概率计算得到的词根,在一定程度上也缓解了oov问题,但是其主要基于贪心的方法,这种方法会造成局部最优。不是很好的解决方法。现在的bert就是用的这种方法。

09 unigram的方法,这种方法是基于字符之间的损失性计算的,方法很好,但是用起来还很麻烦,目前这个方向上还在努力。

2、pgn模型

pgn模型是基于seq-seq而进行改造,使得遇到oov问题时,可以从原文中抽取内容。也基于coverage的方法,减少重复使用前面token的概率。也可以基于seq-seq的方法生成新的不在原文中的内容。

01 在输入的部分,先引入embeding,双向gru部分,做为encoder的部分,得到可以代表输入语义的序列enc_output,enc_hidden部分。

02 在attention部分 做了一些许的改动。将coverage的部分,也引入计算attention。coverage表示的是当前状态之前的累积输入信息权重状态。

而且引入了p-gen,它是衡量当前文字是用原文中抽取还是要选择生成。是用context_vector,dec_code输入,decode_hidden三者通过加权计算,经过sigmoid得到的数值。

然后将输入encode_output和decode_hidden,coerage作用,得到了每个时态下的attention分布。

03 decode部分。通过target的输入token,经过embeding 层,经过gru得到当前序列时态的decode_output和隐层时态decode_hidden。将当前序列的输出与encode阶段得到的context_vector合并,最终得到的向量,经过vocab_size层的作用,得到词频的分布。

04 p-gen作用于attention分布和生成分布,在原文抽取和生成中选择,摘要中文字。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值