翻译任务中的BPE词表实践总结

BPE是一种数据压缩算法,使用句子中的常见子词(Subword)来编码数据,其粒度处于字符和单词粒度之间,例如给定单词"looked"和"looking",BPE词表往往会划分出"look","ed”,"ing"这些子词部分,在降低词表大小的同时也能有效编码词义信息。
BPE分词可以很好地平衡词表大小和编码运算复杂度的关系。BPE算法包括词表构建、编码和解码三个主要部分,由于网上已经有很多相关介绍,本文对一些细节问题做一些总结和说明。

词表构建

BPE词表的构建需要以下几个条件:

  1. 充足的无监督语料;
  2. 词表大小size值;
  3. 每个句子的句尾或句首需要添加标识(如’w’或’\w’)。

词表构建时的注意事项:

  1. 带有首尾标记符的子词不能与不带标记符的子词混合计算,因为首尾标记符的目的是统计子词在句首或句尾的分布情况;
  2. 如果某个子词是另一个大子词的一部分,即语料中没有出现该子词单独出现时的情况,则大子词合并后需要将该子词删除。算法迭代时可以对比子词和大子词的频率是否相等,相等说明需要删除,否则就有子词单独出现的情况;
  3. 阈值的选择非常重要,阈值过高可能忽略关键子词,阈值低可能将不相关子词也计入词表,容易造成类似“过拟合”的情况,也会使Word Embedding更加稀疏,不设定阈值时,默认当前切分状态下子词频率都为1时终止,即使词表大小不够。

子词编码

子词编码按如下原则进行:最长匹配,且同长度高频匹配。具体流程如下:

  1. 遍历句子的每一个字符,在词表中寻找以该字符起始的最长匹配子词(注意分首尾);
  2. 找到所有最长匹配字词后,如果这些切分没有歧义(即分段没有交集),则直接切分并将剩下部分继续解码,如果存在歧义则保留频率高的切分
  3. 如果当前字符在词表中没有找到对应值,则按未知词(unk)处理。
    使用上述字词编码方法,可以得到基于当前词表的子词切分序列,用于后续Tokenizer编码。切分后的序列在排除未知词后,也能与训练时训练集的切分状态保持一致。因而由上述算法也不难看出,BPE编码对分词歧义问题还是能有效避免的。

子词解码

按照编码id逐一在词表中查询,句首和句尾的id在匹配出位于句首或句尾的子词后,需要添加空格等分界符。
有关句首和句尾的规则,这里做进一步的说明:
一个词在句中的位置有四种情况:B(句子起始)、M(句中)、E(句子结尾)和S(单独出现)。
如果词表构建时加了句首标记(continuing_subword_prefix),则B、S为一个子词(在词表中一般加前缀‘##’),M、E为另一个子词。
如果词表构建时加了结尾标记(end_of_word_suffix),则E、S为一个子词,B、M为另一个子词。

翻译任务中的BPE词表实践总结相关推荐

  1. 启发式算法在最优化问题求解中的应用与实践

    最优化问题广泛的存在于社会生产活动当中,我们一直努力寻求更高效.更准确的解决方式来应对这类问题.通常,最优化问题可以表述为一种数学规划的形式,对于变量在可行域中的不同组合进行搜索,以得到目标函数的最优 ...

  2. 快手Y-tech:GAN在短视频中的AI特效实践

    导读 近年来,以GAN为代表的生成式技术在学术界取得蓬勃发展.在工业界,基于生成式技术的真实感效果也引领了一批爆款特效和应用.快手Y-tech在国内率先将GAN落地于短视频特效制作,并积累了丰富的实践 ...

  3. 敏捷中的过程改进实践和工具

    敏捷思想中有一条原则指导我们进行过程改进:每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整.由于很多不确定性因素会导致计划失效,比如项目成员增减.技术应用效果.用 ...

  4. 翻译简历中所需的英文词汇

    http://www.studycoop.cn/bbs/dispbbs.asp?boardID=40&ID=103&page=1 翻译简历中所需的英文词汇 1,  JOB OBJECT ...

  5. 百分点认知智能实验室:NLP模型开发平台在舆情分析中的设计和实践(下)

    编者按 NLP模型开发平台是以快速打造智能业务为核心目标,无需机器学习专业知识,模型创建-数据上传-数据标注(智能标注.数据扩充)-模型训练-模型发布-模型校验全流程可视化便捷操作,短时间内即可获得高 ...

  6. 阿里妈妈品牌广告中的 NLP 算法实践

    导读:本次分享的主题为阿里妈妈品牌广告中的 NLP 算法实践,主要内容包括: 1. 品牌广告业务模式与技术架构的简要介绍 2. NLP 算法在品牌搜索广告中的实践,以两个具体的算法问题展开:品牌意图识 ...

  7. Chrome remote debugging protocol在自动化测试中的应用和实践

    从selenium说起 虽然我们的主题是cdp(chrome debug protocol)的应用,但在介绍cdp之前,不得不先从selenium说起,因为这两者有密不可分的关系. 我们知道,在最新的 ...

  8. hive建立内部表映射hbase_快手 HBase 在千亿级用户特征数据分析中的应用与实践...

    分享嘉宾:陈杨 快手 编辑整理:Hoh Xil 内容来源:BigData NoSQL 12th Meetup 出品社区:DataFun 注:欢迎转载,转载请注明出处. 快手建设 HBase 差不多有2 ...

  9. 分布式数据库在金融应用场景中的探索与实践

    分布式数据库在金融应用场景中的探索与实践 刘雷, 郭志军, 马海欣, 赵琼, 胡卉芪, 蔡鹏, 杜洪涛, 周傲英, 李战怀 交通银行软件开发中心,上海 201201 华东师范大学数据科学与工程学院,上 ...

  10. GlobalSight在翻译社区中与开源大放异彩

    Welocalize的翻译管理系统(TMS)GlobalSight已有15多年的历史了. 在2005年之前,它是一种现成的商业产品. 2008年,全球语言服务提供商Welocalize收购了Trans ...

最新文章

  1. 如何设计一个深度学习项目
  2. VMware Workstation 10装Mac OS X 10.9
  3. windows 下使用 Filezilla server 搭建 ftp 服务器
  4. android中颜色参考
  5. Cloud for Customer的Inplace Edit Container
  6. 【转帖】配置管理计划(CM Plan)
  7. python保存的图片不完整
  8. 2019有的图纸打印出来看不清楚_CAD制图初学入门:CAD打印实用技巧
  9. Hyperledger Fabric、Corda和以太坊对比
  10. 中国数字绘图板行业市场供需与战略研究报告
  11. 7.28-说说对javaweb的感想吧
  12. 科普数据迁移技术和方法论
  13. 在CSDN持续写博客半年之后,我的薪资涨了45%
  14. win11家庭中文版 安装docker 步骤
  15. 网吧游戏服务器制作教程,图文教程:网吧无盘系统服务端设置细节
  16. PyQt5试验:基于QTableWidget的应用
  17. 读查理·芒格---《穷查理宝典》
  18. 基于ISTQB定义理解软件测试
  19. 闲聊·前端跨端要不要采用同一套代码
  20. 万能密码为什么能成功

热门文章

  1. Linux操作系统应用领域详解
  2. java爬虫登录_Java爬虫中怎么爬取需要登录的网站
  3. 汇编语言 王爽 【第四版】实验一
  4. ROST情感分析的语法规则_NLP技术之句法分析
  5. 《国民经济行业分类GB/T 4754—2017》官网下载地址
  6. wps无法打印_wps官方下载最新版_wps办公软件官方下载[办公软件]
  7. 新visio2019专业版最新功能和激活密钥!
  8. python网上在线编程_在线python编程
  9. java-用cmd运行java命令
  10. php在线考试系统详细步骤