CN108399159A - 对大体量语料进行训练的方法、装置与系统 - Google Patents
对大体量语料进行训练的方法、装置与系统 Download PDFInfo
- Publication number
- CN108399159A CN108399159A CN201810158656.4A CN201810158656A CN108399159A CN 108399159 A CN108399159 A CN 108399159A CN 201810158656 A CN201810158656 A CN 201810158656A CN 108399159 A CN108399159 A CN 108399159A
- Authority
- CN
- China
- Prior art keywords
- training
- module
- data
- corpus
- word
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种对大体量语料进行训练的方法、装置与系统,通过将大规模训练数据切分为独立的数据分片,每一个分片交由一个独立线程的训练模块进行训练,训练模块通过权限控制模块获取最新的词向量,权限控制模块维护语义模型中的词向量和各个词向量的读写权限,使用互斥读写的方式确保训练结果正确,并设置了权限管理机制,在确保不发生死锁和饥饿的情况下尽可能的提高词向量使用效率,不仅能够提升训练语料的规模,同时也能提升训练的速度和词向量的维度,能够更精准的表述词义。
Description
技术领域
本发明涉及数据处理技术领域,更为具体地,涉及一种对大体量语料进行训练的方法、装置与系统。
背景技术
传统的语义模型中使用one-hot编码来表示并进行计算,但是无法衡量相关词之间的距离,也不能准确的表述语义,因此word2vector越来越多被用来描述精准语义。目前的训练方法主要在一台单独的计算机上实现,计算机本身的计算能力很大程度上限制了训练语料的规模以及词向量的维度,并且单纯的依靠提升计算机本身的性能来提高训练语料的规模上升空间有限。由于限制了训练语料的规模和词向量维度,因此训练得到的结果很难精准的标示词的语义,并且在开放文本一系列应用中,需要大规模语料用于训练语义模型,只选取一部分文本用于训练,并不能在大规模文本上很好的泛化。本方案提出了一种使用大体量语料进行word2vector训练的方法,不仅能够提升训练语料的规模,同时也能提升训练的速度和词向量的维度,训练语料规模和词向量维度的增加也能更精准的表述词义。
发明内容
本发明的目的在于克服现有技术的不足,提供一种对大体量语料进行训练的方法、装置与系统,不仅可以充分利用大规模语料,并且能够提升训练的效率,能够提供训练更高维度语义向量计算能力。
本发明的目的是通过以下技术方案来实现的:一种切分大体量语料的方法,包括读取步骤、切分步骤、分配步骤和保存步骤;
读取步骤,从数据库中读取语料数据;
切分步骤,按设定的固定值对读取的语料数据进行切分,形成语料数据分片,将所述语料数据分片组成语料数据分片队列;
分配步骤,对所述语料数据分片队列中的语料数据分片,分配唯一对应的索引号;
保存步骤,使用所述索引号创建存储空间,使用创建的存储空间保存语料数据分片队列数据;在该步骤中保存的语料数据分片队列数据,用于单线程训练。
一种切分大体量语料的装置,包括读取单元模块、切分单元模块、分配单元模块和保存单元模块;
读取单元模块,用于从数据库中读取语料数据;
切分单元模块,用于按设定的固定值对读取的语料数据进行切分,形成语料数据分片,将所述语料数据分片组成语料数据分片队列;
分配单元模块,用于对所述语料数据分片队列中的语料数据分片,分配唯一对应的索引号;
保存单元模块,用于使用所述索引号创建存储空间,使用创建的存储空间保存语料数据分片队列数据;在该保存单元模块中保存的语料数据分片队列数据,用于单线程训练。
一种基于如上技术方案中所述切分大体量语料的词频统计方法,包括分词处理步骤、第一统计步骤、缓存步骤和第二统计步骤;
分词处理步骤,对所有语料数据分片进行分词处理;
第一统计步骤,每一个单线程对一个语料数据分片进行词频统计;
缓存步骤,缓存所有第一统计步骤中的统计结果;
第二统计步骤,在所有语料数据分片的词频统计结束并缓存完成后,计算所有语料数据分片的词频统计结果;在该步骤中,所有语料数据分片的词频统计结果用于构建哈夫曼树。
一种基于如上技术方案中所述切分大体量语料的词频统计装置,包括分词处理单元模块、第一统计单元模块、缓存单元模块和第二统计单元模块;
分词处理单元模块,用于对所有语料数据分片进行分词处理;
第一统计单元模块,用于每一个单线程对一个语料数据分片进行词频统计;
缓存单元模块,用于缓存所有第一统计单元模块中的统计结果;
第二统计单元模块,用于在所有语料数据分片的词频统计结束并缓存完成后,计算所有语料数据分片的词频统计结果;在第二统计单元模块中,所有语料数据分片的词频统计结果用于构建哈夫曼树。
一种大规模文本数据的训练输入生成方法,基于所述词频统计方法或所述词频统计装置,构建所述哈夫曼树,并将所述哈夫曼数作为训练模型的输入;所述训练模型包括word2vector模型。
一种基于多线程的词频哈夫曼树构建方法,包括如下步骤:
每一个线程对一个数据分片进行词频统计,并缓存所有的统计结果,当所有分片统计结束后计算出整个训练语料的词频统计结果,并根据该词频结果构建哈夫曼树作为word2vector训练模型的输入;所述训练模型包括word2vector模型。
一种基于权限控制的多线程协同训练方法,包括如下步骤:
使用如上技术方案中所述方法构建的哈夫曼树作为输入,每一个线程读取一个数据分片进行训练,使用读写权限控制来保证线程之间互斥的读写词向量,用于使词向量的修正在最新的训练结构上进行。
一种大规模文本数据的训练方法,包括如下步骤:
S1,数据切片,将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
S2,词频统计,对训练语料数据分片进行分词处理,单独统计每一个训练语料数据分片的词频,并将结果反馈给调度模块;
S3,构建哈弗曼树,调度模块创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个训练语料数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
S4,训练,读取训练语料数据分片进行训练,训练时,获取训练语句中所要单词的读写权限,如果获取成功则反馈所需单词的最新词向量继续训练,如果所述读写权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练;当一个线程的训练模块需要获取一条训练语句中单词的词向量时,遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限;当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此训练语料数据分片训练完成。
一种大规模文本数据的训练系统,包括数据分片模块、词频统计模块、调度模块、训练模块和权限控制模块;
所述数据分片模块,用于将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
所述词频统计模块,用于单独统计每一个数据分片的词频,并将结果反馈给调度模块,所有分片统计结束后由调度模块构建出哈夫曼数;
所述调度模块,用于创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
所述训练模块,用于读取训练语料进行训练,训练时,训练模块需要从权限管理模块获取训练语句中所要单词的读写权限,如果获取成功则并反馈了所需单词的最新词向量则继续训练,如果由于权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练,当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此数据分片训练完成;
所述权限控制模块,当一个线程的训练模块需要获取一条训练语句中单词的词向量时,权限控制模块遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限。
进一步地,所述第一设定值为50%,第二设定值为3。
本发明的有益效果是:
(1)本发明通过将大规模训练数据切分为独立的数据分片,每一个分片交由一个独立线程的训练模块进行训练,训练模块通过权限控制模块获取最新的词向量,权限控制模块维护语义模型中的词向量和各个词向量的读写权限,使用互斥读写的方式确保训练结果正确,并设置了权限管理机制,在确保不发生死锁和饥饿的情况下尽可能的提高词向量使用效率,不仅能够提升训练语料的规模,同时也能提升训练的速度和词向量的维度,训练语料规模和词向量维度的增加也能更精准的表述词义。
(2)本发明还提供一种使用大体量语料进行word2vector训练的方法,通过对大规模训练语料进行分片,可以使用大体量的语料进行多线程并行的word2vector训练,获得维度更高更加精准的语义标示。
(3)本发明可用于大体量语料的训练,通过将训练语料分片,每个分片分发给各个线程独立的进行训练,通过控制读写权限维护语义模型,确保训练不会因数据切分而产生误差,不仅能提升训练的效率,还能提升训练语料的规模。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中的训练方法流程图。
图2为本发明中数据分片模块的流程图。
图3为本发明中调度模块的流程图。
图4为本发明中词频统计模块的流程图。
图5为本发明中哈夫曼树构建的流程图。
图6为本发明中权限控制模块的流程图。
图7为本发明中训练模块的流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。本说明书中公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
下面将详细描述本发明的具体实施例,应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。在以下描述中,为了提供对本发明的透彻理解,阐述了大量特定细节。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的电路,软件或方法。
在整个说明书中,对“一个实施例”、“实施例”、“一个示例”或“示例”的提及意味着:结合该实施例或示例描述的特定特征、结构或特性被包含在本发明至少一个实施例中。因此,在整个说明书的各个地方出现的短语“在一个实施例中”、“在实施例中”、“一个示例”或“示例”不一定都指同一实施例或示例。此外,可以以任何适当的组合和、或子组合将特定的特征、结构或特性组合在一个或多个实施例或示例中。此外,本领域普通技术人员应当理解,在此提供的示图都是为了说明的目的,并且示图不一定是按比例绘制的。
如图1-7所示,一种切分大体量语料的方法,包括读取步骤、切分步骤、分配步骤和保存步骤;
读取步骤,从数据库中读取语料数据;
切分步骤,按设定的固定值对读取的语料数据进行切分,形成语料数据分片,将所述语料数据分片组成语料数据分片队列;
分配步骤,对所述语料数据分片队列中的语料数据分片,分配唯一对应的索引号;
保存步骤,使用所述索引号创建存储空间,使用创建的存储空间保存语料数据分片队列数据;在该步骤中保存的语料数据分片队列数据,用于单线程训练。
一种切分大体量语料的装置,包括读取单元模块、切分单元模块、分配单元模块和保存单元模块;
读取单元模块,用于从数据库中读取语料数据;
切分单元模块,用于按设定的固定值对读取的语料数据进行切分,形成语料数据分片,将所述语料数据分片组成语料数据分片队列;
分配单元模块,用于对所述语料数据分片队列中的语料数据分片,分配唯一对应的索引号;
保存单元模块,用于使用所述索引号创建存储空间,使用创建的存储空间保存语料数据分片队列数据;在该保存单元模块中保存的语料数据分片队列数据,用于单线程训练。
一种基于如上技术方案中所述切分大体量语料的词频统计方法,包括分词处理步骤、第一统计步骤、缓存步骤和第二统计步骤;
分词处理步骤,对所有语料数据分片进行分词处理;
第一统计步骤,每一个单线程对一个语料数据分片进行词频统计;
缓存步骤,缓存所有第一统计步骤中的统计结果;
第二统计步骤,在所有语料数据分片的词频统计结束并缓存完成后,计算所有语料数据分片的词频统计结果;在该步骤中,所有语料数据分片的词频统计结果用于构建哈夫曼树。
一种基于如上技术方案中所述切分大体量语料的词频统计装置,包括分词处理单元模块、第一统计单元模块、缓存单元模块和第二统计单元模块;
分词处理单元模块,用于对所有语料数据分片进行分词处理;
第一统计单元模块,用于每一个单线程对一个语料数据分片进行词频统计;
缓存单元模块,用于缓存所有第一统计单元模块中的统计结果;
第二统计单元模块,用于在所有语料数据分片的词频统计结束并缓存完成后,计算所有语料数据分片的词频统计结果;在第二统计单元模块中,所有语料数据分片的词频统计结果用于构建哈夫曼树。
一种大规模文本数据的训练输入生成方法,基于所述词频统计方法或所述词频统计装置,构建所述哈夫曼树,并将所述哈夫曼数作为训练模型的输入;所述训练模型包括word2vector模型。
一种基于多线程的词频哈夫曼树构建方法,包括如下步骤:
每一个线程对一个数据分片进行词频统计,并缓存所有的统计结果,当所有分片统计结束后计算出整个训练语料的词频统计结果,并根据该词频结果构建哈夫曼树作为word2vector训练模型的输入;所述训练模型包括word2vector模型。
一种基于权限控制的多线程协同训练方法,包括如下步骤:
使用如上技术方案中所述方法构建的哈夫曼树作为输入,每一个线程读取一个数据分片进行训练,使用读写权限控制来保证线程之间互斥的读写词向量,用于使词向量的修正在最新的训练结构上进行。
一种大规模文本数据的训练方法,包括如下步骤:
S1,数据切片,将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
S2,词频统计,对训练语料数据分片进行分词处理,单独统计每一个训练语料数据分片的词频,并将结果反馈给调度模块;
S3,构建哈弗曼树,调度模块创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个训练语料数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
S4,训练,读取训练语料数据分片进行训练,训练时,获取训练语句中所要单词的读写权限,如果获取成功则反馈所需单词的最新词向量继续训练,如果所述读写权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练;当一个线程的训练模块需要获取一条训练语句中单词的词向量时,遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限;当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此训练语料数据分片训练完成。
一种大规模文本数据的训练系统,包括数据分片模块、词频统计模块、调度模块、训练模块和权限控制模块;
所述数据分片模块,用于将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
所述词频统计模块,用于单独统计每一个数据分片的词频,并将结果反馈给调度模块,所有分片统计结束后由调度模块构建出哈夫曼数;
所述调度模块,用于创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
所述训练模块,用于读取训练语料进行训练,训练时,训练模块需要从权限管理模块获取训练语句中所要单词的读写权限,如果获取成功则并反馈了所需单词的最新词向量则继续训练,如果由于权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练,当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此数据分片训练完成;
所述权限控制模块,当一个线程的训练模块需要获取一条训练语句中单词的词向量时,权限控制模块遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限。
进一步地,所述第一设定值为50%,第二设定值为3。
在本发明的实施例中,
训练语料分片,对大规模训练语料进行分片处理,将大规模的语料进行切分,切分成独立的分片,并组成一个分片队列,每个分片有一个索引号,索引号唯一的标示一个语料分片。训练时各个线程依次从训练语料分片队列中读取数据用于训练。
多线程共同构建哈夫曼树,Word2vector训练算法的输入是根据词频统计结果构建的哈夫曼树,需要对训练预料进行分词处理,统计词频,构建哈夫曼树。训练线程依次读取训练语料分片队列中的数据分片,统计每一个训练数据分片的词频,并缓存结果,最后生产整个训练语料的词频。
多线程共同维护模型,目前的训练方法中只有一个线程在修正语义模型中的词向量,但是当使用多线程时,多个线程共同维护同一个语义模型中的词向量,为了保证每一个线程的每一次修正都是在最新的词向量上进行,为模型中每一个词设置读写互斥锁,各线程互斥的读写模型中的词向量,并在已有的词向量上进行修正,结果再写回到模型中,结束后释放读写互斥锁。
通过对大规模训练语料进行分片,可以使用大体量的语料进行多线程并行的word2vector训练,获得维度更高更加精准的语义标示。
可选地,本发明的方案采用Python实现,数据存储采用MongoDB存储,整个系统包括数据分片模块,词频统计模块,调度模块,训练模块,权限控制模块。
数据分片模块,从MongoDB中读取数据将数据按照128M为单元切分训练语料,并为每一个分片分配的唯一的索引号,在MongoDB中使用索引号为collectionID创建存储空间保存分片数据,并将索引号和保存地址反馈给调度模块。
词频统计模块,训练开始之前需要根据训练语料中的词频统计来构建哈夫曼树,每一个叶子节点是一个词,因此需要统计整个训练语料的词频,词频统计模块,单独统计每一个数据分片的词频,并将结果反馈给调度模块,所有分片统计结束后由调度模块构建出哈夫曼数。
调度模块,调度模块创建并管理线程,负责维护训练语料数据分片队列,各线程的状态,并提供空缓存各个数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树。当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块。当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据。
训练模块,训练模块根据模块传递的参数,读取训练语料进行训练。训练时,训练模块需要从权限管理模块获取训练语句中所要单词的读写权限,如果获取成功则并反馈了所需单词的最新词向量则继续训练,如果由于权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练。当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此数据分片训练完成。
权限控制模块,权限控制模块负责管理语义模型中所有词向量的读写权限,并负责接收各线程训练模块的计算结果,修正语义模型。当一个线程的训练模块需要获取一条训练语句中单词的词向量时,权限控制模块遍历所有的单词读写权限,为了保障训练的效率并且避免死锁的发生,只有当词向量读写权限被占用的个数比例小于50%,且占用的线程单位小余3时则权限获取成功。如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余别加锁词向量的权限,为了防止长时间等到降低系统效率,当等待时间达到最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败。当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限。
【实施例一】
本领域技术人员可以将本发明作为一种切分大体量语料的方法进行实施,在本实施例中,执行如下步骤:
读取步骤,从数据库中读取语料数据;
切分步骤,按设定的固定值对读取的语料数据进行切分,形成语料数据分片,将所述语料数据分片组成语料数据分片队列;
分配步骤,对所述语料数据分片队列中的语料数据分片,分配唯一对应的索引号;
保存步骤,使用所述索引号创建存储空间,使用创建的存储空间保存语料数据分片队列数据;在该步骤中保存的语料数据分片队列数据,用于单线程训练。
在本实施例中的其余技术特征,本领域技术人员均可以根据实际情况进行灵活选用和以满足不同的具体实际需求。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的算法,方法或系统等,均在本发明的权利要求书请求保护的技术方案限定技术保护范围之内。
【实施例二】
本领域技术人员可以将本发明作为一种大规模文本数据的训练方法进行实施,在本实施例中,执行如下步骤:
S1,数据切片,将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
S2,词频统计,对训练语料数据分片进行分词处理,单独统计每一个训练语料数据分片的词频,并将结果反馈给调度模块;
S3,构建哈弗曼树,调度模块创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个训练语料数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
S4,训练,读取训练语料数据分片进行训练,训练时,获取训练语句中所要单词的读写权限,如果获取成功则反馈所需单词的最新词向量继续训练,如果所述读写权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练;当一个线程的训练模块需要获取一条训练语句中单词的词向量时,遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限;当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此训练语料数据分片训练完成。
在本实施例中的其余技术特征,本领域技术人员均可以根据实际情况进行灵活选用和以满足不同的具体实际需求。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的算法,方法或系统等,均在本发明的权利要求书请求保护的技术方案限定技术保护范围之内。
【实施例三】
本领域技术人员可以将本发明作为一种大规模文本数据的训练系统进行实施,在本实施例中,所述系统包括数据分片模块、词频统计模块、调度模块、训练模块和权限控制模块;
所述数据分片模块,用于将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
所述词频统计模块,用于单独统计每一个数据分片的词频,并将结果反馈给调度模块,所有分片统计结束后由调度模块构建出哈夫曼数;
所述调度模块,用于创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
所述训练模块,用于读取训练语料进行训练,训练时,训练模块需要从权限管理模块获取训练语句中所要单词的读写权限,如果获取成功则并反馈了所需单词的最新词向量则继续训练,如果由于权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练,当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此数据分片训练完成;
所述权限控制模块,当一个线程的训练模块需要获取一条训练语句中单词的词向量时,权限控制模块遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限。
在本实施例中的其余技术特征,本领域技术人员均可以根据实际情况进行灵活选用和以满足不同的具体实际需求。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本发明。在其他实例中,为了避免混淆本发明,未具体描述公知的算法,方法或系统等,均在本发明的权利要求书请求保护的技术方案限定技术保护范围之内。
对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本申请所必须的。即在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
应该理解到,在本申请所提供的几个实施例中,所揭露的系统、模块和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,所述单元的划分,可以仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以说通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述分立部件说明的单元可以是或者也可以不收物理上分开的,作为单元显示的部件可以是或者可以不收物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例的方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法实现所描述的功能,但是这种实现不应超出本发明的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (10)
1.一种切分大体量语料的方法,其特征在于,包括读取步骤、切分步骤、分配步骤和保存步骤;
读取步骤,从数据库中读取语料数据;
切分步骤,按设定的固定值对读取的语料数据进行切分,形成语料数据分片,将所述语料数据分片组成语料数据分片队列;
分配步骤,对所述语料数据分片队列中的语料数据分片,分配唯一对应的索引号;
保存步骤,使用所述索引号创建存储空间,使用创建的存储空间保存语料数据分片队列数据;在该步骤中保存的语料数据分片队列数据,用于单线程训练。
2.一种切分大体量语料的装置,其特征在于,包括读取单元模块、切分单元模块、分配单元模块和保存单元模块;
读取单元模块,用于从数据库中读取语料数据;
切分单元模块,用于按设定的固定值对读取的语料数据进行切分,形成语料数据分片,将所述语料数据分片组成语料数据分片队列;
分配单元模块,用于对所述语料数据分片队列中的语料数据分片,分配唯一对应的索引号;
保存单元模块,用于使用所述索引号创建存储空间,使用创建的存储空间保存语料数据分片队列数据;在该保存单元模块中保存的语料数据分片队列数据,用于单线程训练。
3.一种基于权利要求1或2所述切分大体量语料的词频统计方法,其特征在于,包括分词处理步骤、第一统计步骤、缓存步骤和第二统计步骤;
分词处理步骤,对所有语料数据分片进行分词处理;
第一统计步骤,每一个单线程对一个语料数据分片进行词频统计;
缓存步骤,缓存所有第一统计步骤中的统计结果;
第二统计步骤,在所有语料数据分片的词频统计结束并缓存完成后,计算所有语料数据分片的词频统计结果;在该步骤中,所有语料数据分片的词频统计结果用于构建哈夫曼树。
4.一种基于权利要求1或2所述切分大体量语料的词频统计装置,其特征在于,包括分词处理单元模块、第一统计单元模块、缓存单元模块和第二统计单元模块;
分词处理单元模块,用于对所有语料数据分片进行分词处理;
第一统计单元模块,用于每一个单线程对一个语料数据分片进行词频统计;
缓存单元模块,用于缓存所有第一统计单元模块中的统计结果;
第二统计单元模块,用于在所有语料数据分片的词频统计结束并缓存完成后,计算所有语料数据分片的词频统计结果;在第二统计单元模块中,所有语料数据分片的词频统计结果用于构建哈夫曼树。
5.一种大规模文本数据的训练输入生成方法,其特征在于,基于所述词频统计方法或所述词频统计装置,构建所述哈夫曼树,并将所述哈夫曼数作为训练模型的输入;所述训练模型包括word2vector模型。
6.一种基于多线程的词频哈夫曼树构建方法,其特征在于,包括如下步骤:
每一个线程对一个数据分片进行词频统计,并缓存所有的统计结果,当所有分片统计结束后计算出整个训练语料的词频统计结果,并根据该词频结果构建哈夫曼树作为word2vector训练模型的输入;所述训练模型包括word2vector模型。
7.一种基于权限控制的多线程协同训练方法,其特征在于,包括如下步骤:
使用权利要求6中所述方法构建的哈夫曼树作为输入,每一个线程读取一个数据分片进行训练,使用读写权限控制来保证线程之间互斥的读写词向量,用于使词向量的修正在最新的训练结构上进行。
8.一种大规模文本数据的训练方法,其特征在于,包括如下步骤:
S1,数据切片,将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
S2,词频统计,对训练语料数据分片进行分词处理,单独统计每一个训练语料数据分片的词频,并将结果反馈给调度模块;
S3,构建哈弗曼树,调度模块创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个训练语料数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
S4,训练,读取训练语料数据分片进行训练,训练时,获取训练语句中所要单词的读写权限,如果获取成功则反馈所需单词的最新词向量继续训练,如果所述读写权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练;当一个线程的训练模块需要获取一条训练语句中单词的词向量时,遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限;当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此训练语料数据分片训练完成。
9.一种大规模文本数据的训练系统,其特征在于,包括数据分片模块、词频统计模块、调度模块、训练模块和权限控制模块;
所述数据分片模块,用于将从数据库中读取的数据按照固定值为单元切分,形成训练语料分片队列,并为每一个训练语料分片分配唯一的索引号,在数据库中使用索引号创建存储空间,并保存所述训练语料分片数据,将索引号和保存地址反馈给调度模块;
所述词频统计模块,用于单独统计每一个数据分片的词频,并将结果反馈给调度模块,所有分片统计结束后由调度模块构建出哈夫曼数;
所述调度模块,用于创建并管理线程,负责维护训练语料数据分片队列和各线程的状态,并提供空缓存各个数据分片的词频统计结果,所有分片统计结束后构建哈夫曼树;当线程池中存在空闲线程,且存在剩余数据分片时,调度模块将一个数据分片地址传递个一个空闲线程的训练模块;当一个线程完成了一个数据分片的训练时,向调度模块报告训练状态,等待新的训练数据;
所述训练模块,用于读取训练语料进行训练,训练时,训练模块需要从权限管理模块获取训练语句中所要单词的读写权限,如果获取成功则并反馈了所需单词的最新词向量则继续训练,如果由于权限被占用,则放弃此语句的训练,将其放入待训练队列中,并从待训练队列中读取下一条语句进行训练,当完成对一个语句的训练时,将训练得到的结果反馈给权限读取模块,直到所有语句训练完成,则此数据分片训练完成;
所述权限控制模块,当一个线程的训练模块需要获取一条训练语句中单词的词向量时,权限控制模块遍历所有的单词读写权限,当词向量读写权限被占用的个数比例小于第一设定值,且占用的线程单位小于第二设定时则权限获取成功;如果请求的所有单词词向量都没有别占用,则直接对所有的词向量加锁,并将此词向量以字典的形式反馈给请求线程的训练模块,否则,先对没有被占用的词向量进行加锁,并等待其余没加锁词向量的权限,当等待时间达到设定的最大等待时间时,释放所有已获得的词向量读写权限,并反馈给请求线程训练模块词向量获取失败,当接受到训练模块的训练结果时,根据接收的结果修改词向量,完成后释放读写权限。
10.根据权利要求8或9所述的一种大规模文本数据的训练系统,其特征在于,所述第一设定值为50%,第二设定值为3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810158656.4A CN108399159A (zh) | 2018-02-26 | 2018-02-26 | 对大体量语料进行训练的方法、装置与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810158656.4A CN108399159A (zh) | 2018-02-26 | 2018-02-26 | 对大体量语料进行训练的方法、装置与系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108399159A true CN108399159A (zh) | 2018-08-14 |
Family
ID=63096778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810158656.4A Pending CN108399159A (zh) | 2018-02-26 | 2018-02-26 | 对大体量语料进行训练的方法、装置与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399159A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110136697A (zh) * | 2019-06-06 | 2019-08-16 | 深圳市数字星河科技有限公司 | 一种基于多进程线程并行运算的英语朗读练习系统 |
-
2018
- 2018-02-26 CN CN201810158656.4A patent/CN108399159A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110136697A (zh) * | 2019-06-06 | 2019-08-16 | 深圳市数字星河科技有限公司 | 一种基于多进程线程并行运算的英语朗读练习系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102008022080B4 (de) | Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren | |
CN105393240B (zh) | 具有辅助异步向量处理器的异步处理器的方法和装置 | |
DE102019104394A1 (de) | Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen | |
GB2581691A (en) | Cooperatively operating a network of supervised learning processors to concurrently distribute supervised learning processor training | |
DE112017006568T5 (de) | Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern | |
CN103210382A (zh) | 基于总线装置健康信息和相关功率管理而仲裁通信总线上的总线事务 | |
CN103946803A (zh) | 具有高效工作排队的处理器 | |
CN106844041A (zh) | 内存管理的方法及内存管理系统 | |
CN109669774A (zh) | 硬件资源的量化方法、编排方法、装置及网络设备 | |
CN104679691B (zh) | 一种用于gpdsp的采用主机计数的多核dma分段数据传输方法 | |
CN110334036A (zh) | 一种实现缓存数据调度的方法和装置 | |
CN111722918A (zh) | 业务标识码生成方法、装置、存储介质及电子设备 | |
CN104679689A (zh) | 一种用于gpdsp的采用从机计数的多核dma分段数据传输方法 | |
CN109993572A (zh) | 留存率统计方法、装置、设备及存储介质 | |
CN108199985A (zh) | GPGPU中基于全局节点信息的NoC仲裁方法 | |
CN107949837A (zh) | 用于i/o数据包压缩的寄存器文件 | |
CN109918403A (zh) | 数据校验方法、装置、计算机设备和存储介质 | |
CN105574032A (zh) | 规则匹配运算方法及装置 | |
CN112148665A (zh) | 缓存的分配方法及装置 | |
GB2611621A (en) | Method of federated learning, electronic device, and storage medium | |
CN108399159A (zh) | 对大体量语料进行训练的方法、装置与系统 | |
US9053031B2 (en) | System and method for handling data access | |
CN102567283B (zh) | 一种利用gpu对小矩阵求逆的方法 | |
CN116089477B (zh) | 分布式训练方法及系统 | |
CN107295059A (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 |