CN115130472B - 一种基于bpe的子词分割方法、系统及可读存储介质 - Google Patents
一种基于bpe的子词分割方法、系统及可读存储介质 Download PDFInfo
- Publication number
- CN115130472B CN115130472B CN202211056659.XA CN202211056659A CN115130472B CN 115130472 B CN115130472 B CN 115130472B CN 202211056659 A CN202211056659 A CN 202211056659A CN 115130472 B CN115130472 B CN 115130472B
- Authority
- CN
- China
- Prior art keywords
- merge
- sub
- node
- preset
- words
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及自然语言处理领域,特别涉及一种基于BPE的子词分割方法、系统及可读存储介质,包括以下步骤:基于节点的数量将预设语料分割为多个节点语料并一一对应分发给多个节点;每个节点获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表;将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表;每个节点从其他节点获取频次较高的预设数量的merge,并将获取到的所有其他节点的预设数量的merge加入到各自的全局merge表中对子词进行更新,解决了大型规模下子词分割效率较低的问题。
Description
技术领域
本发明涉及自然语言处理技术领域,特别涉及一种基于BPE的子词分割方法、系统及计算机可读存储介质。
背景技术
子词分割是自然语言处理的一项重要技术,自从著名的BPE算法提出以来,大多数自然语言处理的模型所使用的词表都是由子词分割技术提取的。近年来,不少子词分割的工具包,例如sentencepiece , tokenizers 被提出用于高效地实现BPE等子词分割算法。这些工具在处理中等规模语料的时候效率很高,huggingface 提出的tokenizers工具包可以在一分钟内处理GB级别的语料。近年来,预训练模型的规模持续增长,更大的模型需要更多的数据去训练。对大规模的语料进行子词分割,是预训练模型训练前的必要步骤。
然而现有技术中,BPE等子词分割算法消耗的内存和语料规模是正相关的。语料规模越大,BPE算法消耗的内存也越多。在超大规模上的语料上使用子词分割技术,往往需要超大的物理内存(TB级别),但这是一般的服务器不具备的。此外,子词分割所消耗的时间也和语料规模正相关。因此,对于大规模语料来说,子词分割的开销很大,甚至没有大的物理内存就无法完成,存在大型规模语料下子词分割效率较低的问题。
发明内容
为解决现有大型规模语料下子词分割效率较低的问题,本发明提供了一种基于BPE的子词分割方法、系统及计算机可读存储介质。
本发明解决技术问题的方案是提供一种基于BPE的子词分割方法,包括以下步骤:
步骤A:基于节点的数量将预设语料分割为多个节点语料并一一对应分发给多个节点;
步骤B:每个节点获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表;
步骤C:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表;
步骤D:每个节点从其他节点获取频次较高的预设数量的merge,并将获取到的所有其他节点的预设数量的merge加入到各自的全局merge表中对子词进行更新;判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,返回执行步骤C;
其中,步骤C具体包括以下步骤:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;统计每个merge出现的频次并以从高到低进行排序;获取排序后的结果,并将其中merge出现频次最高的加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge作为每个节点的全局merge表;
步骤D具体包括以下步骤:每个节点从其他节点获取频次较高的第一预设数量的merge;统计所有节点中每个merge出现的频次并从高到低进行排序;获取排序后的结果中第二预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件;若是,得到更新好的全局merge表,若否,则返回执行步骤C;所述预设方法为TopK算法或分布式数据库中的一种;
获取排序后的结果中预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件具体包括以下步骤:获取排序后的结果,并通过All-Gather将预设数量的merge加入各自的全局merge表作为子词的更新;或,分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中预设数量的merge加入各自的全局merge表作为子词的更新。
优选地,每个节点获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表具体包括以下步骤:
获取节点语料中的多个句子,并以词为单位对句子进行分割得到多个词,统计节点语料中每个词出现的频次;
获取节点语料中的词,并以字符为单位对词进行分割得到多个字符,其中以每个字符记为一个子词,并统计节点语料中每个子词出现的频次;
基于多个子词及每个子词出现的频次获取子词表。
优选地,所述第一预设阈值为2—20。
优选地,所述分布式数据库为TiDB、CockroachDB或YugabyteDB中的一种。
本发明为解决上述技术问题还提供一种基于BPE的子词分割系统,包括以下模块:
获取模块:获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表;及每个节点从其他节点获取频次较高的预设数量的merge,;
处理模块:用于将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge,将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表;将局部merge表作为每个节点的全局merge表,将获取到的所有其他节点的预设数量的merge加入各自的全局merge表中对子词进行更新;
判断模块:判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,则返回处理模块继续处理;
其中,步骤C:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表具体为:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;统计每个merge出现的频次并以从高到低进行排序;获取排序后的结果,并将其中merge出现频次最高的加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge作为每个节点的全局merge表;
其中,每个节点从其他节点获取频次较高的预设数量的merge,并将获取到的所有其他节点的预设数量的merge加入到各自的全局merge表中对子词进行更新;判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,返回处理模块继续处理具体为:每个节点从其他节点获取频次较高的第一预设数量的merge;统计所有节点中每个merge出现的频次并从高到低进行排序;获取排序后的结果中第二预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件;若是,得到更新好的全局merge表,若否,则返回处理模块继续处理;所述预设方法为TopK算法或分布式数据库中的一种;
其中,获取排序后的结果中预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件具体为:获取排序后的结果,并通过All-Gather将预设数量的merge加入各自的全局merge表作为子词的更新;或,分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中预设数量的merge加入各自的全局merge表作为子词的更新。
本发明为解决上述技术问题还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的一种基于BPE的子词分割方法。
与现有技术相比,本发明的一种基于BPE的子词分割方法、系统及计算机可读存储介质具有以下优点:
1、本发明的一种基于BPE的子词分割方法的步骤中,将多个句子分割成子词是因为基于子词的组合可以产生大量的词,甚至是训练预料中未出现过的词,从而让模型容易泛化;其次,获得每个节点的局部merge表之后,将局部merge表作为每个节点的全局merge表,其中每个节点只负责一部分语料的统计,内存开销会随着节点的增多而减少,使得每个节点的merge表不会发生内溢,但由于每个节点统计到的merge表都是局部的,因此需要将所有节点的统计数据同步起来才能得到完整的merge表,即将每个节点中预设数量的merge加入各自的全局merge表以对子词进行更新,判断更新后的全局merge表中是否满足预设条件,若是,则得到更新好的全局merge表,若否,则继续循环前一个步骤,直到满足预设条件得到更新后的全局merge表,就完成了一轮迭代,即可输出每个节点共享的全局merge表,完成数据的共享,在对大规模的语料进行子词分割时,通过将其分布于多个节点处理,既可以避免数据的内溢同时也能更高效率的对语料进行分割,具有较强的实用性,也解决了现有大型规模语料下子词分割效率较低的问题。
2、本发明的步骤中先是对节点语料中的多个句子以词为单位进行分割得到多个词,并且统计相同词出现的频次;同理,对节点语料中的词进行划分,以字符为单位进行划分得到多个字符,本发明实施例中以每个字符记为一个子词,即得到多个子词,统计相同子词出现的频次,基于子词及子词的频次即可得到子词表,其中统计相同子词出现的频次有利于后续步骤的开展,能够提升效率,具有便捷性。
3、本发明的步骤中通过选取多个子词中出现频次符合第一预设阈值的子词之间进行合并即可得到多个merge,统计每个merge的频次并进行排序,将其中频次最高的加入子词表作为子词的更新,即可得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表,以每个节点的局部merge表作为基础进行子词的分割与处理,方便快捷,操作简单,具有较强的实用性。
4、本发明的步骤中每个节点先是获取频次较高第一预设数量的merge,将每个节点中频次较高的第一预设数量的merge统计起来,按照从高到低进行排序,获取排序后的结果中第二预设数量的merge,并通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件,若满足条件则得到更新好的全局merge表,若否,则执行步骤C直到满足预设条件得到更新好的全局merge表,其中将语料分布于多个节点进行处理,既提升了处理语料的效率,节省时间,也不会发生内溢,保证了语料的安全性,具有较强的实用性。
5、本发明的预设方法为TopK算法或分布式数据库中的一种,TopK算法为选取局部merge表中频率最高的K个merge(TopK),然后通过all-gather通信将所有局部merge表汇总在一起,选取all-gather后的结果中频次最高的merge,将其加入全局的merge表中;分布式数据库方法和TopK算法一样的是也需要统计局部merge表,但分布式数据库和TopK不同的是不需要通过all-gather来通信,而是通过将局部merge表写入分布式数据库中,得到频次最高的merge,这个过程不需要很大的内存开销,而且能够实现在分布式数据中完成局部merge表的同步,分布式数据库的最大的优势是数据不需要保存在内存上,就不存在内存溢出的问题,可以避免数据遗失,具有较强的实用性。
6、本发明的步骤中先是获取排序后的结果,一种方法就是通过All-Gather将第二预设数量的merge加入各自的全局merge表作为子词的更新;另一种方法就是分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中第二预设数量的merge加入各自的全局merge表作为子词的更新,通过在分布式数据库中完成merge的同步,实现数据共享,为实现全局merge表的更新提供数据支持,并且也提升了效率,具有较强的实用性。
7、本发明还提供一种基于BPE的子词分割系统和一种计算机可读存储介质,具有与上述一种基于BPE的子词分割方法相同的有益效果,在此不做赘述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种基于BPE的子词分割方法的步骤流程图。
图2是本发明第一实施例提供的一种基于BPE的子词分割方法之步骤S1的步骤流程图。
图3是本发明第一实施例提供的一种基于BPE的子词分割方法之步骤S2的步骤流程图。
图4是本发明第一实施例提供的一种基于BPE的子词分割方法之步骤S4的步骤流程图。
图5是本发明第一实施例提供的一种基于BPE的子词分割方法之示例图一。
图6是本发明第一实施例提供的一种基于BPE的子词分割方法之示例图二。
图7是本发明第一实施例提供的一种基于BPE的子词分割方法之示例图三。
图8是本发明第一实施例提供的一种基于BPE的子词分割方法之步骤S43的步骤流程图。
图9是是本发明第二实施例提供的一种基于BPE的子词分割系统的框图。
附图标识说明:
1、基于BPE的子词分割系统;
10、获取模块;20、处理模块。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,本发明第一实施例提供一种基于BPE的子词分割方法,包括以下步骤:
步骤A:基于节点的数量将预设语料分割为多个节点语料并一一对应分发给多个节点;
步骤B:每个节点获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表;
步骤C:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表;
步骤D:每个节点从其他节点获取频次较高的第一预设数量的merge,并将获取到的所有其他节点的第二预设数量的merge加入到各自的全局merge表中对子词进行更新;判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,返回执行步骤C。
可以理解地,本发明的步骤中将多个句子分割成子词是因为基于子词的组合可以产生大量的词,甚至是训练预料中未出现过的词,从而让模型容易泛化;其次,获得每个节点的局部merge表之后,将局部merge表作为每个节点的全局merge表,其中每个节点只负责一部分语料的统计,内存开销会随着节点的增多而减少,使得每个节点的merge表不会发生内溢,但由于每个节点统计到的merge表都是局部的,因此需要将所有节点的统计数据同步起来才能得到完整的merge表,即将每个节点中预设数量的merge加入各自的全局merge表以对子词进行更新,判断更新后的全局merge表中是否满足预设条件,若是,则得到更新好的全局merge表,若否,则继续循环前一个步骤,直到满足预设条件得到更新后的全局merge表,就完成了一轮迭代,即可输出每个节点共享的全局merge表,完成数据的共享,在对大规模的语料进行子词分割时,通过将其分布于多个节点处理,既可以避免数据的内溢同时也能更高效率的对语料进行分割,具有较强的实用性,也解决了现有大型规模语料下子词分割效率较低的问题。
需要说明的是,merge表即指进程表。
进一步的,本发明对第一预设数量和第二预设数量的具体数值不做具体的限制,可根据实际的merge表大小的应用场景进行调整。
请参阅图2,步骤B具体包括以下步骤:
步骤B1:获取节点语料中的多个句子,并以词为单位对句子进行分割得到多个词,统计节点语料中每个词出现的频次;
步骤B2:获取节点语料中的词,并以字符为单位对词进行分割得到多个字符,其中以每个字符记为一个子词,并统计节点语料中每个子词出现的频次;
步骤B3:基于多个子词及每个子词出现的频次获取子词表;
可以理解地,本发明的步骤中先是对节点语料中的多个句子以词为单位进行分割得到多个词,并且统计相同词出现的频次;同理,对节点语料中的词进行划分,以字符为单位进行划分得到多个字符,本发明实施例中以每个字符记为一个子词,即得到多个子词,统计相同子词出现的频次,基于子词及子词的频次即可得到子词表,其中统计相同子词出现的频次有利于后续步骤的开展,能够提升效率,具有便捷性。
请参阅图3,步骤C具体包括以下步骤:
步骤C1:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;
步骤C2:统计每个merge出现的频次并以从高到低进行排序;
步骤C3:获取排序后的结果,并将其中merge出现频次最高的加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表。
可以理解地,本发明的步骤中通过选取多个子词中出现频次符合第一预设阈值的子词之间进行合并即可得到多个merge,统计每个merge的频次并进行排序,将其中频次最高的加入子词表作为子词的更新,即可得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表,以每个节点的局部merge表作为基础进行子词的分割与处理,方便快捷,操作简单,具有较强的实用性。
作为一种可选的实施方式,第一预设阈值为2—20。
请参阅图4,步骤D具体包括以下步骤:
步骤D1:每个节点从其他节点获取频次较高的第一预设数量的merge;
步骤D2:统计所有节点中每个merge出现的频次并从高到低进行排序;
步骤D3:获取排序后的结果中第二预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件;
步骤D4:若是,得到更新好的全局merge表,若否,则返回执行步骤C。
可以理解地,本发明的步骤中每个节点先是获取频次较高第一预设数量的merge,将每个节点中频次较高的第一预设数量的merge统计起来,按照从高到低进行排序,获取排序后的结果中第二预设数量的merge,并通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件,若满足条件则得到更新好的全局merge表,若否,则执行步骤C直到满足预设条件得到更新好的全局merge表,其中将语料分布于多个节点进行处理,既提升了处理语料的效率,节省时间,也不会发生内溢,保证了语料的安全性,具有较强的实用性。
作为一种可选的实施方式,预设方法为TopK算法或分布式数据库中的一种。
可以理解地,本发明中的TopK算法为选取局部merge表中频率最高的K个merge(TopK),然后通过all-gather通信将所有局部merge表汇总在一起,选取all-gather后的结果中频次最高的merge,将其加入全局的merge表中;分布式数据库方法和TopK算法一样的是也需要统计局部merge表,但分布式数据库和TopK不同的是不需要通过all-gather来通信,而是通过将局部merge表写入分布式数据库中,得到频次最高的merge,这个过程不需要很大的内存开销,而且能够实现在分布式数据中完成局部merge表的同步,分布式数据库的最大的优势是数据不需要保存在内存上,就不存在内存溢出的问题,可以避免数据遗失,具有较强的实用性。
请结合图5和图7,本发明的一种实施例中,采用TopK算法,在获得的全局merge表中分别得到merge“sd,df,rt,igt”,分别统计每个预设文档中每个merge及每个merge出现的频次,得到局部merge表,即节点1的“sds:40,sddf:23,grt:51,ajgt:120”及节点2的“xds:34,fsds:56,dfpo:18,sddf:33”,选取每个节点中频次最高的K个merge,本实施例中K的取值为2,即节点1中进行TopK算法之后得到的为“ajgt:120,grt:51”,节点2中进行TopK算法之后得到的为“fsds:56,xds:34”,再将每个节点中进行TopK算法之后的进行all-gather通信,得到“ajgt:120,fsds:56,grt;51,xds:34”,选取这个表中merge出现频次最高的merge加入全局merge表,即将“ajgt”加入全局merge表中以同步更新每个节点的全局merge表,本实施例中更新之后的全局merge表为“sd,df,rt,igt,ajgt”。
请结合图6和图7,本发明的又一实施例,采用分布式数据库的方法,与TopK算法不同的是,在获取得到merge表后,即节点1的“sds:40,sddf:23,grt:51,ajgt:120”及节点2的“xds:34,fsds:56,dfpo:18,sddf:33”,可直接将各个merge表写入分布式数据库中,在分布式数据库中依据每个merge出现的频次进行排序,即“ajgt:120,fsds:56,grt;51,xds:34”,然后再读取分布式数据库,取其中最高的merge加入全局merge表中以同步更新所有的全局merge表,即将“ajgt”加入全局merge表中以同步更新每个节点的全局merge表,本实施例中更新之后的全局merge表为“sd,df,rt,igt,ajgt”。
请参阅图8,步骤D3具体包括以下步骤:
D31:获取排序后的结果,并通过All-Gather将第二预设数量的merge加入各自的全局merge表作为子词的更新;
D32:或,分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中第二预设数量的merge加入各自的全局merge表作为子词的更新。
可以理解地,本发明的步骤中先是获取排序后的结果,一种方法就是通过All-Gather将第二预设数量的merge加入各自的全局merge表作为子词的更新;另一种方法就是分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中第二预设数量的merge加入各自的全局merge表作为子词的更新,通过在分布式数据库中完成merge的同步,实现数据共享,为实现全局merge表的更新提供数据支持,并且也提升了效率,具有较强的实用性。
作为一种可选的实施方式分布式数据库为TiDB、CockroachDB或YugabyteDB中的一种。
请参阅图9,本发明第二实施例提供一种基于BPE的子词分割系统1,包括以下模块:
获取模块10:获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表;及每个节点从其他节点获取频次较高的预设数量的merge;
处理模块20:用于基于节点的数量将预设预料分割为多个节点并一一对应分给多个节点,将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge,将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表;将局部merge表作为每个节点的全局merge表,将获取到的所有其他节点的预设数量的merge加入各自的全局merge表中对子词进行更新;
判断模块30:判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,则返回执行步骤C。
可以理解地,该基于BPE的子词分割系统1的模块在运作时,需要利用到第一实施例提供的一种基于BPE的子词分割方法,因此无论将获取模块10、处理模块20及判断模块30予于整合或者配置不同的硬件产生与本发明所实现效果相似的功能,均属于本发明的保护范围内。
本发明第三实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明第一实施例提供一种基于BPE的子词分割方法。
可以理解地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在本发明所提供的实施例中,应理解,“与A对应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定特征、结构或特性可以以任意适合的方式结合在一个或多个实施例中。本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在本发明的附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方案中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,在此基于涉及的功能而确定。需要特别注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
与现有技术相比,本发明的一种基于BPE的子词分割方法、系统及计算机可读存储介质具有以下优点:
1、本发明的一种基于BPE的子词分割方法的步骤中,将多个句子分割成子词是因为基于子词的组合可以产生大量的词,甚至是训练预料中未出现过的词,从而让模型容易泛化;其次,获得每个节点的局部merge表之后,将局部merge表作为每个节点的全局merge表,其中每个节点只负责一部分语料的统计,内存开销会随着节点的增多而减少,使得每个节点的merge表不会发生内溢,但由于每个节点统计到的merge表都是局部的,因此需要将所有节点的统计数据同步起来才能得到完整的merge表,即将每个节点中预设数量的merge加入各自的全局merge表以对子词进行更新,判断更新后的全局merge表中是否满足预设条件,若是,则得到更新好的全局merge表,若否,则继续循环前一个步骤,直到满足预设条件得到更新后的全局merge表,就完成了一轮迭代,即可输出每个节点共享的全局merge表,完成数据的共享,在对大规模的语料进行子词分割时,通过将其分布于多个节点处理,既可以避免数据的内溢同时也能更高效率的对语料进行分割,具有较强的实用性,也解决了现有大型规模语料下子词分割效率较低的问题。
2、本发明的步骤中先是对节点语料中的多个句子以词为单位进行分割得到多个词,并且统计相同词出现的频次;同理,对节点语料中的词进行划分,以字符为单位进行划分得到多个字符,本发明实施例中以每个字符记为一个子词,即得到多个子词,统计相同子词出现的频次,基于子词及子词的频次即可得到子词表,其中统计相同子词出现的频次有利于后续步骤的开展,能够提升效率,具有便捷性。
3、本发明的步骤中通过选取多个子词中出现频次符合第一预设阈值的子词之间进行合并即可得到多个merge,统计每个merge的频次并进行排序,将其中频次最高的加入子词表作为子词的更新,即可得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表,以每个节点的局部merge表作为基础进行子词的分割与处理,方便快捷,操作简单,具有较强的实用性。
4、本发明的步骤中每个节点先是获取频次较高第一预设数量的merge,将每个节点中频次较高的第一预设数量的merge统计起来,按照从高到低进行排序,获取排序后的结果中第二预设数量的merge,并通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件,若满足条件则得到更新好的全局merge表,若否,则执行步骤C直到满足预设条件得到更新好的全局merge表,其中将语料分布于多个节点进行处理,既提升了处理语料的效率,节省时间,也不会发生内溢,保证了语料的安全性,具有较强的实用性。
5、本发明的预设方法为TopK算法或分布式数据库中的一种,TopK算法为选取局部merge表中频率最高的K个merge(TopK),然后通过all-gather通信将所有局部merge表汇总在一起,选取all-gather后的结果中频次最高的merge,将其加入全局的merge表中;分布式数据库方法和TopK算法一样的是也需要统计局部merge表,但分布式数据库和TopK不同的是不需要通过all-gather来通信,而是通过将局部merge表写入分布式数据库中,得到频次最高的merge,这个过程不需要很大的内存开销,而且能够实现在分布式数据中完成局部merge表的同步,分布式数据库的最大的优势是数据不需要保存在内存上,就不存在内存溢出的问题,可以避免数据遗失,具有较强的实用性。
6、本发明的步骤中先是获取排序后的结果,一种方法就是通过All-Gather将第二预设数量的merge加入各自的全局merge表作为子词的更新;另一种方法就是分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中第二预设数量的merge加入各自的全局merge表作为子词的更新,通过在分布式数据库中完成merge的同步,实现数据共享,为实现全局merge表的更新提供数据支持,并且也提升了效率,具有较强的实用性。
7、本发明还提供一种基于BPE的子词分割系统和一种计算机可读存储介质,具有与上述一种基于BPE的子词分割方法相同的有益效果,在此不做赘述。
以上对本发明实施例公开的一种基于BPE的子词分割方法、系统及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制,凡在本发明的原则之内所作的任何修改,等同替换和改进等均应包含本发明的保护范围之内。
Claims (6)
1.一种基于BPE的子词分割方法,其特征在于:包括以下步骤:
步骤A:基于节点的数量将预设语料分割为多个节点语料并一一对应分发给多个节点;
步骤B:每个节点获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表;
步骤C:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表;
步骤D:每个节点从其他节点获取频次较高的预设数量的merge,并将获取到的所有其他节点的预设数量的merge加入到各自的全局merge表中对子词进行更新;判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,返回执行步骤C;
其中,步骤C具体包括以下步骤:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;统计每个merge出现的频次并以从高到低进行排序;获取排序后的结果,并将其中merge出现频次最高的加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge作为每个节点的全局merge表;
步骤D具体包括以下步骤:每个节点从其他节点获取频次较高的第一预设数量的merge;统计所有节点中每个merge出现的频次并从高到低进行排序;获取排序后的结果中第二预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件;若是,得到更新好的全局merge表,若否,则返回执行步骤C;所述预设方法为TopK算法或分布式数据库中的一种;
获取排序后的结果中预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件具体包括以下步骤:获取排序后的结果,并通过All-Gather将预设数量的merge加入各自的全局merge表作为子词的更新;或,分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中预设数量的merge加入各自的全局merge表作为子词的更新。
2.如权利要求1所述的一种基于BPE的子词分割方法,其特征在于:每个节点获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表具体包括以下步骤:
获取节点语料中的多个句子,并以词为单位对句子进行分割得到多个词,统计节点语料中每个词出现的频次;
获取节点语料中的词,并以字符为单位对词进行分割得到多个字符,其中以每个字符记为一个子词,并统计节点语料中每个子词出现的频次;
基于多个子词及每个子词出现的频次获取子词表。
3.如权利要求1所述的一种基于BPE的子词分割方法,其特征在于:所述第一预设阈值为2—20。
4.如权利要求1所述的一种基于BPE的子词分割方法,其特征在于:所述分布式数据库为TiDB、CockroachDB或YugabyteDB中的一种。
5.一种基于BPE的子词分割系统,其特征在于,包括以下模块:
获取模块:获取节点语料中的多个句子,对多个句子进行分割得到多个子词及多个子词构成的子词表;及每个节点从其他节点获取频次较高的预设数量的merge;
处理模块:用于基于节点的数量将预设预料分割为多个节点并一一对应分给多个节点,将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge,将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表;将局部merge表作为每个节点的全局merge表,将获取到的所有其他节点的预设数量的merge加入各自的全局merge表中对子词进行更新;
判断模块:判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,则返回处理模块继续处理;
其中,将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;将merge中出现频次符合第二预设阈值的merge加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge表作为每个节点的全局merge表具体为:将多个子词中出现频次符合第一预设阈值的子词进行合并得到多个merge;统计每个merge出现的频次并以从高到低进行排序;获取排序后的结果,并将其中merge出现频次最高的加入子词表作为子词的更新,得到每个节点的局部merge表,将局部merge作为每个节点的全局merge表;
其中,每个节点从其他节点获取频次较高的预设数量的merge,并将获取到的所有其他节点的预设数量的merge加入到各自的全局merge表中对子词进行更新;判断更新后的全局merge表是否满足预设条件,若是,则得到更新好的全局merge表,若否,返回处理模块继续处理具体为:每个节点从其他节点获取频次较高的第一预设数量的merge;统计所有节点中每个merge出现的频次并从高到低进行排序;获取排序后的结果中第二预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件;若是,得到更新好的全局merge表,若否,则返回处理模块继续处理;所述预设方法为TopK算法或分布式数据库中的一种;
其中,获取排序后的结果中预设数量的merge通过预设方法加入到各自的全局merge表中对子词进行更新,判断更新后的全局merge表是否满足预设条件具体为:获取排序后的结果,并通过All-Gather将预设数量的merge加入各自的全局merge表作为子词的更新;或,分别将每个节点的全局merge表的merge加入分布式数据库中,并取其中预设数量的merge加入各自的全局merge表作为子词的更新。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-4任意一项所述的一种基于BPE的子词分割方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211056659.XA CN115130472B (zh) | 2022-08-31 | 2022-08-31 | 一种基于bpe的子词分割方法、系统及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211056659.XA CN115130472B (zh) | 2022-08-31 | 2022-08-31 | 一种基于bpe的子词分割方法、系统及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115130472A CN115130472A (zh) | 2022-09-30 |
CN115130472B true CN115130472B (zh) | 2023-02-21 |
Family
ID=83387461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211056659.XA Active CN115130472B (zh) | 2022-08-31 | 2022-08-31 | 一种基于bpe的子词分割方法、系统及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115130472B (zh) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2950306A1 (en) * | 2014-05-29 | 2015-12-02 | Samsung Electronics Polska Spolka z organiczona odpowiedzialnoscia | A method and system for building a language model |
CN107301170B (zh) * | 2017-06-19 | 2020-12-22 | 北京百度网讯科技有限公司 | 基于人工智能的切分语句的方法和装置 |
JP7040155B2 (ja) * | 2018-03-13 | 2022-03-23 | 大日本印刷株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP7163618B2 (ja) * | 2018-05-22 | 2022-11-01 | 大日本印刷株式会社 | 学習装置、学習方法、プログラム及び推定装置 |
CN111062206B (zh) * | 2018-10-16 | 2023-11-21 | 株式会社理光 | 一种子词单元的拆分方法、装置及计算机可读存储介质 |
CN109902290B (zh) * | 2019-01-23 | 2023-06-30 | 广州杰赛科技股份有限公司 | 一种基于文本信息的术语提取方法、系统和设备 |
CN111178095B (zh) * | 2019-12-20 | 2023-06-27 | 沈阳雅译网络技术有限公司 | 一种面向子词切分的BPE-Learn加速方法 |
CN113468883B (zh) * | 2020-03-30 | 2024-04-30 | 株式会社理光 | 位置信息的融合方法、装置及计算机可读存储介质 |
US11386687B2 (en) * | 2020-03-30 | 2022-07-12 | Wipro Limited | System and method for reconstructing an image |
US11294945B2 (en) * | 2020-05-19 | 2022-04-05 | International Business Machines Corporation | Unsupervised text summarization with reinforcement learning |
CN112100332A (zh) * | 2020-09-14 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 词嵌入表示学习方法及装置、文本召回方法及装置 |
US12045569B2 (en) * | 2021-01-25 | 2024-07-23 | Nec Corporation | Graph-based cross-lingual zero-shot transfer |
CN113239142B (zh) * | 2021-04-26 | 2022-09-23 | 昆明理工大学 | 融合句法信息的无触发词事件检测方法 |
CN114444475A (zh) * | 2021-11-11 | 2022-05-06 | 广州坚和网络科技有限公司 | 基于语料的分词方法及装置 |
CN114492426B (zh) * | 2021-12-30 | 2023-04-07 | 北京百度网讯科技有限公司 | 子词切分方法、模型训练方法、装置和电子设备 |
-
2022
- 2022-08-31 CN CN202211056659.XA patent/CN115130472B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115130472A (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107301170B (zh) | 基于人工智能的切分语句的方法和装置 | |
CN107273508B (zh) | 基于人工智能的信息处理方法和装置 | |
CN109993298B (zh) | 用于压缩神经网络的方法和装置 | |
CN110046254B (zh) | 用于生成模型的方法和装置 | |
CN110633360A (zh) | 一种语义匹配的方法以及相关装置 | |
CN113190675A (zh) | 文本摘要生成方法、装置、计算机设备和存储介质 | |
CN115130472B (zh) | 一种基于bpe的子词分割方法、系统及可读存储介质 | |
CN109992679A (zh) | 一种多媒体数据的分类方法及装置 | |
US11580101B2 (en) | Method and apparatus for generating context category dataset | |
CN111556375B (zh) | 视频弹幕的生成方法、装置、计算机设备及存储介质 | |
CN117558259A (zh) | 一种数字人播报风格控制方法及装置 | |
CN113742332A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN105740374B (zh) | 基于分布式内存的三维平台数据模糊查询方法 | |
CN115146775A (zh) | 边缘设备推理加速方法、装置和数据处理系统 | |
CN109753999A (zh) | 针对任意视角汽车图片的细粒度车型识别方法 | |
CN112307209B (zh) | 一种基于字符向量的短文本分类方法及系统 | |
CN115203378A (zh) | 基于预训练语言模型的检索增强方法、系统及存储介质 | |
CN111339287B (zh) | 摘要生成方法及装置 | |
CN114627416A (zh) | 视频处理方法和装置 | |
CN114692871A (zh) | 决策树训练方法、运单类型识别方法及装置、设备、介质 | |
CN114780533A (zh) | 基于双数组字典树的存储空间分配方法、装置及电子设备 | |
CN114201957A (zh) | 文本情感分析方法、装置及计算机可读存储介质 | |
CN113297289A (zh) | 从数据库提取业务数据的方法、装置和电子设备 | |
CN113010642A (zh) | 语义关系的识别方法、装置、电子设备及可读存储介质 | |
CN112528027A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |