翻译任务中的BPE词表实践总结
翻译任务中的BPE词表实践总结
BPE是一种数据压缩算法,使用句子中的常见子词(Subword)来编码数据,其粒度处于字符和单词粒度之间,例如给定单词"looked"和"looking",BPE词表往往会划分出"look","ed”,"ing"这些子词部分,在降低词表大小的同时也能有效编码词义信息。
BPE分词可以很好地平衡词表大小和编码运算复杂度的关系。BPE算法包括词表构建、编码和解码三个主要部分,由于网上已经有很多相关介绍,本文对一些细节问题做一些总结和说明。
词表构建
BPE词表的构建需要以下几个条件:
- 充足的无监督语料;
- 词表大小size值;
- 每个句子的句尾或句首需要添加标识(如’w’或’\w’)。
词表构建时的注意事项:
- 带有首尾标记符的子词不能与不带标记符的子词混合计算,因为首尾标记符的目的是统计子词在句首或句尾的分布情况;
- 如果某个子词是另一个大子词的一部分,即语料中没有出现该子词单独出现时的情况,则大子词合并后需要将该子词删除。算法迭代时可以对比子词和大子词的频率是否相等,相等说明需要删除,否则就有子词单独出现的情况;
- 阈值的选择非常重要,阈值过高可能忽略关键子词,阈值低可能将不相关子词也计入词表,容易造成类似“过拟合”的情况,也会使Word Embedding更加稀疏,不设定阈值时,默认当前切分状态下子词频率都为1时终止,即使词表大小不够。
子词编码
子词编码按如下原则进行:最长匹配,且同长度高频匹配。具体流程如下:
- 遍历句子的每一个字符,在词表中寻找以该字符起始的最长匹配子词(注意分首尾);
- 找到所有最长匹配字词后,如果这些切分没有歧义(即分段没有交集),则直接切分并将剩下部分继续解码,如果存在歧义则保留频率高的切分;
- 如果当前字符在词表中没有找到对应值,则按未知词(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词表实践总结相关推荐
- 启发式算法在最优化问题求解中的应用与实践
最优化问题广泛的存在于社会生产活动当中,我们一直努力寻求更高效.更准确的解决方式来应对这类问题.通常,最优化问题可以表述为一种数学规划的形式,对于变量在可行域中的不同组合进行搜索,以得到目标函数的最优 ...
- 快手Y-tech:GAN在短视频中的AI特效实践
导读 近年来,以GAN为代表的生成式技术在学术界取得蓬勃发展.在工业界,基于生成式技术的真实感效果也引领了一批爆款特效和应用.快手Y-tech在国内率先将GAN落地于短视频特效制作,并积累了丰富的实践 ...
- 敏捷中的过程改进实践和工具
敏捷思想中有一条原则指导我们进行过程改进:每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整.由于很多不确定性因素会导致计划失效,比如项目成员增减.技术应用效果.用 ...
- 翻译简历中所需的英文词汇
http://www.studycoop.cn/bbs/dispbbs.asp?boardID=40&ID=103&page=1 翻译简历中所需的英文词汇 1, JOB OBJECT ...
- 百分点认知智能实验室:NLP模型开发平台在舆情分析中的设计和实践(下)
编者按 NLP模型开发平台是以快速打造智能业务为核心目标,无需机器学习专业知识,模型创建-数据上传-数据标注(智能标注.数据扩充)-模型训练-模型发布-模型校验全流程可视化便捷操作,短时间内即可获得高 ...
- 阿里妈妈品牌广告中的 NLP 算法实践
导读:本次分享的主题为阿里妈妈品牌广告中的 NLP 算法实践,主要内容包括: 1. 品牌广告业务模式与技术架构的简要介绍 2. NLP 算法在品牌搜索广告中的实践,以两个具体的算法问题展开:品牌意图识 ...
- Chrome remote debugging protocol在自动化测试中的应用和实践
从selenium说起 虽然我们的主题是cdp(chrome debug protocol)的应用,但在介绍cdp之前,不得不先从selenium说起,因为这两者有密不可分的关系. 我们知道,在最新的 ...
- hive建立内部表映射hbase_快手 HBase 在千亿级用户特征数据分析中的应用与实践...
分享嘉宾:陈杨 快手 编辑整理:Hoh Xil 内容来源:BigData NoSQL 12th Meetup 出品社区:DataFun 注:欢迎转载,转载请注明出处. 快手建设 HBase 差不多有2 ...
- 分布式数据库在金融应用场景中的探索与实践
分布式数据库在金融应用场景中的探索与实践 刘雷, 郭志军, 马海欣, 赵琼, 胡卉芪, 蔡鹏, 杜洪涛, 周傲英, 李战怀 交通银行软件开发中心,上海 201201 华东师范大学数据科学与工程学院,上 ...
- GlobalSight在翻译社区中与开源大放异彩
Welocalize的翻译管理系统(TMS)GlobalSight已有15多年的历史了. 在2005年之前,它是一种现成的商业产品. 2008年,全球语言服务提供商Welocalize收购了Trans ...
最新文章
- 如何设计一个深度学习项目
- VMware Workstation 10装Mac OS X 10.9
- windows 下使用 Filezilla server 搭建 ftp 服务器
- android中颜色参考
- Cloud for Customer的Inplace Edit Container
- 【转帖】配置管理计划(CM Plan)
- python保存的图片不完整
- 2019有的图纸打印出来看不清楚_CAD制图初学入门:CAD打印实用技巧
- Hyperledger Fabric、Corda和以太坊对比
- 中国数字绘图板行业市场供需与战略研究报告
- 7.28-说说对javaweb的感想吧
- 科普数据迁移技术和方法论
- 在CSDN持续写博客半年之后,我的薪资涨了45%
- win11家庭中文版 安装docker 步骤
- 网吧游戏服务器制作教程,图文教程:网吧无盘系统服务端设置细节
- PyQt5试验:基于QTableWidget的应用
- 读查理·芒格---《穷查理宝典》
- 基于ISTQB定义理解软件测试
- 闲聊·前端跨端要不要采用同一套代码
- 万能密码为什么能成功