一种词向量的训练方法和装置与流程

文档序号:13216877阅读:142来源:国知局
技术领域本发明涉及互联网技术领域,特别是涉及一种词向量的训练方法和装置。

背景技术:
在互联网应用中,很重要的一个问题是如何将自然语言转换成计算机能够理解的数据表达形式。而解决该问题最重要的一步就是寻找一种方法将自然语言符号数据化。目前常用的是深度学习(DeepLearning,DL)方法,在DL中采用的是“Distributedrepresentation”分散式表示方法,将每个词表示为一种低维实数向量,该向量就是词对应的词向量。词向量就是由此诞生的,可以理解的是,词向量就是用于表达自然语言中词的向量,以适用于互联网应用。例如,词向量可以用在很多自然语言学习处理(NaturalLearningProcessing,NLP)相关的工作中,如聚类、语义分析等等。目前,人们使用Word2vec工具通过单机模型利用DL方法,通过对收集到的语料进行训练以得到词表中词对应的向量空间中的向量。这种词向量训练方法采用的是单机模式,其训练速率较低,尤其是很难适用于数据量非常庞大的业务场景中。另外这种词向量训练方法是普适性的训练方法,其并没有考虑特定业务场景的特殊性,所以在特定的业务场景下其训练效果并不好。

技术实现要素:
为了解决上述技术问题,本发明提供了一种词向量的训练方法和装置,使得训练得到的词向量能够很好地适用于搜索业务中,并且能够实现快速迭代的高质量词向量的训练。本发明实施例公开了如下技术方案:本发明第一方面提供了一种词向量的训练方法,所述方法包括:抓取互联网网页,获取训练语料,保存在语料库中;对语料库中的每个训练语料作分词处理,得到每个训练语料对应的有序词集合;根据预先收集的用户查询日志构建词表;将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点;配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量;其中,所述词向量训练包括:各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,并对各节点训练得到的词表中各词的训练词向量进行同步后,触发下一周期训练。可选的,所述对语料库中的每个训练语料作分词处理,包括:利用分词工具和预先建立的分词词库,对每个训练语料作分词处理;所述分词词库是根据预先收集的用户查询日志和输入法词库构建而成的。可选的,所述根据预先收集的用户查询日志构建词表,包括:提取预先收集的用户查询日志中包含的词,并统计每个词的词频;获取高频词,构建生成词表。可选的,在所述获取高频词之后,所述方法还包括:利用命名实体词库对所述高频词进行合并处理后,再执行所述构建生成词表的步骤。可选的,所述各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,并对各节点训练得到的词表中各词的训练词向量进行同步后,触发下一周期训练,包括:步骤1、配置所述分布式词向量学习模型中的各节点对应的所述词表中各词的词向量为初始化词向量;步骤2、各节点针对分配到的每个训练语料对应的有序词集合中包括的与所述词表匹配的词,对所述词的初始化词向量进行训练,得到本周期所述词的训练词向量;步骤3、判断是否满足预设判定条件,如果是,进入步骤5;如果否,进入步骤4;步骤4:依据各节点本周期训练得到的所述词的训练词向量,并行同步更新所述词的本周期的初始化词向量,作为所述词的下一周期的初始化词向量,进入步骤2;步骤5、依据所述训练词向量,得到所述词表中对应词的词向量。可选的,所述对分配到的每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,包括:对分配到的每一训练语料,遍历所述训练语料对应的有序词集合中的所有词,将每个词分别与所述词表进行匹配,如果当前词在所述词表中匹配到相同的词,对该词进行训练,得到该词对应的词向量。可选的,所述依据各节点当前周期训练得到的所述词表中各词的词向量,并行同步更新各词的当前周期的初始化词向量,作为所述词表中各词下一周期的初始化词向量包括:采用下述公式实现同步更新:w′=w-η(Σ1NΔw);]]>其中,w′是指某一节点对应的所述词表中某词下一周期的初始词向量;w是指该节点对应词表中该词当前周期的初始化词向量;η是指预设系数;Δw通过对该节点对应词表中该词当前周期训练得到的词向量与该词当前周期的初始化词向量求差得到;N为所述学习模型的节点数。可选的,所述方法还包括:配置所述分布式词向量学习模型中的各节点,使得各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表未匹配的词进行词向量训练,对各节点训练得到的所述未匹配的词的训练词向量进行同步,触发下一周期训练,使得各个节点周期性训练得到所述未匹配的词的词向量,并将所述未匹配的词对应的词向量保存入所述词表中;其中,所述未匹配的词属于预设类别。本发明第二方面提供了一种词向量的训练装置,所述装置包括:语料库建立单元,用于抓取互联网网页,获取训练语料,保存在语料库中;分词单元,用于对语料库中的每个训练语料作分词处理,得到每个训练语料对应的有序词集合;词表构建单元,用于根据预先收集的用户查询日志构建词表;语料分发单元,用于将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点;第一配置单元,用于配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量;其中,所述词向量训练包括:各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,并对各节点训练得到的词表中各词的训练词向量进行同步后,触发下一周期训练。本发明第三方面提供了一种词向量的训练装置,所述装置包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:抓取互联网网页,获取训练语料,保存在语料库中;对语料库中的每个训练语料作分词处理,得到每个训练语料对应的有序词集合;根据预先收集的用户查询日志构建词表;将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点;配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量;其中,所述词向量训练包括:各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,并对各节点训练得到的词表中各词的训练词向量进行同步后,触发下一周期训练。可选的,所述处理器还用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:利用分词工具和预先建立的分词词库,对每个训练语料作分词处理;所述分词词库是根据预先收集的用户查询日志和输入法词库构建而成的。可选的,所述处理器还用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:提取预先收集的用户查询日志中包含的词,并统计每个词的词频;获取高频词,构建生成词表。可选的,所述处理器还用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:利用命名实体词库对所述高频词进行合并处理后,再执行所述构建生成词表的指令。可选的,所述处理器还用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:指令1、配置所述分布式词向量学习模型中的各节点对应的所述词表中各词的词向量为初始化词向量;指令2、各节点针对分配到的每个训练语料对应的有序词集合中包括的与所述词表匹配的词,对所述词的初始化词向量进行训练,得到本周期所述词的训练词向量;指令3、判断是否满足预设判定条件,如果是,进入指令5;如果否,进入指令4;指令4:依据各节点本周期训练得到的所述词的训练词向量,并行同步更新所述词的本周期的初始化词向量,作为所述词的下一周期的初始化词向量,进入指令2;指令5、依据所述训练词向量,得到所述词表中对应词的词向量。可选的,所述处理器还用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:对分配到的每一训练语料,遍历所述训练语料对应的有序词集合中的所有词,将每个词分别与所述词表进行匹配,如果当前词在所述词表中匹配到相同的词,对该词进行训练,得到该词对应的词向量。可选的,所述处理器还用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:采用下述公式实现同步更新:w′=w-η(Σ1NΔw);]]>其中,w′是指某一节点对应的所述词表中某词下一周期的初始词向量;w是指该节点对应词表中该词当前周期的初始化词向量;η是指预设系数;Δw通过对该节点对应词表中该词当前周期训练得到的词向量与该词当前周期的初始化词向量求差得到;N为所述学习模型的节点数。可选的,所述处理器还用于执行所述一个或者一个以上程序包含用于进行以下操作的指令:配置所述分布式词向量学习模型中的各节点,使得各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表未匹配的词进行周期性训练,得到所述未匹配的词的训练词向量;其中,所述未匹配的词属于预设类别对各节点训练得到的所述未匹配的词的训练词向量进行同步,得到所述未匹配的词对应的词向量,并保存入所述词表中。与现有技术相比,本发明提供的技术方案具备如下有益效果:本发明提供的上述技术方案,首先,抓取互联网网页,获取训练语料,保存在语料库中;这种语料库的建立方式很好地利用了互联网网页资源的高实时性、高代表性、资源丰富覆盖面广的优势,能够获取到海量级的、覆盖面较广的语料。然后,对语料库中的每个训练语料分别作分词处理,得到每个训练语料对应的有序词集合;以及,根据预先收集的用户查询日志构建词表;本发明摒弃了传统的基于训练语料构建词表的方式,提出了根据用户查询日志构建词表的方式;由于用户查询日志能够表征用户实际搜索需求,因此,以用户查询日志中包含的查询词构建生成的词表就能够很好地适应于搜索业务。最后,本发明将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点;配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量。本发明为了解决大规模语料训练缓慢的问题,摒弃传统的单机多线程训练方法,而采用分布式词向量学习模型,通过多节点并行训练,以提高训练速率,从而能够快速的迭代出高质量的词向量。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种词向量的训练方法的流程图;图2是本发明实施例提供的分布式词向量训练示意图;图3是本发明实施例提供的一种词向量的训练装置的结构图;图4是本发明实施例提供的一种词向量的训练装置的硬件结构图;图5是本发明实施例提供的服务器的结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明提供了一种词向量的训练方法和装置,本发明分析了词向量的特殊应用背景的因素,提出了根据用户查询日志构建特定的词表的技术思路,使得训练得到的词向量能够很好地适用于搜索业务中,并且,本发明摒弃传统的单机多线程训练方法而提出了采用分布式词向量学习方法,能够实现快速迭代的高质量词向量的训练。请参阅图1,图1是本发明实施例提供的一种词向量的训练方法的流程图,如图1所示,该方法包括:步骤101-步骤105:步骤101:抓取互联网网页,获取训练语料,保存在语料库中;具体的,抓取互联网网页,将抓取到的每个网页内容作为每个训练语料,保存在语料库中。语料,是指在语言的实际使用中真实出现过的语言材料;语料通常储存在语料库中,语料库是以电子计算机为载体承载语料的数据库;真实语料一般需要经过加工(分析和处理),才能够成为有用的资源。目前,中国语料库有四种类型,分别是现代汉语通用语料库、《人民日报》标注语料库、用于语言教学和研究的现代汉语语料库、面向语音信息处理的现代汉语语料库等。因此,人们需要语料时,就会从这些已建立好的语料库中直接获取语料。但这些语料库的内容较为固定,更新较慢;而由于互联网的开放性和创新性,使得该领域产生的语言材料每天都在成倍的增长,因此,如果仍旧仅从已有的这些语料库中获取语料,则获取得到的语料数量较少,并且覆盖面较窄,这些语料不能够表征互联网领域中语言的实际使用情况。基于此,为了使得获取得到的语料能够更好地适用于互联网领域,特别是应用于搜索领域,如搜索引擎中,本发明实施例中,通过抓取互联网网页的方式来获取训练语料。更具体的,本发明还提供以下可实现方式:利用搜索引擎抓取互联网新闻类网页、网络社区网页和/或博客网页等,将抓取到的网页内容作为训练语料。由于互联网新闻类网页、网络社区网页、博客网页都是已经有可靠性认证的网页,这一类网页承载的信息都是可信度较高的信息,因此直接从这一类网页来获取训练语料,能够提高训练语料的质量。当然,本发明的实现可以但不局限于新闻类网页、网络社区类以及博客网页,还可以是科普性网页、论文网站的网页等具有可靠性认证类的网页。再者,为了进一步扩充训练语料,也还可以从前述已建立好的语料库中获取训练语料。本发明实施例提供的这种获取语料的方式,很好地利用了互联网网页资源的高实时性、高代表性、资源丰富覆盖面广的优势,能够获取到海量级的、覆盖面较广的训练语料。步骤102:对语料库中的每个训练语料分别作分词处理得到每个训练语料对应的有序词集合;其中,所述有序词集合为一有顺序的词构成的集合。本发明实施例中,从互联网网页抓取得到的训练语料一般为句子或文章。由于词向量的训练是以词为训练数据。因此,在获取得到训练语料时,还需要对训练语料作分词处理得到每个语料对应的有顺序的词的集合。具体的,假设训练语料为一文章,文章是由至少一个句子构成的,对该训练语料包括的每个句子依次进行分词处理,将每个句子都划分成一串有序排列的词的集合,且划分后的词仍然依照原文章中各句子的排列顺序依次排列。例如,某训练语料为“我喜欢北京。北京是我国的政治经济文化中心”,对该训练语料进行分词处理后得到的有序词集合可以为“我/喜欢/北京/北京/是/我国/的/政治/经济/文化/中心”。而分词处理主要是依赖于分词词库实现的,分词词库的质量直接决定了分词处理的质量。分词词库也被称为分词词典,为了便于描述,本发明利用分词词库来描述。目前,通常采用的分词词库是通过《新华词典》或者其他类似的出版书籍为基础而建立的词库。但,快速发展的中文互联网每天都会有新的词、新的事物产生,而这些分词词库并未能够及时地囊括互联网中产生的新的词,这样,如果直接利用这些词库对从互联网中获取的语料进行分词处理,其分词效果就不太好。基于此,本发明构建了特别适用于互联网场景的分词词库,主要是根据用户查询(query)日志和输入法词库中的词来构建生成分词词库。可以理解的是,用户只要使用互联网,一般都会产生用户查询日志,因此,几乎每天、每时甚至每分钟每秒钟,网络中都会产生用户查询日志,该用户查询日志中记录有查询词。同时,由于输入法本身建立有对应的输入法词库,该输入法词库中记录有常用的词;另外,输入法自身也会通过收集用户输入过程中产生的新的词定期地更新输入法词库。可以看出:用户查询日志和输入法词库都是紧随用户的实际网络操作行为而更新的,因此,本发明提出利用用户查询日志和输入法词库来建立分词词库,该分词词库能够与互联网发展同步,能够反应网络实际语言情况,可以较好地适应于互联网应用场景中。具体是,步骤102可以通过以下方式实现:利用分词工具和预先建立的分词词库,针对每个训练语料作分词处理得到与每个训练语料对应的有序词集合;其中,所述有序词集合为一有顺序的词构成的集合;所述分词词库是根据预先收集的用户查询日志和输入法词库构建而成的。本发明实施例中,经过分词处理后,一个训练语料对应着一个有序词集合。所谓有序词集合是指按照训练语料中记载的文本信息的语序,对文本信息作分词处理后得到的有固定顺序关系的词的集合。例如:训练语料是一篇博客文章,则按照该博客文章记载的文本信息的段落顺序、每个段落文本的语句顺序、以及每个句子中各词语的排列顺序,依次对该文本信息进行分词处理得到有顺序的词的集合。举个例子,训练语料中记载的文本信息是“我爱北京天安门”,按照文本信息的语序作分词处理得到该训练语料对应的有序词集合就是:(我/爱/北京/天安门)。步骤103:根据预先收集的用户查询日志构建词表。传统的构建词表的方法是从训练语料中选择一些词,利用选择的词构建生成词表,但这些词表是普适性的,没有代表性,不能针对性地适应于搜索场景中。本发明考虑到词向量的应用场景,为了使得词向量能够针对性地适应于搜索场景中(如搜索引擎),本发明提出了根据用户查询日志构建词表的方案。与现有技术中一般的词表相比,本发明根据用户查询日志提取能够覆盖绝大多数搜索需求的特有词表,基于该词表训练出的词向量能够更加符合搜索场景的需求。另外,考虑到互联网时代中文词数量是海量级的,任何训练都不可能覆盖所有的词,且从训练时间成本考虑,也没有必要覆盖所有的词。因此,为了构建适当大小的词表,并且使得词表尽可能覆盖绝大多数查询需求,本发明提出了以下构建方式:提取预先收集的用户查询日志中包含的词,并统计每个词的词频;获取高频词,并构建生成词表。其中,所述获取高频词具体可以包括:将词频小于预设阈值的词筛除掉得到剩余的词,即为高频词。通过该构建方式,基于用户查询日志和预设阈值,可以构建出大小适当的词表,根据词频大小所选择的词能够覆盖绝大多数查询需求。这样,本发明就能够保证训练质量的同时,适当地减小训练的数据量。在上述构建方式的基础上,本发明还考虑到在生成词表的过程中,很可能会将一个实体名词分成多个词而加入词表中。例如,地名“牡丹江”被分词为“牡丹”、“江”;再例如,机构名“爱奇艺”被分词为“爱”、“奇艺”等情况。为了解决实体名词被分词出错的问题;关于词表的构建方式,本发明还提出了更优选的方案。该优选方案具体是在上述获取高频词之后,以及在所述构建生成词表之前,还可以包括如下步骤:利用命名实体词库对所述高频词进行合并处理后,再执行所述构建生成词表的步骤。其中,命名实体词库中包含各种实体名词,如人名、地名、机构名等用于描述实体名称的词。利用命名实体词库对词进行实体合并。例如,对于分词得到的“爱”“奇艺”,结合实体词“爱奇艺”,对前述两个分词进行合并,使得词表的词更符合事实、更加精准。经过步骤101-103处理得到模型训练所需要的训练数据,接着执行步骤104。步骤104:将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点。在现有常规的训练方法中,一般是使用单机模型,但是本发明的训练方法中,用于实现词向量训练的训练语料的数据量非常庞大,常规的单机模型已经不能满足训练的需求。因此,本发明提出了分布式词向量学习模型,利用分布式技术来提高训练速度,满足模型训练的快速迭代。步骤104主要是为分布式词向量学习模型中的节点分配训练数据,以使得所有节点共同承担所有的训练数据。具体的,将语料库中包括的各训练语料分发至所述分布式词向量学习模型中的各节点;其中,可以对语料库中的训练语料进行平均分配,使得学习模型中各节点需要承担的训练数据是均等的;也可以对语料库中的训练语料进行随机分配,使得学习模型中各节点需要承担的训练数据是不等的。参见图2示出的本发明实施例提供的分布式词向量训练示意图;该分布式词向量学习模型包括N个节点,其中,每个节点均可以是指能够独立进行模型训练的设备,例如计算机。在实现时,步骤104可以是将语料库中的每个训练语料对应的有序词集合作为一份独立的训练数据,将语料库中包括的各训练语料随机地分配给分布式词向量学习模型中的每个节点。例如,假设分布式词向量学习模型包括3个节点,当前语料库中包括3万左右个训练语料,经过分词处理后,得到每个训练语料对应的有序词集合;则随机地将语料库中的全部或部分训练语料分配给这3个节点处理,实际上就是将各训练语料对应的有序词集合随机地输入至各节点。这样,每个节点就可以将分配到的训练语料对应的有序词集合作为训练数据进行学习。当然,在分配时,可以平均分配训练数据,也可以根据实际情况适应性地为每个节点分配训练数据。当然,步骤104也可以是按照预设的分配规则来实现训练数据的分配过程;例如预设的分配规则是按照训练语料的排序顺序,将所有语料适应性地分配给所有节点;使得所有节点分配到的训练数据大小基本一致。当然,具体的分配规则可以根据实际需求设定,并不局限于上述示例。步骤104主要目的是将获取到的语料库中包括的训练语料适当地分配给分布式词向量学习模型中的各节点,使得分布式词向量学习模型中的多个节点并行工作,共同训练完所有的训练语料。步骤105:配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量;其中,所述词向量训练包括:各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,并对各节点训练得到的词表中各词的训练词向量进行同步后,触发下一周期训练。具体的,分布式词向量学习模型开始工作时,首先要执行初始化配置操作,对每个节点对应的词表中包括的词设置初始化词向量。在训练起始阶段,各节点对应的词表中包括的词对应的初始化词向量都是相同的。继而,各节点分别以该初始化词向量为基础对词表中包括的词开始进行训练,得到训练后的词向量;然后,对各节点对应词表中各词对应的训练后的词向量进行同步,并进行下一周期的训练,直至训练得到所述词表中的各词对应的词向量。其中,同步过程为:对所述词表中的每个词,分别计算各节点训练后获取的该词对应的词向量与初始化词向量之间的差值,并依据计算得到的所有节点对应的差值,获取该词对应的向量调整值(一般可以为所有节点对应差值的平均值);对所述词表中的每个词,分别利用所述词表中各词对应的向量调整值对该词对应的初始化向量值进行调整,并将调整后的向量值作为该词下一周期训练的初始值;即为,在后续的训练周期内,各节点均以上一周期训练结束后得到的词表中各词对应的调整后的词向量作为初始值进行训练。在实现时,步骤105可以按照如下方式实现,该方式包括步骤1051-步骤1055;步骤1051,配置所述分布式词向量学习模型中的各节点对应的所述词表中各词的词向量为初始化词向量。初始化所述分布式词向量学习模型中的每个节点对应的词表各词对应的词向量,配置各节点对应的所述词表中各词的词向量为初始化词向量,使所有节点对应的词表中各词都按照统一的初始词向量开始训练。需要说明的是,所述分布式词向量学习模型中的每个节点对应的词表是相同的,均为步骤103中生成的词表。在实现时,步骤1051可以有以下两种初始化方式:一种是,在任意一个节点上随机初始化词向量,然后在将初始化词向量并行同步至每个节点。另一种是,将分布式词向量学习模型中的每个节点的词向量并行同步初始化词向量为零向量。在实现时,可以采用MPI(MessagePassingInterface,信息传递接口)接口实现并行同步处理。MPI接口是较为通用的并行编程接口,能够提供高效、可扩展、统一的并行编程环境。当然,本发明也可以采用其他接口实现分布式词向量学习模型中各节点间的并行同步处理。具体的,利用MPI接口通过万兆网卡将初始化词向量同步到每个节点。经过步骤1051利用并行同步处理,使得所有节点配置有相同的初始化词向量。步骤1052,各节点针对分配到的每个训练语料对应的有序词集合中包括的与所述词表匹配的词,对所述词的初始化词向量进行训练,得到当前周期所述词的训练词向量。步骤1053,依据各节点当前周期训练得到的所述词的训练词向量,并行同步更新所述词的当前周期的初始化词向量,作为所述词的下一周期的初始化词向量。以此方式周期性更新节点的初始化词向量,从而实现周期性训练。每个周期训练结束时,判断是否满足预设判断定条件,以确定是否停止训练。步骤1054、判断是否满足预设判定条件,如果是,进入步骤1055;如果否,进入步骤1052。步骤1055、依据所述词的下一周期的初始化词向量,得到所述词表中对应词的词向量。在实现时,每个节点将接收到的训练语料对应的有序词集合作为训练数据,对每一训练语料,分别遍历所述有序词集合中包括的所有词,仅针对词表中包括的词进行训练;每周期训练结束,同步更新每个节点对应词表中各词对应的初始词向量,使所有节点开始下一个周期的训练过程。首先,所述遍历所述有序词集合中包括的所有词,仅针对词表中包括的词进行训练具体为,遍历训练语料对应的有序词中的每个词,将每个词分别与所述词表进行匹配,如果当前词在所述词表中匹配到相同的词,则对该词进行训练,得到该词对应的词向量;如果当前词在所述词表中没有匹配到相同的词,则摈弃该词,对该词的下一个词进行匹配;直到对所述训练语料对应的有序词集合中的每个词完成匹配为止。其次,所述并行同步为,每个节点通过SGD(StochasticGradientDescent,随机梯度下降)算法计算出来的累计梯度更新量Δw,该累计梯度更新量Δw是某一节点对应词表中某一个词在当前周期训练得到的词向量与当前周期的初始词向量的差值。根据各个节点中该词对应的累计梯度更新量计算下一周期该词对应的初始化词向量,然后,并行同步更新每个节点中该词对应的初始化词向量作为该词在下一周期的初始化词向量。在实现时,可以按照如下公式1计算下一周期的初始词向量w′;公式1其中,公式中的w′是指词表中某词下一周期的初始词向量;w是指该词当前周期的初始化词向量;η是指预设系数,Δw是指该词在当前周期的累计梯度更新量,其中Δw可以通过对该词当前周期训练得到的词向量与该词当前周期的初始化词向量求差得到,N为所述学习模型的节点数。其中,η的大小决定了节点训练更新速率,η一般取值为小于1的数值;例如:可以设置为1/N,1/2N等数值;优选的,可以设置η=1/N,则下一周期的初始化词向量等于当前周期的初始化词向量与N个节点的累计梯度更新量的平均值之间的差值。节点周期性的更新初始化词向量,以每次更新后的初始化词向量为基础开始对词表中各词一个周期的训练,这样,周期性地训练直到所有节点满足预设训练条件时为止。其中,预设判定条件可以是训练迭代次数达到预设迭代次数;预设判定条件也可以是所述词表中超过阈值数目的词对应的累计梯度更新量都小于预设更新值。当然,预设判定条件也可以设置为其他内容,在本发明中设置预设判定条件的目的是为了衡量所有节点的训练结果是否都趋于一致,是否能够达到训练目的。当所有节点训练结果满足预设判定条件时,此时,分布式词向量学习模型中的所有节点终止训练;然后,根据所有节点最后一个周期训练得到的训练词向量,按照上述公式1计算得到下一周期的初始化词向量,将计算得到的该初始化词向量作为所述词表的词对应的词向量。在本发明中,各个节点训练的初始化词向量都是并行同步更新的,但各个节点内的SGD过程都是异步更新的,将这种更新方式称之为半异步更新,本发明提出的这种半异步的分布式词向量学习模型可以在保证算法收敛性的同时,减小频繁同步带来的网络通信时间消耗,以加速模型的训练。在针对上述词表中词进行学习训练之外,本发明更加充分利用了语料,还提出了对数字类、英语类、人名类等特定类别词的训练,以训练得到对应的词向量,这些类别的词对应的词向量能够更加优化搜索业务。具体的,本发明提供了一种可选的方案,该方案是在上述图1所示方法的基础上增加如下步骤:配置所述分布式词向量学习模型中的各节点,使得各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表未匹配的词进行词向量训练,对各节点训练得到的所述未匹配的词的训练词向量进行同步,触发下一周期训练,使得各个节点周期性训练得到所述未匹配的词的词向量,并将所述未匹配的词对应的词向量保存入所述词表中;其中,所述未匹配的词属于预设类别。在实现时,当分布式词向量学习模型中的节点遍历语料对应的有顺序的词的集合中词,发现词不属于词表,但归属于某一预设类别时,对该词进行训练。这样,就能够充分利用语料中的词,训练挖掘出对搜索业务有价值的词对应的词向量。这里需要说明的是,上述示例中描述的各个节点采用SGD算法,但本发明在实现时,各个节点可以采用上述SGD算法,也可以采用支持向量机、逻辑回归、神经网络等其他算法进行训练。下面通过示例对上述方法的实现过程进行示例化说明。例如:用户查询日志为“世界搞笑电影前十名”;根据该用户查询日志构建的词表包括:“世界”、“搞笑电影”、“前十名”;按照本发明提供的上述方法,将大规模语料输入到分布式词向量学习模型中,进行训练得到的结果,即词表中词对应的词向量(5维的实数向量)。“世界”(0.004003,0.004419,-0.003830,-0.003278,0.001367)“搞笑电影”(-0.043665,0.018578,0.138403,0.004431,-0.139117)“前十名”(-0.337518,0.224568,0.018613,0.222294,-0.057880)。在实际训练时,根据不同的需求可以设置不同的向量维度,上述示例中仅以维度为5为例,但本发明的实施并不限定于此维度。通过上述实施例可以看出,本发明提供的词向量的训练方法,首先,抓取互联网网页,获取训练语料,保存在语料库中;这种语料库的建立方式很好地利用了互联网网页资源的高实时性、高代表性、资源丰富覆盖面广的优势,能够获取到海量级的、覆盖面较广的语料。然后,对语料库中的每个训练语料分别作分词处理,得到每个训练语料对应的有序词集合;以及,根据预先收集的用户查询日志构建词表;本发明摒弃了传统的基于训练语料构建词表的方式,提出了根据用户查询日志构建词表的方式;由于用户查询日志能够表征用户实际搜索需求,因此,以用户查询日志中包含的查询词构建生成的词表就能够很好地适应于搜索业务。最后,本发明将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点;配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量。本发明为了解决大规模语料训练缓慢的问题,摒弃传统的单机多线程训练方法,而采用分布式词向量学习模型,通过多节点并行训练,以提高训练速率,从而能够快速的迭代出高质量的词向量。与上述方法相对应的,本发明还提供了对应的装置。具体参见图3,图3是本发明实施例提供的一种词向量的训练装置的结构图。如图3所示,该装置可以包括:语料库建立单元201、分词单元202、词表构建单元203、语料分发单元204和第一配置单元205;下面结合该装置的工作原理对各单元的连接关系和具体功能作解释说明。语料库建立单元201,用于抓取互联网网页,获取训练语料,保存在语料库中;分词单元202,用于对语料库中的每个训练语料分别作分词处理,得到每个训练语料对应的有序词集合;词表构建单元203,用于根据预先收集的用户查询日志构建词表;语料分发单元204,用于将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点;第一配置单元205,用于配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量;其中,所述词向量训练包括:各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,并对各节点训练得到的词表中各词的训练词向量进行同步后,触发下一周期训练。在实现时,所述分词单元202可以包括:分词处理子单元。所述分词处理子单元,用于利用分词工具和预先建立的分词词库,对每个训练语料分别作分词处理;所述分词词库是根据预先收集的用户查询日志和输入法词库构建而成的。在实现时,所述词表构建单元203可以包括:第一提取子单元和第一构建子单元。第一提取子单元,用于提取预先收集的用户查询日志中包含的词,并统计每个词的词频;第一构建子单元,用于获取高频词,构建生成词表。在实现时,所述词表构建单元203也可以包括:第二提取子单元、合并子单元和第二构建子单元。第二提取子单元,用于提取预先收集的用户查询日志中包含的词,并统计每个词的词频;合并子单元,用于利用命名实体词库对高频词进行合并处理;第二构建子单元,用于利用合并处理后的高频词构建生成词表。在实现时,所述第一配置单元205,包括:配置子单元、训练子单元、判断子单元、同步更新子单元以及词向量计算子单元。配置子单元,用于配置所述分布式词向量学习模型中的各节点对应的所述词表中各词的词向量为初始化词向量;训练子单元,用于配置各节点针对分配到的每个训练语料对应的有序词集合中包括的与所述词表匹配的词,对所述词的初始化词向量进行训练,得到本周期所述词的训练词向量;判断子单元,用于判断是否满足预设判定条件,如果是,执行词向量计算子单元;如果否,执行同步更新子单元;同步更新子单元,用于依据各节点本周期训练得到的所述词的训练词向量,并行同步更新所述词的本周期的初始化词向量,作为所述词的下一周期的初始化词向量,进入所述训练子单元;词向量计算子单元,用于依据所述训练词向量,得到所述词表中对应词的词向量。可选的,所述训练子单元包括:遍历匹配子单元和词向量训练子单元。遍历匹配子单元,用于对分配到的每一训练语料,遍历所述训练语料对应的有序词集合中的所有词,将每个词分别与所述词表进行匹配;词向量训练子单元,用于当所述遍历匹配子单元的匹配结果为是时,对该词进行训练,得到该词对应的词向量。可选的,同步更新子单元,用于采用下述公式实现同步更新:w′=w-η(Σ1NΔw);]]>其中,w′是指某一节点对应的所述词表中某词下一周期的初始词向量;w是指该节点对应词表中该词当前周期的初始化词向量;η是指预设系数;Δw通过对该节点对应词表中该词当前周期训练得到的词向量与该词当前周期的初始化词向量求差得到;N为所述学习模型的节点数。可选的,所述装置还可以包括:第二配置单元,用于配置所述分布式词向量学习模型中的各节点,使得各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表未匹配的词进行词向量训练,对各节点训练得到的所述未匹配的词的训练词向量进行同步,触发下一周期训练,使得各个节点周期性训练得到所述未匹配的词的词向量,并将所述未匹配的词对应的词向量保存入所述词表中;其中,所述未匹配的词属于预设类别。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。另外,本发明还提供了另一种词向量的训练装置,下面结合图4对该装置进行解释说明。图4是本发明实施例提供的一种词向量的训练装置的硬件结构图,图4示出的装置300可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。参照图4,装置300可以包括以下一个或多个组件:处理组件302,存储器304,电源组件306,多媒体组件308,音频组件310,输入/输出(I/O)的接口312,传感器组件314,以及通信组件316。处理组件302通常控制装置300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件302可以包括一个或多个处理器320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件302可以包括一个或多个模块,便于处理组件302和其他组件之间的交互。例如,处理组件302可以包括多媒体模块,以方便多媒体组件308和处理组件302之间的交互。存储器304被配置为存储各种类型的数据以支持在设备300的操作。这些数据的示例包括用于在装置300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。电源组件306为装置300的各种组件提供电力。电源组件306可以包括电源管理系统,一个或多个电源,及其他与为装置300生成、管理和分配电力相关联的组件。多媒体组件308包括在所述装置300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件308包括一个前置摄像头和/或后置摄像头。当设备300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。音频组件310被配置为输出和/或输入音频信号。例如,音频组件310包括一个麦克风(MIC),当装置300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器304或经由通信组件316发送。在一些实施例中,音频组件310还包括一个扬声器,用于输出音频信号。I/O接口312为处理组件302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。传感器组件314包括一个或多个传感器,用于为装置300提供各个方面的状态评估。例如,传感器组件314可以检测到设备300的打开/关闭状态,组件的相对定位,例如所述组件为装置300的显示器和小键盘,传感器组件314还可以检测装置300或装置300一个组件的位置改变,用户与装置300接触的存在或不存在,装置300方位或加速/减速和装置300的温度变化。传感器组件314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。通信组件316被配置为便于装置300和其他设备之间有线或无线方式的通信。装置300可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。在示例性实施例中,装置300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器304,上述指令可由装置300的处理器320执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种词向量的训练方法,所述处理器执行以下操作的指令:抓取互联网网页,获取训练语料,保存在语料库中;对语料库中的每个训练语料分别作分词处理,得到每个训练语料对应的有序词集合;根据预先收集的用户查询日志构建词表;将所述语料库中保存的各训练语料分发至分布式词向量学习模型中的各节点;配置所述分布式词向量学习模型对所述词表中的各词进行周期性的词向量训练,得到所述词表中各词对应的词向量;其中,所述词向量训练包括:各节点分别根据分配到的训练语料,对每个训练语料对应的有序词集合中包括的与所述词表匹配的词进行训练,并对各节点训练得到的词表中各词的训练词向量进行同步后,触发下一周期训练。图5是本发明实施例中服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,FreeBSDTM等等。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备)执行本发明各个实施例或者实施例的某些部分所述的方法。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离组件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的组件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1