NLP相关问题-Subword算法简要总结

举报
AI Medicine 发表于 2021/09/29 15:48:57 2021/09/29
【摘要】 与常规方法的区别:传统以空格为主无法处理未知或罕见的词汇不利于学习词缀间的关系,例如love,lovely单个字母粒度又过细Byte Pair Encoding思路:拆分为最小的语义单元,然后依次确定频率最高的单词,循环统计;优点:较好的平衡词汇表大小和所需的token数量缺点:不能提供带概率的多个分片结果算法准备足够大的训练语料确定期望的subword词表大小将单词拆分为字符序列并在末尾添...

与常规方法的区别:

  • 传统以空格为主
  • 无法处理未知或罕见的词汇
  • 不利于学习词缀间的关系,例如lovelovely
  • 单个字母粒度又过细

Byte Pair Encoding

  • 思路:拆分为最小的语义单元,然后依次确定频率最高的单词,循环统计;
  • 优点:较好的平衡词汇表大小和所需的token数量
  • 缺点:不能提供带概率的多个分片结果
  • 算法
    1. 准备足够大的训练语料
    2. 确定期望的subword词表大小
    3. 将单词拆分为字符序列并在末尾添加后缀“ </ w>”,统计单词频率。 本阶段的subword的粒度是字符。 例如,“ low”的频率为5,那么我们将其改写为“ l o w </ w>”:5
    4. 统计每一个连续字节对的出现频率,选择最高频者合并成新的subword
    5. 重复第4步直到达到第2步设定的subword词表大小或下一个最高频的字节对出现频率为1
  • 停止符"</w>"的意义在于表示subword是词后缀。举例来说:"st"字词不加"</w>"可以出现在词首如"st ar",加了"</w>"表明改字词位于词尾,如"wide st</w>",二者意义截然不同。
  • 每次合并后词表可能出现3种变化:
    • +1,表明加入合并后的新字词,同时原来的2个子词还保留(2个字词不是完全同时连续出现)
    • +0,表明加入合并后的新字词,同时原来的2个子词中一个保留,一个被消解(一个字词完全随着另一个字词的出现而紧跟着出现)
    • -1,表明加入合并后的新字词,同时原来的2个子词都被消解(2个字词同时连续出现)
    • 实际上,随着合并的次数增加,词表大小通常先增加后减小。

Word Pieces

  • 思路:和BPE整体类似,基于概率生成新的subword,而不是下一最高频字节对
  • 优点:可以通过深度学习方法,加速生成的过程
  • 缺点:需要先将

Unigram Language Model

  • ULM是另外一种subword分隔算法,它能够输出带概率的多个子词分段。它引入了一个假设:所有subword的出现都是独立的,并且subword序列由subword出现概率的乘积产生。WordPiece和ULM都利用语言模型建立subword词表。

总结自:https://zhuanlan.zhihu.com/p/86965595

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。