CN111178095B - 一种面向子词切分的BPE-Learn加速方法 - Google Patents
一种面向子词切分的BPE-Learn加速方法 Download PDFInfo
- Publication number
- CN111178095B CN111178095B CN201911323647.7A CN201911323647A CN111178095B CN 111178095 B CN111178095 B CN 111178095B CN 201911323647 A CN201911323647 A CN 201911323647A CN 111178095 B CN111178095 B CN 111178095B
- Authority
- CN
- China
- Prior art keywords
- byte
- sub
- frequency
- byte pair
- main process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Machine Translation (AREA)
Abstract
本发明公开一种面向子词切分的BPE‑Learn加速方法,步骤为:读入训练数据,统计每个词在语料中出现的次数,记为词汇表;将词汇表切分成N份子表;子进程中以字符为单位作为字节对统计的基本单元;多个子进程同时开始统计各自子表中的字节对,并通过通讯队列告知主进程统计结束;主进程读取临时文件汇总每个子进程的统计结果,挑选频次最高的字节对,保存到文件中,同时进行剪枝;子进程等待接收主进程信号,对不切分字节对频次置零,重新统计并更新来源词的字节对频次返还给主进程;主进程保存的文件中的字节对满足数量要求时结束统计。本发明缩短了训练前子词切分中的字节对统计时间,在神经机器翻译模型训练中,提高了GPU使用率。
Description
技术领域
本发明涉及机器翻译领域,具体为一种面向子词切分的BPE-Learn加速方法。
背景技术
神经机器翻译(NMT)是一种以词为最小单元的机器翻译技术。由于NMT系统涉及巨量的计算复杂度,系统为了保持资源和时耗在一个可用的范围内,限制了NMT词表为一个固定大小的词汇表,未曾出现在训练语料中的词汇称为未登录词(OOV)。对于未登录词,NMT系统使用统一标记UNK来代替,这种方式导致未登录翻译的译文不准确,甚至会破坏整句的译文结构。为了避免未登录词的出现,研究者提出了子词切分方法BPE。经过子词切分之后,词被切分成了更小粒度的子词,未登录词会被切分成已存在的多个子词形式。
BPE方法基于统计的思想,分别统计训练语料中原语和目标语的字节对出现频次,根据统计结果对原语和目标语分别进行子词切分,切分过程中保留高频字节对,切分低频字节对。传统BPE算法主要包括以下两个步骤:
1)BPE-Learn:统计单语语料中词汇内部的字节对频次,将统计结果写出到文件bpe.code中;
2)BPE-Apply:加载bpe.code文件,根据字节对的频次高低切分子词。
在BPE算法的步骤1)中,BPE-Learn用于统计字节对频次,当训练语料的数据量增长时,统计所需要的计算量将翻倍增长。神经机器翻译的训练依赖于大规模的训练语料,很多优异的语种训练数据高达千万级甚至是亿级。在这种海量的数据下,BPE-Learn过程会消耗大量的时间,长达几个小时甚至十几个小时,使得训练前的数据预处理过程占用了大量的时间,同时对宝贵的GPU资源也造成了一定的浪费。
BPE-Learn是在全量语料下进行统计,不允许将数据分割统计,普通的多进程同步加速方式只能获取局部的字节对频次,并不能代表全局的最高频次。
因此传统的BPE-Learn算法无法在海量数据下短时间内完成字节对统计,也不能通过数据分割等方式实现字节对统计的多进程加速。
发明内容
针对神经机器翻译训练过程中,大数据下BPE-Learn算法严重耗时的不足,本发明要解决的问题是提供一种多进程策略保证字节对统计结果一致并缩减BPE-Learn统计时间的面向子词切分的BPE-Learn加速方法。
为解决上述技术问题,本发明采用的技术方案是:
本发明一种面向子词切分的BPE-Learn加速方法,包括以下步骤:
1)读入训练数据,按照空格切分数据,统计每个词在语料中出现的次数,记为词汇表;
2)将词汇表切分成N份子表,为每份子表创建独立子进程,用于字节对统计,并为每个子进程分配通信队列,用于与主进程之间交互;
3)子进程中首先以字符为单位作为字节对统计的基本单元;
4)多个子进程同时开始统计各自子表中的字节对,统计任意相邻单元的字节对频次,并保留每个字节对的来源词汇,最后将字节对频次结果写出到临时文件中,并通过通讯队列告知主进程统计结束;
5)主进程读取临时文件汇总每个子进程的统计结果,挑选频次最高的字节对,作为首个不切分字节对,保存到文件中,同时根据统计情况向子进程传递信号进行剪枝;如果保存的字节对数量达到期望的数量则结束统计,否则将该字节对传递给每个子进程;
6)子进程等待接收主进程信号,对不切分字节对频次置零,并视为整体单元,查找该字节对的来源词汇,重新统计并更新来源词的字节对频次,通过通讯队列返还给主进程;
7)重复步骤5)至步骤6),直到主进程保存的文件中的字节对满足数量要求时结束统计,实现了BPE-Learn方法的加速。
步骤3)中,首先以字符为单位,将词按字符切分为单元列表,通过遍历该列表即可统计相邻单元;在每个初始的单元列表末尾添加统一标记</w>。
步骤4)中,统计任意相邻单元的字节对频次,具体为:
401)子表排序,将子表中的词汇按照词频从大到小排序;
402)遍历子表词汇,遍历每个词的单元列表,取相邻单元组成字节对;
403)将字节对在词中的次数乘该词的频率,得到字节对总频次。
步骤5)中主进程得到最高频次字节对后,根据频次大小做了适当的剪枝,具体步骤如下:
501)汇总子进程统计结果,挑选频次最高的字节对;
502)如果是第一次统计结束,计算最高频次值除以10取整,作为剪枝的阈值;在以后的统计中,比较最高频次是否小于已存在的阈值,如果小于已存在的阈值则发送信号要求子进程恢复剪枝数据后重新统计;
503)得到大于阈值的最高频字节对后,遍历所有其余字节对,将频次小于阈值的字节对传递给子进程,要求子进程进行字节对删减实现剪枝。
步骤6)中子进程需要根据主进程传递的不同信号完成不同的任务,具体为:
601)当接收到主进程传递的剪枝信号时,遍历需要剪枝的字节对,并将自己其从自己的统计结果中删除,删除前需要备份;
602)当接收到主线程传递的重新统计信号时,恢复备份中的字节对,再重新统计字节对频次。
本发明具有以下有益效果及优点:
1.本发明方法应用于大量数据的神经机器翻译训练中,支持多进程同步字节对统计,有效缩短了训练前子词切分中的字节对统计时间,在神经机器翻译模型训练中,提高了GPU使用率。
附图说明
图1为本发明初始化单元列表样例图;
图2为本发明方法的结构图;
图3为本发明字节对统计与合并样例图。
具体实施方式
下面结合说明书附图对本发明作进一步阐述。
本发明提出一种面向子词切分的BPE-Learn加速方法,使用多进程统计与交互模式加速BPE-Learn算法,解决神经机器翻译训练中子词切分严重耗时的问题。
如图2所示,本发明BPE-Learn算法加速,包括以下步骤:
1)读入训练数据,按照空格切分数据,统计每个词在语料中出现的次数,记为词汇表;
2)将词汇表切分成N份子表,为每份子表创建独立子进程,用于字节对统计,并为每个子进程分配通信队列,用于与主进程之间交互;
3)子进程中首先以字符为单位作为字节对统计的基本单元;
4)多个子进程同时开始统计各自子表中的字节对,统计任意相邻单元的字节对频次,并保留每个字节对的来源词汇,最后将字节对频次结果写出到临时文件中,并通过通讯队列告知主进程统计结束;
5)主进程读取临时文件汇总每个子进程的统计结果,挑选频次最高的字节对,作为首个不切分字节对,保存到文件中,同时根据统计情况向子进程传递信号进行剪枝;如果保存的字节对数量达到期望的数量则结束统计,否则将该字节对传递给每个子进程;
6)子进程等待接收主进程信号,对不切分字节对频次置零,并视为整体单元,查找该字节对的来源词汇,重新统计并更新来源词的字节对频次,通过通讯队列返还给主进程;
7)重复步骤5)至步骤6),直到主进程保存的文件中的字节对满足数量要求时结束统计,实现了BPE-Learn方法的加速。
如图1所示样例,步骤3)中首先以字符为单位,为了便于统计相邻单元的字符,将词按字符切分为单元列表,通过遍历该列表即可统计相邻单元。为了能够表示词尾信息,在每个初始的单元列表末尾添加统一标记</w>。
步骤4)中,统计字节对的详细步骤如下:
401)子表排序,将子表中的词汇按照词频从大到小排序;
402)遍历子表词汇,遍历每个词的单元列表,取相邻单元组成字节对;
403)将字节对在词中的次数乘该词的频率,得到字节对总频次。
步骤5)中主进程得到最高频次字节对后,根据频次大小做了适当的剪枝,具体步骤如下:
501)汇总子进程统计结果,挑选频次最高的字节对;
502)如果是第一次统计结束,计算最高频次值除以10取整,作为剪枝的阈值;在以后的统计中,比较最高频次是否小于已存在的阈值,如果小于已存在的阈值则发送信号要求子进程恢复剪枝数据后重新统计;
503)得到大于阈值的最高频字节对后,遍历所有其余字节对,将频次小于阈值的字节对通过文件传递给子进程,要求子进程进行字节对删减实现剪枝。
步骤6)中,子进程需要根据主进程传递的不同信号完成不同的任务,样例如图3所示,子进程接收到不切分字节对后,将其视为整体单元,将单元列表中的这两个单元合并成一个单元,形成新的单元列表用于统计新的字节对频次,具体步骤如下:
601)当接收到主进程传递的剪枝信号时,遍历需要剪枝的字节对,并将自己其从自己的统计结果中删除,删除前需要备份;
602)当接收到主线程传递的重新统计信号时,恢复备份中的字节对,再重新统计字节对频次。
本发明方法使用多个子进程同时统计子表的字节对频次,由于子表词数要远远小于总表,所以每个子进程统计子表的字节对频次更快,同理子进程在使用高频字节对更新基本单元也更快。子表的频次不足以表现语料全部字节对情况,因此主进程汇总所有子进程的统计结果再查找最高频字节对,利用进程通讯队列传递交互信号,利用文件作为字节对频次和要剪枝字节对的传输媒介,当传输内容多时文件读取要快于进程通讯队列。
使用5千万句小写化英文数据作为字节对统计的输入数据,测试前5轮时间对比结果如下表:
统计轮数 | 最高频字节对 | 传统法耗时(秒) | 本发明耗时(秒) |
1 | (t,h) | 14.155849 | 5.049770 |
2 | (i,n) | 1.172236 | 0.487818 |
3 | (th,e</w>) | 4.438514 | 0.543465 |
4 | (a,n) | 0.688112 | 0.024234 |
5 | (r,e) | 5.057595 | 0.625184 |
随着轮数的增加,每轮统计消耗的时间逐渐减少,最终完成1万轮时的时间差距没有前5轮那么明显,最终传统方法耗时285.566秒,本发明方法耗时202.384,有明显的加速效果。
Claims (3)
1.一种面向子词切分的BPE-Learn加速方法,其特征在于包括以下步骤:
1)读入训练数据,按照空格切分数据,统计每个词在语料中出现的次数,记为词汇表;
2)将词汇表切分成N份子表,为每份子表创建独立子进程,用于字节对统计,并为每个子进程分配通信队列,用于与主进程之间交互;
3)子进程中首先以字符为单位作为字节对统计的基本单元;
4)多个子进程同时开始统计各自子表中的字节对,统计任意相邻单元的字节对频次,并保留每个字节对的来源词汇,最后将字节对频次结果写出到临时文件中,并通过通讯队列告知主进程统计结束;
5)主进程读取临时文件汇总每个子进程的统计结果,挑选频次最高的字节对,作为首个不切分字节对,保存到文件中,同时根据统计情况向子进程传递信号进行剪枝;如果保存的字节对数量达到期望的数量则结束统计,否则将该字节对传递给每个子进程;
6)子进程等待接收主进程信号,对不切分字节对频次置零,并视为整体单元,查找该字节对的来源词汇,重新统计并更新来源词的字节对频次,通过通讯队列返还给主进程;
7)重复步骤5)至步骤6),直到主进程保存的文件中的字节对满足数量要求时结束统计,实现了BPE-Learn方法的加速;
步骤4)中,统计任意相邻单元的字节对频次,具体为:
401)子表排序,将子表中的词汇按照词频从大到小排序;
402)遍历子表词汇,遍历每个词的单元列表,取相邻单元组成字节对;
403)将字节对在词中的次数乘该词的频率,得到字节对总频次;
步骤5)中主进程得到最高频次字节对后,根据频次大小做了适当的剪枝,具体步骤如下:
501)汇总子进程统计结果,挑选频次最高的字节对;
502)如果是第一次统计结束,计算最高频次值除以10取整,作为剪枝的阈值;在以后的统计中,比较最高频次是否小于已存在的阈值,如果小于已存在的阈值则发送信号要求子进程恢复剪枝数据后重新统计;
503)得到大于阈值的最高频字节对后,遍历所有其余字节对,将频次小于阈值的字节对传递给子进程,要求子进程进行字节对删减实现剪枝。
2.根据权利要求1所述的面向子词切分的BPE-Learn加速方法,其特征在于:
步骤3)中,首先以字符为单位,将词按字符切分为单元列表,通过遍历该列表即可统计相邻单元;在每个初始的单元列表末尾添加统一标记</w>。
3.根据权利要求1所述的面向子词切分的BPE-Learn加速方法,其特征在于步骤6)中子进程需要根据主进程传递的不同信号完成不同的任务,具体为:
601)当接收到主进程传递的剪枝信号时,遍历需要剪枝的字节对,并将自己其从自己的统计结果中删除,删除前需要备份;
602)当接收到主线程传递的重新统计信号时,恢复备份中的字节对,再重新统计字节对频次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911323647.7A CN111178095B (zh) | 2019-12-20 | 2019-12-20 | 一种面向子词切分的BPE-Learn加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911323647.7A CN111178095B (zh) | 2019-12-20 | 2019-12-20 | 一种面向子词切分的BPE-Learn加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111178095A CN111178095A (zh) | 2020-05-19 |
CN111178095B true CN111178095B (zh) | 2023-06-27 |
Family
ID=70657613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911323647.7A Active CN111178095B (zh) | 2019-12-20 | 2019-12-20 | 一种面向子词切分的BPE-Learn加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111178095B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256841B (zh) * | 2020-11-26 | 2024-05-07 | 支付宝(杭州)信息技术有限公司 | 文本匹配和对抗文本识别方法、装置及设备 |
CN113255337B (zh) * | 2021-05-21 | 2024-02-02 | 广州欢聚时代信息科技有限公司 | 词表构建方法、机器翻译方法及其装置、设备与介质 |
CN115130472B (zh) * | 2022-08-31 | 2023-02-21 | 北京澜舟科技有限公司 | 一种基于bpe的子词分割方法、系统及可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7945527B2 (en) * | 2006-09-21 | 2011-05-17 | Aebis, Inc. | Methods and systems for interpreting text using intelligent glossaries |
CN108197116B (zh) * | 2018-01-31 | 2021-05-28 | 天闻数媒科技(北京)有限公司 | 一种中文文本分词的方法、装置、分词设备及存储介质 |
CN109508462B (zh) * | 2018-10-25 | 2020-07-17 | 内蒙古工业大学 | 一种基于编码器-解码器的神经网络蒙汉机器翻译方法 |
US10388272B1 (en) * | 2018-12-04 | 2019-08-20 | Sorenson Ip Holdings, Llc | Training speech recognition systems using word sequences |
CN109871550B (zh) * | 2019-01-31 | 2022-11-22 | 沈阳雅译网络技术有限公司 | 一种基于后处理技术的提高数字翻译质量的方法 |
CN110502759B (zh) * | 2019-07-15 | 2022-07-19 | 昆明理工大学 | 融入分类词典的汉越混合网络神经机器翻译集外词处理方法 |
-
2019
- 2019-12-20 CN CN201911323647.7A patent/CN111178095B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111178095A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111178095B (zh) | 一种面向子词切分的BPE-Learn加速方法 | |
CN108875040B (zh) | 词典更新方法及计算机可读存储介质 | |
CN102184169B (zh) | 用于确定字符串信息间相似度信息的方法、装置和设备 | |
US20180068652A1 (en) | Apparatus and method for training a neural network language model, speech recognition apparatus and method | |
CN111753914A (zh) | 模型优化方法和装置、电子设备及存储介质 | |
CN103678282A (zh) | 一种分词方法及装置 | |
CN107688630B (zh) | 一种基于语义的弱监督微博多情感词典扩充方法 | |
CN110928981A (zh) | 一种文本标签体系搭建及完善迭代的方法、系统及存储介质 | |
CN104951469A (zh) | 优化语料库的方法和装置 | |
CN113836925A (zh) | 预训练语言模型的训练方法、装置、电子设备及存储介质 | |
CN107436865B (zh) | 一种词对齐训练方法、机器翻译方法及系统 | |
CN113408306A (zh) | 翻译方法及分类模型的训练方法、装置、设备和存储介质 | |
CN114254077A (zh) | 一种基于自然语言对稿件完整性的评估方法 | |
CN113901214A (zh) | 表格信息的提取方法、装置、电子设备及存储介质 | |
CN114706894A (zh) | 信息处理方法、装置、设备、存储介质及程序产品 | |
CN114153802A (zh) | 一种基于Bert和残差自注意力机制的政务文件主题分类方法 | |
CN110263345B (zh) | 关键词提取方法、装置及存储介质 | |
CN115238701B (zh) | 基于子词级别适应器的多领域命名实体识别方法和系统 | |
CN111492364B (zh) | 数据标注方法、装置及存储介质 | |
CN111859924B (zh) | 一种基于word2vec模型构建词网的方法和装置 | |
CN114611625A (zh) | 语言模型训练、数据处理方法、装置、设备、介质及产品 | |
CN110826343B (zh) | 基于专利数据的半自动化翻译双语模板的构建方法及系统 | |
CN110852099B (zh) | 一种适用于神经网络机器翻译的汉语分词方法及装置 | |
CN115729360A (zh) | 输入法词库更新方法、装置、设备及服务器 | |
CN113553833A (zh) | 文本纠错的方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Du Quan Inventor after: Liu Xingyu Inventor before: Du Quan Inventor before: Liu Xingyu Inventor before: Zhu Jingbo Inventor before: Xiao Tong Inventor before: Zhang Chunliang |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |