CN110019830A - 语料处理、词向量获取方法及装置、存储介质及设备 - Google Patents
语料处理、词向量获取方法及装置、存储介质及设备 Download PDFInfo
- Publication number
- CN110019830A CN110019830A CN201710854725.0A CN201710854725A CN110019830A CN 110019830 A CN110019830 A CN 110019830A CN 201710854725 A CN201710854725 A CN 201710854725A CN 110019830 A CN110019830 A CN 110019830A
- Authority
- CN
- China
- Prior art keywords
- sub
- word
- vector
- train request
- text
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及一种语料处理方法及装置、词向量获取方法及装置、计算机存储介质以设备,计算端在发送训练请求以请求训练之前已将初始确定的词向量发送至存储端,在发送训练请求后进行训练过程中,无需再进行词向量的发送,也无需向存储端拉取词向量进行训练以及将在本地进行训练后的更新值传送给存储端,只需发送训练请求以请求存储端进行训练获取词向量即可,减少网络通信量。存储端收到训练请求进行训练时,只需对列向量中与训练请求中携带的编号对应的行进行训练,提高训练效率,且通过在存储端本地进行训练实现列向量更新,无需将列向量分发给计算端进行训练,也无需接收计算端进行训练后传递的更新值,减少网络通信量,提高词向量获取效率。
Description
技术领域
本发明涉及计算机信息处理技术领域,特别涉及一种语料处理、词向量获取方法及装置、计算机存储介质及设备。
背景技术
随着计算机应用领域的不断扩大,自然语言处理受到人们的高度重视,机器翻译、语音识别以及信息检索等各方面的应用对计算机的自然语言处理能力提出了越来越高的要求。为了使计算机能够处理自然语言,需要对自然语言进行建模,即开始对统计语言模型开始研究,为了提高自然语言处理的有效性,在研究统计语言模型的基础上,可通过软件工具word2vec(也可称为获取词向量的工具)进行语言训练,其不但可根据给定的语料库进行训练得到语言模型,且可将词语表达为向量形式即获得词向量。
目前,常采用现有的Parameter Server系统框架来实现word2vec的语言模型训练以及获取词向量的过程,在Parameter Server系统架构中,包括多个server节点(即存储节点,也称为存储端)和多个client节点(即计算节点,也称为计算端),每个server节点只负责分到的部分参数,多个server共同维持所有参数的更新,每个client节点与自己对应的server节点通信,也只负责分到的部分数据和处理任务。即word2vec通过ParameterServer系统框架训练语言模型的过程中,client节点批量从server节点拉取部分词向量训练计算梯度和更新值,计算完成后将词向量更新并推送至server节点,server节点进行全局的更新,server节点再向client节点传送新的参数。
由于词语的多样性,语料库的数据大小可达到亿级或千亿级以上,通过ParameterServer系统架构训练语言模型并获取词向量的过程中,server节点和client节点之间需要传输PB(千万亿字节)级超大网络通信数据,按照万兆网卡速率计算,至少需要一年才能完成数据的传输,从而导致word2vec实现语言模型训练以及词向量获取的效率低。
发明内容
基于此,有必要针对词向量获取效率低的问题,提出一种语料处理、词向量获取方法及装置、计算机存储介质及设备。
一种语料处理方法,应用于计算端,包括以下步骤:
获取预设语料文本中的子语料文本,分析确定所述子语料文本中的词及各词的编号;
基于所述子语料文本确定应用在当前计算端的词向量,所述词向量的行与词的编号对应;
根据存储端与向量的列标识之间的对应关系、以及所述词向量中的各列向量的列标识,分别将与各存储端对应的列标识对应的列向量发送至各所述存储端;
将所述子语料文本切分成各子训练文本;
将各所述子训练文本中的一个子训练文本作为本轮子训练文本;
向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求;
在接收到各所述存储端响应所述训练请求返回的回应信息后,将各所述子训练文本的下一个子训练文本作为本轮训练文本,返回向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求的步骤,直到各所述子训练文本中各词的编号的训练请求发送完毕。
还提供一种词向量获取方法,应用于存储端,包括以下步骤:
接收各计算端发送的词向量中的列向量,所述列向量的列标识与当前存储端对应,所述词向量的行与词的编号对应;
响应所述计算端广播的携带本轮子训练文本中各词的编号的训练请求,对所述列向量中所述训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于所述训练请求的子更新值;
向广播所述训练请求的所述计算端返回回应信息;
获取根据各存储端基于所述训练请求的子更新值确定的总更新值;
根据所述总更新值对所述列向量中所述训练请求携带的编号对应的各行向量进行更新;
返回响应计算端广播的携带本轮子训练文本中各词的编号的训练请求的步骤,直到广播所述训练请求的所述计算端的各子训练文本中各词的编号的训练请求均响应完毕,获得更新后的所述列向量。
还提供一种语料处理装置,应用于计算端,包括:
子文本获取模块,用于获取预设语料文本中的子语料文本,分析确定所述子语料文本中的词及各词的编号;
词向量初始模块,用于基于所述子语料文本确定应用在当前计算端的词向量,所述词向量的行与词的编号对应;
列向量发送模块,用于根据存储端与向量的列标识之间的对应关系、以及所述词向量中的各列向量的列标识,分别将与各存储端对应的列标识对应的列向量发送至各所述存储端;
子文本切分模块,用于将所述子语料文本切分成各子训练文本;
选择模块,用于将各所述子训练文本中的一个子训练文本作为本轮子训练文本;
训练请求发送模块,用于向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求;
设置模块,用于在接收到各所述存储端响应所述训练请求返回的回应信息后,将各所述子训练文本中的下一个子训练文本作为本轮训练文本,所述训练请求发送模块根据所述设置模块设置的本轮训练文本,向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求,直到各所述子训练文本中各词的编号的训练请求发送完毕。
还提供一种词向量获取装置,应用于存储端,包括:
列向量接收模块,用于接收各计算端发送的词向量中的列向量,所述列向量的列标识与当前存储端对应,所述词向量的行与词的编号对应;
训练请求响应模块,用于响应所述计算端广播的携带本轮子训练文本中各词的编号的训练请求,对所述列向量中所述训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于所述训练请求的子更新值,并在行更新模块对行向量进行更新之后,返回执行响应计算端广播的携带本轮子训练文本中各词的编号的训练请求,直到广播所述训练请求的所述计算端的各子训练文本中各词的编号的训练请求均响应完毕;
回应模块,用于向广播所述训练请求的所述计算端返回回应信息;
总更新值获取模块,用于获取根据各存储端基于所述训练请求的子更新值确定的总更新值;
行更新模块,用于根据所述总更新值对所述列向量中所述训练请求携带的编号对应的各行向量进行更新;
更新列向量获取模块,用于在所述训练请求响应模块对各子训练文本中各词的编号的训练请求均响应完毕后、所述行更新模块更新各行向量完毕之后,获得更新后的所述列向量。
一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一项所述词向量获取方法的步骤。
一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时上述任意一项所述的词向量获取方法。
通过上述语料处理方法及装置、词向量获取方法及装置、计算机存储介质以设备,首先,计算端在发送训练请求以请求语言训练之前已将初始确定的词向量发送给了存储端,在发送训练请求后进行训练过程中,无需再进行词向量的发送,也无需向存储端拉取词向量进行训练以及将在本地进行训练后的更新值传送给存储端,只需发送训练请求以请求存储端进行训练获取词向量即可,减少网络通信量,存储端收到训练请求进行训练时,只需对列向量中的对应行进行训练,无需对词向量的所有列进行训练,提高训练效率,且通过在存储端进行训练,无需将列向量分发给计算端进行训练,也无需接收计算端进行训练后传递的更新值,在接收到训练请求时即可进行语言模型训练,即在本地进行训练过程,以对列向量实现更新,减少了存储端与计算端之间的交互过程,减少了网络通信,提高了词向量获取的效率。
附图说明
图1为本发明一个实施例的工作环境示意图;
图2为一个实施例中的计算端设备/存储端设备的组成结构示意图;
图3为一个实施例的语料处理方法的流程示意图;
图4为一个实施例的词向量获取方法的流程示意图;
图5为另一个实施例的词向量获取方法中获取根据各存储端基于训练请求的子更新值确定的总更新值的步骤的子流程示意图;
图6为一现有获取词向量系统的原理图;
图7为另一现有获取词向量方式的Parameter Server系统框架图;
图8为图7中现有获取词向量方式的原理图;
图9为本发明一具体实施例的系统架构图;
图10为图9中一具体实施例的系统架构的工作原理图;
图11为一具体实施例中获取总更新值的工作原理图;
图12为另一具体实施例中获取总更新值的工作原理图;
图13为一个实施例的语料处理装置的模块示意图;
图14为一个实施例的词向量获取装置的模块示意图;
图15为另一个实施例的词向量获取装置中更新列向量获取模块的子模块示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
图1示出了本发明一个实施例中的工作环境示意图,如图1所示,其工作环境涉及计算端设备10和存储端设备20,计算端设备10和存储端设备20通过网络30连接,计算端设备10与存储端设备20之间可以通过网络30进行通信。计算端设备10对子语料文本分析处理后,分别将与各存储端对应的列标识对应的列向量发送至各存储端,并向各存储端广播携带本轮子训练文本中各词的编号的训练请求。存储端设备20通过接收各计算端设备10发送的词向量中的列向量,响应训练请求进行训练,获取根据各存储端基于训练请求的子更新值确定的总更新值,根据总更新值对列向量中训练请求携带的编号对应的各行向量进行更新。
该计算端设备10可以是任何一种能够实现智能输入输出以及语料处理的设备,如计算服务器等。该存储端设备20可以是任何一种能够实现智能输入输出以及词向量获取的设备,如存储服务器等。计算端设备10和存储端设备20可以分别为一个或多个。本实施例涉及在计算端设备10进行语料处理的方案以及在存储端设备20进行词向量获取的方案。
计算端设备10/存储端设备20在一个实施例中的内部结构图如图2所示。该计算端设备10/存储端设备20包括通过系统总线连接的处理器、存储介质、网络接口和内存。其中,计算端设备10/存储端设备20的存储介质存储有操作系统和计算机可读指令,该计算机可读指令在被处理器执行时,可使得处理器实现一种语料处理方法/词向量获取方法。计算端设备10/存储端设备20的处理器用于提供计算和控制能力,支撑整个计算端设备10/存储端设备20的运行。计算端设备10/存储端设备20的内存中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种语料处理方法/词向量获取方法。计算端设备10/存储端设备20的网络接口用于与网络30连接和通信。
图3提供了一个实施例的语料处理方法,该方法应用于计算端(对应计算端设备10),包括步骤S310-步骤S360。
S310:获取预设语料文本中的子语料文本,分析确定子语料文本中的词及各词的编号。
语料文本是书面语言的表现形式,可以是任何文字材料,如文章、书籍等,语料文本可以理解为由各词组合而成的文本。在本实施例中,预设语料文本可以理解为预先存储在外部存储器中的语料文本,作为后续训练获取词向量的训练样本,其中,外部存储器可以为分布式的存储服务器等。计算端在向存储端发送训练请求以请求训练之前,首先需要从外部存储器的预设语料文本中获取子语料文本,子语料文本属于预设语料文本的一部分,各计算端分别获取的子语料文本组合形成预设语料文本。
子语料文本为各词组合而成的文本,计算端在获取到子语料文本之后,对子语料文本进行分析,确定子语料文本中的词,例如,一个子语料文本A为“我想去吃饭”,对其进行分析,即可确定子语料文本A中的词为“我”、“想”、“去”、“吃”以及“饭”。在对子语料文本进行分析获取各词时,还生成各词的编号,以便后续发送训练请求时携带,以上述子语料文本A为例,一个示例中的词的编号可以是:“我”的编号为1、“想”的编号为2、“去”的编号为3、“吃”的编号为4以及“饭”的编号为5。
S320:基于子语料文本确定应用在当前计算端的词向量,词向量的行与词的编号对应。
当前计算端可以理解为执行上述语料处理方法的步骤的主体,该子语料文本即是当前计算端获取到的文本,应用在当前计算端的词向量可以理解为当前计算端基于自身获取的子语料文本确定的词向量。具体地,词向量为各词分别对应的单个词向量合并而成的,即每个词对应单个词向量,子语料文本中的词的数量较多的,在基于子语料文本确定应用在当前计算端的词向量可以理解为基于子语料文本确定应用在当前计算端的各词对应的词向量,这些基于子语料文本确定应用在当前计算端的各词分别对应的单个词向量合并即可形成上述词向量。另外,词向量是词对应的向量,词向量的行与词的编号对应,如此,在获知词的编号的情况下,可通过词的编号获知在词向量中的行。
例如,对计算端1,获取子语料文本1,对计算端2,获取子语料文本2,计算端1基于子语料文本1确定的词向量即为基于子语料文本1确定的应用在当前计算端(即计算端1)的词向量。计算端2基于子语料文本2确定的词向量即为基于子语料文本2确定的应用在当前计算端(即计算端2)的词向量。
具体地,当前计算端获取到子语料文本后,基于子语料文本确定应用在当前计算端的各词与当前计算端获取的子语料文本中的各词可以相同或不同,例如,当前计算端获取的子语料文本中各词包括a、b和c,在基于该子语料文本确定应用在当前计算端的各词可以包括a和b,说明基于该子语料文本确定应用在当前计算端的各词与当前计算端获取的子语料文本中的各词是不同的,若基于该子语料文本确定应用在当前计算端的各词包括a、b和c,则是相同的。
S330:根据存储端与向量的列标识之间的对应关系、以及词向量中的各列向量的列标识,分别将与各存储端对应的列标识对应的列向量发送至各存储端。
存储端的数量可以为至少两个,每个存储端各自负责对应的列,即每个存储端各自负责存储对应的列标识对应的列向量,例如,词向量为100行20列,存储端1负责100行的第1列到第10列的列向量,存储端2负责100行的第11列到第20列的列向量,即存储端1和存储端2一起负责词向量的所有行所有列。
在计算端中预先存储有存储端与向量的列标识之间的对应关系,计算端在确定词向量后,即可根据该对应关系,以及词向量中的各列向量的列标识,分别将与各存储端对应的列标识对应的列向量发送至各存储端。对应关系是指两个对象通过某个关系联系起来,即两个对象之间存在关联,存储端与向量列标识之间的对应关系表示存储端与向量的列标识之间存在关联,通过指定的存储端,可查找到对应的向量的列标识,通过指定的向量的列标识可超找对应的存储端,可以通过关系表体现。例如,存储端与向量的列标识之间的对应关系中,存储端1与第1列至第10列的列标识对应,存储端2与第11列至第20列的列标识对应,计算端在得到词向量之后,可根据上述对应关系以及词向量中的各列向量的列标识获知对应的存储端,比如,可从对应关系中获知与词向量中的第1列至第10列的列向量标识对应的存储端为存储端1,以及从对应关系中获知与词向量中的第11列至第20列的列向量标识对应的存储端为存储端2,然后可将第1列至第10列的列标识对应的第1列至第10列的列向量发送至存储端1,将与存储端2对应的第11列至第20列的列标识对应的第11列至第20列的列向量发送至存储端2。
S340:将子语料文本切分成各子训练文本。
当前计算端获取到子语料文本之后,还需将其切分成各子训练文本(即将子语料文本切分成各minibatch训练集),例如,针对子语料文本A,可将子语料文本A切分成5个子训练文本,分别为子训练文本1、子训练文本2、子训练文本3、子训练文本4、子训练文本5。
S350:将各子训练文本中的一个子训练文本作为本轮子训练文本。
由于在切分子语料文本时,可获得各子训练文本,在发送携带本轮子训练文本中各词的编号的训练请求时,需要预先从各子训练文本中指定本轮子训练文本,即从各子训练文本中选择一个子训练文本作为本轮子训练文本。例如,对于各子训练文本中的子训练文本1、子训练文本2、子训练文本3、子训练文本4以及子训练文本5,可将子训练文本1作为本轮子训练文本。
S360:向各存储端广播携带本轮子训练文本中各词的编号的训练请求。
在向各存储端广播训练请求时,是以子训练文本为单位进行处理的,将各子训练文本中的一个子训练文本作为本轮训练文本,向各存储端广播携带本轮子训练文本中各词的编号的训练请求。例如,子训练文本1中各词为“我”和“想”,编号分别对应为1和2,首先,向各存储端广播携带子训练文本1中各词的编号的训练请求,即该训练请求中携带编号1和2,各存储端在接收到该训练请求后,根据其中的编号1和2可对应到各自列向量中的对应行。
S370:在接收到各存储端响应训练请求返回的回应信息后,将各子训练文本中的下一个子训练文本作为本轮训练文本,返回向各存储端广播携带本轮子训练文本中各词的编号的训练请求的步骤,直到各子训练文本中各词的编号的训练请求发送完毕。
存储端在接收到训练请求后可响应训练请求进行训练,且返回回应信息,计算端在接收到存储端响应训练请求返回回应信息后,将各子训练文本中下一个子训练文本作为本轮训练文本,例如,在上述训练文本1作为本轮子训练文本对应的训练请求已发送且收到返回的回应信息后,将上述子训练文本2作为本轮训练文本,即将本轮子训练文本更新为子训练文本2,并返回向各存储端广播携带本轮子训练文本中各词的编号的训练请求的步骤,此时,该训练请求中携带的是子训练文本2中各词的编号,在接收到各存储端响应该携带子训练文本2中各词的编号的训练请求返回的回应信息时,将各子训练文本中的下一个子训练文本作为本轮训练文本,例如,将上述子训练文本3作为本轮训练文本,并返回向各存储端广播携带本轮子训练文本中各词的编号的训练请求的步骤,此时,该训练请求中携带的是子训练文本3中各词的编号,依次循环,直到各子训练文本中各词的编号的训练请求发送完毕,如上的5个子训练文本,则直到上述5个子训练文本中各词的编号的训练请求发送完毕。具体地,将各子训练文本中的下一个子训练文本作为本轮训练文本的方式可以包括:将各子训练文本中未发送编号的下一个子训练文本作为本轮子训练文本,如上,在将子训练文本1中各词的编号作为训练请求中携带的信息发送之后,标识该子训练文本1中各词的编号是已发送了,在进行下一轮的训练请求的发送时,不在将子训练文本1中各词的编号作为训练请求携带的信息了,而是在编号还未发送过的子训练文本2、子训练文本3、子训练文本4以及子训练文本5中选择下一个子训练文本作为本轮训练文本,例如,将子训练文本2作为本轮子训练文本。
通过上述语料处理方法,计算端在发送训练请求以请求语言训练之前已将初始确定的词向量发送给了存储端,在发送训练请求后训练过程中,无需再进行词向量的发送,也无需向存储端拉取词向量进行训练以及将在本地进行训练后的更新值传送给存储端,只需发送训练请求以请求存储端进行训练获取词向量即可,减少在训练过程中与存储端之间的网络通信量,提高训练效率。
在其中一个实施例中,基于子语料文本确定应用在当前计算端的词向量的方式包括:当前计算端从各计算端的子语料文本中的词的并集中,拉取部分词,其中,各计算端分别拉取的部分词的交集为零,各计算端分别拉取的的各部分词的并集为各计算端的子语料文本中的词的并集;当前计算端对拉取的部分词进行向量初始化,获得子语料文本应用在当前计算端的词向量。
计算端各自获得对应的子语料文本,各子语料文本是来自同一个预设语料文本,可能存在词重合,为减少计算量,集群平台对各计算端的子语料文本中的词求并集,去除重合的词,集群平台即为各计算端集中所在的平台。如此,当前计算端可从各计算端的子语料文本中的词的并集中,拉取部分词,各计算端的子语料文本中的词的并集中不存在重合的词,从而,各计算端分别拉取的部分词之间不存在重合的词,然后,当前计算端对拉取的部分词进行向量初始化,获得子语料文本应用在当前计算端的词向量,在很大程度上减少计算量。
计算端拉取的部分词与计算端原先获得的子语料文本中的词可能存在不同,例如,计算端1获得的子语料文本1中的词包括a、b和c,计算端2获得的子语料文本2中的词包括c、d和e,基于子语料文本确定应用在当前计算端的词向量具体为从子语料文本1的词和子语料文本2的词的并集中拉取的部分词的词向量,比如,计算端1拉取了词a和b(这与原先子语料文本1中的词不同),计算端2拉取了词c、d和e(这与原先子语料文本2中的词不同)。
在其中一个实施例中,上述回应信息包括子更新值。
在接收到各存储端响应训练请求返回的回应信息之后,将各子训练文本中的下一个子训练文本作为本轮训练文本之前,还包括步骤:
根据各存储端返回的子更新值获得总更新值,并将总更新值广播至各存储端。
存储端在接收到计算端广播的携带本轮子训练文本中各词的编号的训练请求后响应,对列向量中训练请求携带的编号对应的各行向量进行语言训练,可获得当前存储端基于训练请求的子更新值,存储端可将子更新值返回给计算端。如此,计算端在接收到各存储端发送给你的子更新值后,可根据各存储端返回的子更新值获得总更新值,并将总更新值广播至各存储端。具体地,对各存储端返回的子更新值求和获得总更新值,并广播至各存储端。即在本实施例中,是通过在计算端进行总更新值的获取,将其广播至各存储端即可,各存储端接收该计算端广播的总更新值进行向量更新,如此,计算端只需进行一次广播,即可将总更新值广播到各存储端,然后存储端即可实现向量更新,各存储端之间无需分别进行子更新值的传递,即各存储端无需各自将得到的子更新值分别广播给其他存储端,可减少存储端之间的通信量,进一步减少计算量,从而提高向量更新效率。
例如,计算端接收各存储端基于训练请求返回的子更新值为A1、A2、A3、A4和A5,各存储端返回的子更新值获得总更新值为B1,并将总更新值B1再广播至各存储端。
在其中一个实施例中,在向各存储端广播携带本轮子训练文本中各词的编号的训练请求时,该训练请求的数量为至少两个,任意一个训练请求携带小于或等于预设数量个词的编号,各训练请求分别携带的词的编号的数量之和与本轮子训练文本中各词的编号的总数量相同。
一个子训练文本(一个minibatch训练集)中可能包含的词太多,这样一个训练请求中携带的编号太多,传输时容易出错,为确保传输的准确性,如此,可对子训练文本进行切分,分成各分量训练文本。具体地,向各存储端广播携带本轮子训练文本中各词的编号的训练请求的步骤包括:根据预设数量个词,对本轮子训练文本进行切分获得各分量训练文本,其中,分量训练文本的数量至少两个,各分量训练文本中的词的数量小于或等于预设数量;向各存储端广播各训练请求,各训练请求分别携带分量训练文本的词的编号。即将子训练文本分成各分量训练文本,根据各分量训练文本来进行训练请求的发送,可以理解,向各存储端广播携带本轮子训练文本中各词的编号的训练请求的数量至少为两个(即分量训练文本的数量至少为两个),其中,任意一个训练请求携带小于或等于预设数量个词的编号(即与分量训练文本中的词的数量对应),且本轮子训练文本中对应的各训练请求分别携带的词的编号的数量之和与本轮子训练文本中各词的编号的总数量相同,即确保各分量训练文本的总和即为本轮子训练文本。
例如,子训练文本B中有20个词,预设数量为3,对子训练文本B根据预设数量3进行切分,分成7个分量训练文本,7个分量训练文本中的词的数量分别为3、3、3、3、3、3和2,则训练请求的数量为7,前6个训练请求中携带3个词的编号,最后一个训练请求携带2个词的编号。
请参阅图4,本发明一个实施例还提供一种词向量获取方法,应用于存储端(对应存储端设备20),包括以下步骤S410-S460:
S410:接收各计算端发送的词向量中的列向量,列向量的列标识与当前存储端对应,词向量的行与词的编号对应。
当前存储端可以理解为执行上述词向量获取方法的主体,存储端负责对应的列标识对应的列向量,各计算端在分别发送列向量时,是将与与存储端对应的列标识对应的列向量发送至该存储端,比如,各计算端分别将自己负责的词向量的第1列至第10列的列向量发送到对应的存储端1,将第11列至第20列的列向量发送到对应的存储端2。因此,在存储端,接收的各计算端发送的词向量的列向量的列标识与当前存储端对应,例如,存储端1接收第1列至10列的列向量,存储端2接收第11列至第20列的列向量。
S420:响应计算端广播的携带本轮子训练文本中各词的编号的训练请求,对列向量中训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于训练请求的子更新值。
在计算端,向各存储端广播携带本轮子训练文本中各词的编号的训练请求,则存储端在接收到计算端广播的训练请求后,对当前存储端中列向量中训练请求携带的编号对应的各行向量进行语言训练,即可获得当前存储端基于训练请求的子更新值。在一个具体示例中,可通过word2vec对列向量中训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于训练请求的子更新值。
例如,本轮子训练文本中各词的编号包括1、4和5,由于编号与词向量的行对应,当前存储端通过该编号可定位到当前存储端中列向量的行,比如,分别对应列向量中的行为1、4和5行,如此,可对列向量中1、4和5行的数据进行语言训练,获得当前存储端基于训练请求的子更新值。每个存储端执行类似的更新操作,比如有10个存储端,每个存储端分别会得到各自基于训练请求的子更新值。
S430:向广播训练请求的计算端返回回应信息。
当前存储端在获得子更新值后,向广播该训练请求的计算端返回回应信息,以通知计算端本轮训练完毕,计算端在接收到回应信息后,就可开启下一轮的训练请求的发送。
S440:获取根据各存储端基于训练请求的子更新值确定的总更新值。
存储端基于训练请求进行语言训练获得子更新值后,即可获取根据各存储端基于训练请求的子更新值确定的总更新值,作为后续向量更新的依据。
S450:根据总更新值对列向量中训练请求携带的编号对应的各行向量进行更新。
获取总更新值后,即可根据总更新值对列向量中训练请求携带的编号对应的各行向量进行更新。例如,如上,训练请求中携带的编号1、4和5,得到总更新值后,根据总更新值对列向量中编号1、4和5分别对应的1、4和5行向量进行更新,即对列向量中的第1、4和5行的行向量进行了更新。
S460:返回响应计算端广播的携带本轮子训练文本中各词的编号的训练请求的步骤,直到广播训练请求的计算端的各子训练文本中各词的编号的训练请求均响应完毕,获得更新后的列向量。
在计算端,将子语料文本切分成各子训练文本,向存储端发送的训练请求携带本轮子训练文本中各词的编号,直到各子训练文本中各词的编号的训练请求发送完毕,对应地,在存储端,响应完一个接收到的训练请求进行语言训练并获得总更新之后,继续响应下一个接收到的训练请求进行语言训练,直到广播训练请求的计算端的各子训练文本中各词的编号的训练请求均响应完毕,即全部训练完毕,此时,即可获得更新后的列向量。
通过上述词向量获取方法,存储端收到计算端发送的训练请求进行训练时,只需对列向量中的对应行进行训练,无需对词向量的所有列进行训练,提高训练效率,且通过在存储端进行训练,无需将列向量分发给计算端进行训练,也无需接收计算端进行训练后传递的更新值,在接收到训练请求时即可进行语言模型训练,即在本地进行训练过程,以对列向量实现更新,减少了存储端与计算端之间的交互过程,减少了网络通信,提高了词向量获取的效率。
在其中一个实施例中,回应信息包括当前存储端基于训练请求的子更新值。
获取根据各存储端基于训练请求的子更新值确定的总更新值的步骤包括:
接收计算端根据各存储端返回的子更新值确定的总更新值。
即当前存储端在响应训练请求进行语言训练获得子更新值后,可将该子更新值返回至广播该训练请求的计算端,如此,计算端可接收各存储端返回的子更新值,计算端即可根据各存储端返回的子更新值确定总更新值,具体地,对各存储端返回的子更新值求和获得总更新值,然后广播给各存储端,这样各存储端即可接收计算端根据各存储端返回的子更新值确定的总更新值。如此,计算端只需进行一次广播,即可将总更新值广播到各存储端,存储端只需要接收计算端广播的总更新值即可,可减少存储端之间的通信量,进一步减少计算量,从而提高向量更新效率。
请参阅图5,在另外一个实施例中,获取根据各存储端基于训练请求的子更新值确定的总更新值的步骤S440包括:
S441:将当前存储端基于训练请求的子更新值,广播至除当前存储端以外的其他各存储端,并接收其他各存储端广播的其他各前存储端基于训练请求的子更新值。
S442:基于当前存储端基于训练请求的子更新值、除当前存储端以外的其他各前存储端基于训练请求的子更新值,确定总更新值。
存储端响应训练请求得到子更新值后,不再向计算端返回子更新,就简单返回一个回应信息,以通知计算端本轮子训练文本对应的训练结束,可开启下一轮训练请求的发送。在本实施例中,当前存储端通过向其他存储端广播得到的子更新值,并接收其他存储端广播的其他各当前存储端基于训练请求的子更新值,如此,每个存储端都会得到各存储端基于训练请求的子更新值,基于当前存储端基于训练请求的子更新值、除当前存储端以外的其他各前存储端基于训练请求的子更新值,确定总更新值。如此,在存储端之间进行子更新值的传递以及更新值的计算,无需再将子更新值再发送至计算端进行总更新值的计算,减少存储端与计算端之间的通信,减少计算端的计算量。
在其中一个实施例中,本轮子训练中,携带本轮子训练文本中各词的编号的训练请求的数量为至少两个,任意一个训练请求携带小于或等于预设数量个词的编号,各训练请求分别携带的词的编号的数量之和与本轮子训练文本中各词的编号的总数量相同。
在计算端,可对子训练文本进行切分,分成各分量训练文本,其数量至少两个,其中,各分量训练文本中的词的数量小于或等于预设数量,向各存储端广播各训练请求,各训练请求分别携带分量训练文本的词的编号。即针对单个子训练文本,需要发送至少两个训练请求。因此,在存储端,携带本轮子训练文本中各词的编号的训练请求的数量为至少两个,任意一个训练请求携带小于或等于预设数量个词的编号,即与单个分量训练文本中词的数量对应。如此,在进行训练请求发送时,其携带的是数量较少的词的编号,避免携带词的编号太多易导致传输出错的问题,确保传输的准确性,。
在其中一个实施例中,根据总更新值对列向量中训练请求携带的编号对应的各行向量进行更新的方式包括:
根据总更新值,通过无锁方式对列向量中训练请求携带的编号对应的各行向量分别进行更新。
在计算端,针对单个子训练文本,可发送至少两个训练请求,训练请求之间携带的编号可能有相同,如此,在存储端基于子训练文本对应的各训练请求进行训练后更新向量时,可能需要对相同行的向量进行更新,即针对不同训练请求可能需要进行相同行的更新,如果采用加锁方式(等待当前更新完成后得到解锁后才能进行下一次的更新)进行更新,需要等待的时间太久,在本实施例中,为了提高效率,采用无锁方式进行更新,即在进行向量更新时,即使不同训练请求中存在对相同编号对应的行的更新,无需等待即可进行更新。
下面以一具体实施例对上述语料处理方法、词向量获取方法的具体过程加以说明。
请参阅图6,为一现有获取词向量系统的原理图,是采用数据并行方式实现词向量获取,每轮迭代开始前,driver端将所有词向量的所有列广播至每个计算端(计算节点,又称client节点)上,迭代过程中计算节点更新本地局部词向量,每轮迭代结束后,driver端收集合并所有计算节点更新后的局部词向量,更新全局词向量。单台driver端(对应服务器)需要TB(太字节)级超大内存,目前现有的服务器均没有如此之大的内存,且在单台服务器中执行如此大量的更新,效率低。
请参阅图7和图8,图7为另一现有获取词向量方式的Parameter Server系统框架图,传统Parameter-Server系统架构是由计算端(计算节点,也称为client端)和存储端(存储节点,也称为server端)组成的,计算端负责计算,存储端是负责统一存储所有计算端的参数,存储端之间是连通的。图8为图7中现有获取词向量方式的原理图,word2vec计算过程中计算端批量从存储端拉取部分词向量计算梯度和更新值,计算完成后将梯度和更新值推送至存储端,由存储端进行向量更新。使用传统的Parameter-Server系统架构方式实现word2vec,需要PB级超大网络通信数据,按照万兆网卡计算,需要超过一年才能传输完这些数据,训练效率低。
为减少训练过程中的通信量,提高训练效率,本具体实施例提供的语料处理方法以及词向量获取方法的过程通过图9的以具体实施的系统架构实现,图10为图9中一具体实施例的系统架构的工作原理图,其中,计算端数量为n,存储端数量为x,一个实例中,n可以为3,x可以为3,具体流程如下:
如图9和10所示,首先,计算端1到计算端n分别获取对应的子语料文本,计算端1到计算端n分别顺序对应子语料文本1到子语料文本n,计算端1到计算端n分别基于各自的子语料文本确定应用在当前计算端的词向量。具体地,以在计算端1上进行语料处理方法为例,即计算端1为当前计算端,计算端1从各计算端(包括计算端1至计算端n)的子语料文本中的词的并集中,拉取部分词,当前计算端即计算端1对拉取的部分次进行向量初始化,获得子预料文本应用在当前计算端的词向量A1,如图9所示,词向量A1中包括K1个词的词向量,分别为A1至AK1词的词向量,A1至AK1表示计算端1上部分词中的K1个词,(a1,1,……,a1,m)为词A1的词向量,m为词向量的列的数量,(aK1,1,……,aK1,m)为词AK1的词向量。其他计算端是进行类似的过程,如此,计算端2获取词向量A2,词向量A2中包括K2-K1个词的词向量,分别为AK1+1至AK2词的词向量,其中,K2大于K1,AK1+1至AK2表示计算端2上部分词中的K2-K1个词,(ak1+1,1,……,ak1+1,m)为词AK1+1的词向量,(aK2,1,……,aK2,m)为词AK2的词向量。依次类推,计算端n获取词向量An,词向量An中包括K3-K2个词的词向量,分别为AK2+1至AK3词的词向量,其中,K3大于K2,AK2+1至AK3表示计算端n上部分词中的K3-K2个词,(ak2+1,1,……,ak2+1,m)为词AK2+1的词向量,(aK3,1,……,aK3,m)为词AK3的词向量。综上,在本实施例中,各部分词的并集的词的数量为K3。
然后,根据存储端与向量的列标识之间的对应关系、以及词向量中的各列向量的列标识,各计算端各自分别将与各存储端对应的列标识对应的列向量发送至各存储端。如图9所示,存储端1对应的列标识为1到h,存储端2对应的列标识为h+1至L,存储端x对应的列标识为L+1到m,计算端1至计算端n各自分别将本地的词向量中各行的第1列至第h列发送到存储端1,如此,存储端1接收各计算端发送的列向量的各行的第1列至第h列,如图9所示,存储端1中存储有h列的列向量且列向量中行的数量与各计算端分别拉取的各部分词的并集中词的数量相同,均为K3。计算端1至计算端n各自分别将本地的词向量中各行的第h+1列至第L列发送到存储端2,如此,存储端2中存储有L-h列的列向量且列向量中行的数量与各计算端分别拉取的的各部分词的并集中词的数量相同,均为K3,其中,L大于h。计算端1至计算端n各自分别将本地的词向量中各行的第L+1列至第m列发送到存储端x,存储端x中存储有m-L列的列向量且列向量中行的数量与各计算端分别拉取的的各部分词的并集中词的数量相同,均为K3,其中,m大于L。
如图9所示,在存储端1中,为各计算端分别发送的第1列向量组成的第1列向量,为各计算端分别发送的第h列向量组成的第h列向量。在存储端2中,为各计算端分别发送的第h+1列向量组成的第h+1列向量,为各计算端分别发送的第L列向量组成的第L列向量。在存储端x中,为各计算端分别发送的第L+1列向量组成的第L+1列向量,为各计算端分别发送的第m列向量组成的第m列向量。即各计算端分别对应的子语料文本应用在当前计算端的词向量合并形成K3行m列的词向量,各存储端分别对应的列向量合并形成K3行m列的词向量。
其次,计算端将各自本地的子语料文本切分成各子训练文本,向各存储端广播携带本轮子训练文本中各词的编号的训练请求。
存储端响应计算端广播的携带本轮子训练文本中各词的编号的训练请求,对列向量中训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于训练请求的子更新值。
再次,各存储端基于训练请求的子更新值确定的总更新值:有两种获取总更新值的方式,其中一种方式,如图11所示,每个存储端将子更新值推送至所有其他存储端,随后所有存储端分别对所有子更新值求和得到总更新值,然后根据总更新值进行向量更新。另一种方式,如图12所示,各存储端将各自得到的子更新值返回到广播训练请求的计算端,在计算端对各存储端基于训练请求返回的子更新值进行求和得到总更新值,然后将其再广播到所有存储端,存储端再根据总更新值进行行向量更新,如此,计算端只需再广播将总更新值推送到各存储端,存储端即可进行更新了,减少通信量,通过该方式的通信量计算公式为T=(b+b×w)×8×S×2+(b×w+b×w×n1)×4×S×2,其中,d为单词维数,即词向量的列的数量m,w为平均上下文大小,n1为负样本采样次数,b为每轮minibatch扫描次数即上述预设数量,S为存储端实例数即存储端的数量x。在本具体实施例中,采用第二中方式在计算端进行子更新值求和得到总更新值,再广播至各存储端。
进一步地,在存储端,根据总更新值对列向量中训练请求携带的编号对应的各行向量进行更新。
根据上述计算通信量的公式可知,通信量的减少与d/S成正比,为了增大加速比,在内存足够的情况下,需要尽量减少存储端实例数,少量实例完成海量的计算,势必要求多线程并行在同一份数据上执行计算更新,如果加锁执行向量更新过程,性能会降低。我们使用无锁的方式实现向量更新,即根据总更新值,通过无锁方式对列向量中训练请求携带的编号对应的各行向量分别进行更新。首先,存储端训练过程中多线程间共享内存读取和更新只针对Float类型的数组(词向量使用Float类型数组表示)进行操作,所以同时读写操作不会造成数据结构被破坏,最坏的结果只是读取到一些过期数据,其次,数据覆盖出现的可能性微乎其微,在并行运行c个计算线程同时写入情况下,训练过程中数据完全不存在覆盖的概率的计算公式为c为总并行线程数量,v为词汇表中单词个数即各部分词的并集中词的数量。在亿级词量、minibatch(子训练文本)的数量为200、平均上下文取3、负采样次数为3、并行线程数为720的条件下,完全不覆盖的概率高达51%(即并行c个线程进行训练计算,同时写入出现的场景微乎其微)。word2vec模型天然容忍少量错误数据,综上,可使用无锁的方式实现向量更新是可行,且可提高训练更新效率。实际训练计算中我们使用覆盖率较高的各词进行实验时发现,使用加锁和无锁方式进行训练对word2vec模型的收敛完全没有影响,但无锁方式相对加锁方式可以将CPU利用率从4%提升至80%,大大加快了算法的收敛速度,提高训练过程中向量更新的效率,即提高获取词向量的效率。
最后,返回响应计算端广播的携带本轮子训练文本中各词的编号的训练请求的步骤,直到广播训练请求的计算端的各子训练文本中各词的编号的训练请求均响应完毕,获得更新后的列向量,各存储端分别对应的更新后的列向量组合形成更新后的词向量,实现词向量的获取。
请参阅图13,本发明的一个实施例还提供一种语料处理装置,包括:
子文本获取模块110,用于获取预设语料文本中的子语料文本,分析确定子语料文本中的词及各词的编号。
词向量初始模块120,用于基于子语料文本确定应用在当前计算端的词向量,词向量的行与词的编号对应。
列向量发送模块130,用于根据存储端与向量的列标识之间的对应关系、以及词向量中的各列向量的列标识,分别将与各存储端对应的列标识对应的列向量发送至各存储端。
子文本切分模块140,用于将子语料文本切分成各子训练文本。
选择模块150,用于将各子训练文本中的一个子训练文本作为本轮子训练文本。
训练请求发送模块160,用于向各存储端广播携带本轮子训练文本中各词的编号的训练请求。
设置模块170,用于在接收到各存储端响应训练请求返回的回应信息后,将各子训练文本中的下一个子训练文本作为本轮训练文本,训练请求发送模块根据设置模块设置的本轮训练文本,向各存储端广播携带本轮子训练文本中各词的编号的训练请求,直到各子训练文本中各词的编号的训练请求发送完毕。
在其中一个实施例中,词向量初始模块包括:拉取模块以及初始化模块。
拉取模块从各计算端的子语料文本中的词的并集中,拉取部分词,其中,各计算端分别拉取的部分词的交集为零,各计算端分别拉取的的各部分词的并集为各计算端的子语料文本中的词的并集。
初始化模块对拉取的部分词进行向量初始化,获得子语料文本应用在当前计算端的词向量。
在其中一个实施例中,回应信息包括子更新值。
设置模块,还用于在接收到各存储端响应训练请求返回的回应信息之后,将各子训练文本中的下一个子训练文本作为本轮训练文本之前,根据各存储端返回的子更新值获得总更新值,并将总更新值广播至各存储端。
在其中一个实施例中,训练请求发送模块在向各存储端广播携带本轮子训练文本中各词的编号的训练请求时,该训练请求的数量为至少两个,任意一个训练请求携带小于或等于预设数量个词的编号,各训练请求分别携带的词的编号的数量之和与本轮子训练文本中各词的编号的总数量相同。
请参阅图14,本发明的一个实施例还提供一种词向量获取装置,包括:
列向量接收模块210,用于接收各计算端发送的词向量中的列向量,列向量的列标识与当前存储端对应,词向量的行与词的编号对应。
训练请求响应模块220,用于响应计算端广播的携带本轮子训练文本中各词的编号的训练请求,对列向量中训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于训练请求的子更新值,并在行更新模块对行向量进行更新之后,返回执行响应计算端广播的携带本轮子训练文本中各词的编号的训练请求,直到广播训练请求的计算端的各子训练文本中各词的编号的训练请求均响应完毕。
回应模块230,用于向广播训练请求的计算端返回回应信息。
总更新值获取模块240,用于获取根据各存储端基于训练请求的子更新值确定的总更新值。
行更新模块250,用于根据总更新值对列向量中训练请求携带的编号对应的各行向量进行更新。
更新列向量获取模块260,用于在训练请求响应模块对各子训练文本中各词的编号的训练请求均响应完毕后、行更新模块更新各行向量完毕之后,获得更新后的列向量。
在其中一个实施例中,回应信息包括当前存储端基于训练请求的子更新值。
总更新值获取模块,用于接收计算端根据各存储端返回的子更新值确定的总更新值。
请参阅图15,在其中一个实施例中,上述总更新值获取模块260包括:
子更新值广播模块261,用于将当前存储端基于训练请求的子更新值,广播至除当前存储端以外的其他各存储端,并接收其他各存储端广播的其他各前存储端基于训练请求的子更新值。
总更新值确定模块262,用于基于当前存储端基于训练请求的子更新值、除当前存储端以外的其他各前存储端基于训练请求的子更新值,确定总更新值。
在其中一个实施例中,本轮子训练中,携带本轮子训练文本中各词的编号的训练请求的数量为至少两个,任意一个训练请求携带小于或等于预设数量个词的编号,各训练请求分别携带的词的编号的数量之和与本轮子训练文本中各词的编号的总数量相同。
在其中一个实施例中,行更新模块,用于根据总更新值,通过无锁方式对列向量中训练请求携带的编号对应的各行向量分别进行更新。
本发明一个实施例中还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一非易失性的计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
因此,本发明一个实施例中还提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
上述语料处理装置、词向量获取装置、计算机存储介质以及计算机设备中的技术特征分别与上述词向量获取方法中的技术特征是对应的,在此不再赘述。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (13)
1.一种语料处理方法,应用于计算端,其特征在于,包括以下步骤:
获取预设语料文本中的子语料文本,分析确定所述子语料文本中的词及各词的编号;
基于所述子语料文本确定应用在当前计算端的词向量,所述词向量的行与词的编号对应;
根据存储端与向量的列标识之间的对应关系、以及所述词向量中的各列向量的列标识,分别将与各存储端对应的列标识对应的列向量发送至各所述存储端;
将所述子语料文本切分成各子训练文本;
将各所述子训练文本中的一个子训练文本作为本轮子训练文本;
向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求;
在接收到各所述存储端响应所述训练请求返回的回应信息后,将各所述子训练文本的下一个子训练文本作为本轮训练文本,返回向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求的步骤,直到各所述子训练文本中各词的编号的训练请求发送完毕。
2.根据权利要求1所述的语料处理方法,其特征在于,基于所述子语料文本确定应用在当前计算端的词向量的方式包括:
当前计算端从各计算端的子语料文本中的词的并集中,拉取部分词,其中,各计算端分别拉取的部分词的交集为零,各计算端分别拉取的的各部分词的并集为各计算端的子语料文本中的词的并集;
当前计算端对拉取的所述部分词进行向量初始化,获得所述子语料文本应用在当前计算端的词向量。
3.根据权利要求1所述的语料处理方法,其特征在于,所述回应信息包括子更新值;
在接收到各存储端响应所述训练请求返回的回应信息之后,将各所述子训练文本中的下一个子训练文本作为本轮训练文本之前,还包括步骤:
根据各存储端返回的所述子更新值获得总更新值,并将所述总更新值广播至各所述存储端。
4.根据权利要求1所述的语料处理方法,其特征在于,在向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求时,该训练请求的数量为至少两个,任意一个训练请求携带小于或等于预设数量个词的编号,各训练请求分别携带的词的编号的数量之和与所述本轮子训练文本中各词的编号的总数量相同。
5.一种词向量获取方法,应用于存储端,其特征在于,包括以下步骤:
接收各计算端发送的词向量中的列向量,所述列向量的列标识与当前存储端对应,所述词向量的行与词的编号对应;
响应所述计算端广播的携带本轮子训练文本中各词的编号的训练请求,对所述列向量中所述训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于所述训练请求的子更新值;
向广播所述训练请求的所述计算端返回回应信息;
获取根据各存储端基于所述训练请求的子更新值确定的总更新值;
根据所述总更新值对所述列向量中所述训练请求携带的编号对应的各行向量进行更新;
返回响应计算端广播的携带本轮子训练文本中各词的编号的训练请求的步骤,直到广播所述训练请求的所述计算端的各子训练文本中各词的编号的训练请求均响应完毕,获得更新后的所述列向量。
6.根据权利要求5所述的词向量获取方法,其特征在于,所述回应信息包括当前存储端基于所述训练请求的子更新值;
获取根据各存储端基于所述训练请求的子更新值确定的总更新值的步骤包括:
接收所述计算端根据各所述存储端返回的子更新值确定的所述总更新值。
7.根据权利要求5所述的词向量获取方法,其特征在于,所述获取根据各存储端基于所述训练请求的子更新值确定的总更新值的步骤包括:
将当前存储端基于所述训练请求的子更新值,广播至除当前存储端以外的其他各存储端,并接收其他各存储端广播的其他各前存储端基于所述训练请求的子更新值;
基于当前存储端基于所述训练请求的子更新值、除当前存储端以外的其他各前存储端基于所述训练请求的子更新值,确定所述总更新值。
8.根据权利要求5所述的词向量获取方法,其特征在于,本轮子训练中,携带本轮子训练文本中各词的编号的训练请求的数量为至少两个,任意一个训练请求携带小于或等于预设数量个词的编号,各训练请求分别携带的词的编号的数量之和与所述本轮子训练文本中各词的编号的总数量相同。
9.根据权利要求8所述的词向量获取方法,其特征在于,所述根据所述总更新值对所述列向量中所述训练请求携带的编号对应的各行向量进行更新的方式包括:
根据所述总更新值,通过无锁方式对所述列向量中所述训练请求携带的编号对应的各行向量分别进行更新。
10.一种语料处理装置,应用于计算端,其特征在于,包括:
子文本获取模块,用于获取预设语料文本中的子语料文本,分析确定所述子语料文本中的词及各词的编号;
词向量初始模块,用于基于所述子语料文本确定应用在当前计算端的词向量,所述词向量的行与词的编号对应;
列向量发送模块,用于根据存储端与向量的列标识之间的对应关系、以及所述词向量中的各列向量的列标识,分别将与各存储端对应的列标识对应的列向量发送至各所述存储端;
子文本切分模块,用于将所述子语料文本切分成各子训练文本;
选择模块,用于将各所述子训练文本中的一个子训练文本作为本轮子训练文本;
训练请求发送模块,用于向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求;
设置模块,用于在接收到各所述存储端响应所述训练请求返回的回应信息后,将各所述子训练文本中的下一个子训练文本作为本轮训练文本,所述训练请求发送模块根据所述设置模块设置的本轮训练文本,向各所述存储端广播携带本轮子训练文本中各词的编号的训练请求,直到各所述子训练文本中各词的编号的训练请求发送完毕。
11.一种词向量获取装置,应用于存储端,其特征在于,包括:
列向量接收模块,用于接收各计算端发送的词向量中的列向量,所述列向量的列标识与当前存储端对应,所述词向量的行与词的编号对应;
训练请求响应模块,用于响应所述计算端广播的携带本轮子训练文本中各词的编号的训练请求,对所述列向量中所述训练请求携带的编号对应的各行向量进行语言训练,获得当前存储端基于所述训练请求的子更新值,并在行更新模块对行向量进行更新之后,返回执行响应计算端广播的携带本轮子训练文本中各词的编号的训练请求,直到广播所述训练请求的所述计算端的各子训练文本中各词的编号的训练请求均响应完毕;
回应模块,用于向广播所述训练请求的所述计算端返回回应信息;
总更新值获取模块,用于获取根据各存储端基于所述训练请求的子更新值确定的总更新值;
行更新模块,用于根据所述总更新值对所述列向量中所述训练请求携带的编号对应的各行向量进行更新;
更新列向量获取模块,用于在所述训练请求响应模块对各子训练文本中各词的编号的训练请求均响应完毕后、所述行更新模块更新各行向量完毕之后,获得更新后的所述列向量。
12.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述权利要求1-9中任意一项所述方法的步骤。
13.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710854725.0A CN110019830B (zh) | 2017-09-20 | 2017-09-20 | 语料处理、词向量获取方法及装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710854725.0A CN110019830B (zh) | 2017-09-20 | 2017-09-20 | 语料处理、词向量获取方法及装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019830A true CN110019830A (zh) | 2019-07-16 |
CN110019830B CN110019830B (zh) | 2022-09-23 |
Family
ID=67186313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710854725.0A Active CN110019830B (zh) | 2017-09-20 | 2017-09-20 | 语料处理、词向量获取方法及装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019830B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116628168A (zh) * | 2023-06-12 | 2023-08-22 | 深圳市逗娱科技有限公司 | 基于大数据的用户个性分析处理方法、系统及云平台 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089058A1 (en) * | 2007-10-02 | 2009-04-02 | Jerome Bellegarda | Part-of-speech tagging using latent analogy |
US20150220833A1 (en) * | 2014-01-31 | 2015-08-06 | Google Inc. | Generating vector representations of documents |
CN105786782A (zh) * | 2016-03-25 | 2016-07-20 | 北京搜狗科技发展有限公司 | 一种词向量的训练方法和装置 |
CN106297774A (zh) * | 2015-05-29 | 2017-01-04 | 中国科学院声学研究所 | 一种神经网络声学模型的分布式并行训练方法及系统 |
CN106815644A (zh) * | 2017-01-26 | 2017-06-09 | 北京航空航天大学 | 机器学习方法和从节点 |
CN107103095A (zh) * | 2017-05-19 | 2017-08-29 | 成都四象联创科技有限公司 | 基于高性能网络架构的数据计算方法 |
-
2017
- 2017-09-20 CN CN201710854725.0A patent/CN110019830B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089058A1 (en) * | 2007-10-02 | 2009-04-02 | Jerome Bellegarda | Part-of-speech tagging using latent analogy |
US20150220833A1 (en) * | 2014-01-31 | 2015-08-06 | Google Inc. | Generating vector representations of documents |
CN106297774A (zh) * | 2015-05-29 | 2017-01-04 | 中国科学院声学研究所 | 一种神经网络声学模型的分布式并行训练方法及系统 |
CN105786782A (zh) * | 2016-03-25 | 2016-07-20 | 北京搜狗科技发展有限公司 | 一种词向量的训练方法和装置 |
CN106815644A (zh) * | 2017-01-26 | 2017-06-09 | 北京航空航天大学 | 机器学习方法和从节点 |
CN107103095A (zh) * | 2017-05-19 | 2017-08-29 | 成都四象联创科技有限公司 | 基于高性能网络架构的数据计算方法 |
Non-Patent Citations (2)
Title |
---|
XING E P, ET AL: "Petuum A New Platform for Distributed Machine Learning on Big Data", 《IEEE TRANSACTIONS ON BIG DATA 2015》 * |
唐黎哲等: "以LDA为例的大规模分布式机器学习系统分析", 《计算机应用》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116628168A (zh) * | 2023-06-12 | 2023-08-22 | 深圳市逗娱科技有限公司 | 基于大数据的用户个性分析处理方法、系统及云平台 |
CN116628168B (zh) * | 2023-06-12 | 2023-11-14 | 深圳市逗娱科技有限公司 | 基于大数据的用户个性分析处理方法、系统及云平台 |
Also Published As
Publication number | Publication date |
---|---|
CN110019830B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210312347A1 (en) | Dispatching distribution | |
CN103902646B (zh) | 一种分布式任务管理系统与方法 | |
CN104598563B (zh) | 高并发数据存储方法及装置 | |
CN108875955A (zh) | 基于参数服务器的梯度提升决策树的实现方法及相关设备 | |
CN108536532A (zh) | 一种批量任务处理方法及系统 | |
CN107341544A (zh) | 一种基于可分割阵列的可重构加速器及其实现方法 | |
CN103559193B (zh) | 一种基于选择单元的主题建模方法 | |
CN108564470A (zh) | 一种区块链中并行建块的交易分发方法 | |
KR20140007004A (ko) | 문서들로부터 토픽들의 병렬 생성 | |
CN110347489B (zh) | 一种基于Spark的多中心数据协同计算的流处理方法 | |
CN106815254A (zh) | 一种数据处理方法和装置 | |
CN103699441A (zh) | 基于任务粒度的MapReduce报表任务执行方法 | |
CN110598848A (zh) | 一种基于通道剪枝的迁移学习加速方法 | |
CN105844230A (zh) | 一种基于云平台的遥感影像分割方法 | |
CN110555448B (zh) | 一种细分派件区域的方法和系统 | |
CN110442635A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN110019830A (zh) | 语料处理、词向量获取方法及装置、存储介质及设备 | |
CN109117428A (zh) | 数据存储方法及其装置、数据查询方法及其装置 | |
CN107436865A (zh) | 一种词对齐训练方法、机器翻译方法及系统 | |
CN110008996A (zh) | 一种基于散度计算的异构域适应方法 | |
CN107918676A (zh) | 结构化查询的资源优化方法及数据库查询系统 | |
CN105115511A (zh) | 一种面向月面导航的自适应的地标选取方法 | |
CN111078886B (zh) | 基于dmcnn的特殊事件提取系统 | |
Liu et al. | Research on object detection algorithm for small object of pests based on YOLOv3 | |
CN114492758A (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 |