具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在自然语言处理技术领域,要将自然语言交给机器学习中的算法来处理,首先需要将自然语言数学化,词向量就是将自然语言数学化表示的一种方式。
One-hot型词向量就是将自然语言数学化表示的一种方式,One-hot型词向量是一个高维度的词向量,其维度表示词库中词的数量,将词库中的词按照一定顺序排列,每个维度就表示一个词,因此,在One-hot型词向量中,只有一个维度为1,其余维度均为0。
例如,词库中有1000个词,“苹果”是这个词库中的第3个词,“香蕉”是这个词库中的第4个词,那么,对于这个词库中的词来说,One-hot型词向量就是一个1000维向量,其中:
苹果=[0,0,1,0,0,0,0……]
香蕉=[0,0,0,1,0,0,0……]
One-hot型词向量看似实现了自然语言数学化表示,但是,在文本匹配、文本分类等应用领域,通常涉及到词之间语义的相似度计算。而One-hot型的每个维度独立表示一个词,无法体现词之间的语义相似关系,例如:“苹果”和“香蕉”同表示水果,如果用词向量的余弦距离表示词的语义相似关系,在One-hot型词向量的表示方法下,“苹果”和“香蕉”的余弦相似度为0,无法表达出任何语义相似关系。
在One-hot型词向量无法表达词之间的相似关系的情况下,本领域技术人员主要使用Distributed Representation型词向量作为将自然语言数学化表示。这种词向量是一种低维度的词向量,可以看作是构造了一个低维度的词向量空间,每个词作为词向量空间中的一个点,语义越相近的词,在词向量空间中的距离越近,这种词向量表现为下面的形式:[0.792,-0.177,-0.107,0.109,-0.542,…]。
现有技术中,本领域技术人员通过训练Word2vec的相关词向量模型,得到上述形式的低维词向量。这些词向量模型本质上构建了一个从词本身到词的语义的映射,现有技术中,本领域技术人员将中心词或上下词作为词向量模型的输入,将上下词或中心词作为词向量模型的输出,以训练词向量。需要补充说明的是,中心词和上下词均为相对概念,一个分词既可以是中心词也同时是其他分词的上下词。
具体地,图1示出了现有技术的词向量模型基本结构的示意图。如图1所示,词向量模型的基本结构可以看作是反向设置的两层神经网络,包括输入层、隐含层和输出层,其中,W1表示词向量模型中输入层到隐含层的神经网络权重,W2表示词向量模型中隐含层到输出层的神经网络权重。目前,现有技术的词向量训练模型主要有两种,一种是skip-gram模型,这种模型以中心词的词向量作为输入,预测上下词的词向量;另一种是CBOW模型,这种模型以上下词的词向量作为输入,预测中心词的词向量。
词向量模型的训练是一个迭代过程。在一种迭代过程中,被预测的词向量在输出层得到训练结果,这个训练结果与输出层输入的中心词或上下词的词向量之间存在误差,根据这个误差在每一轮迭代过程中利用反向传播算法更新词向量模型的隐含层权重,从而实现词向量的不断迭代更新。
由上述现有技术可知,当词向量模型skip-gram模型时,上下词的词向量训练结果向中心词的词向量靠拢,因此,现有技术训练出的词向量会出现下面的情形:
例如,训练样本中有以下语料:
产品销量同比去年提升15个百分点
产品价格同比去年下降10个百分点
在上面的样本中,上下词“提升”和“下降”语义相反,但是,由于现有技术中上下词的词向量向中心词的词向量靠拢(例如:中心词为“去年”),因此,通过现有技术的词向量训练方法得到的“提升”和“下降”的词向量可能会具有很近的距离,甚至比他们的同义词距离更近,从而无法体现出语义相反的两个词的区别性。此外,不难理解,即使是距离相近的同一类的词,例如“苹果”“香蕉”由于它们的中心词可能不属于同一类(例如:“种植”“采摘”等动词),因此,训练得到的“苹果”“香蕉”的词向量也不能保证距离上的相近。
可见,现有技术的词向量训练方法,在词向量的表示上无法有效地表达词的极性,即:同类词不能表达出相似性,不同类词不能表达出区别性。因此,现有技术训练出的词向量质量不高,不能很好地贴近词的真实语义。
目前,词向量被广泛地应用于人工智能领域的文本分类或语音问答等任务中。例如,在文本分类领域,本领域技术人员可以收集大量的语料文本,并对语料文本进行分类标注;然后,将分类标注后的语料文本进行分词,并根据每个分词对应的词向量得到语料文本的词向量序列;然后,将语料文本的词向量序列和分类标注结果输入到例如Sequence toSequence模型(序列到序列的模型)等基于神经网络的分类模型中,以训练分类模型,使分类模型具备文本分类能力。其中,分类模型中可以视作一个词向量空间,该词向量空间的维度等于词向量的维度,每个词向量可以对应词向量空间中的一个坐标点,每个类别的语料文本的词向量序列分别对应词向量空间中一个集中区域内的坐标点的集合。那么,在使用分类模型进行文本分类时,将待分类文本的词向量序列输入到分类模型中,使词向量模型判别待分类文本的词向量序列分布在词向量空间的哪个区域,与哪个分类对应的区域距离最近,从而给出预测的分类结果。
在上述分类模型中,如果使用的词向量的质量不高,例如词向量不能有效地表达词的极性,会导致语义差别大的词向量在词向量空间中的距离较近,或者语义差别小的词向量在词向量空间中的距离较远,从而降低分类模型的质量,因此词向量质量的高低是决定文本分类或语音问答准确性的基础条件。为了解决现有技术中存在的问题,本申请实施例提供了一种单语义监督的词向量训练方法及装置。
为了便于本领域技术人员理解本申请的技术方案,在对本申请提供的技术方案进行详细描述之前,首先对本申请涉及到的一些专业概念做出具体解释。
首先,训练词向量需要使用样本语料,样本语料可以是一个或多个文本段落、句子等。在训练词向量之前,首先需要对样本语料进行分词,那么,在样本语料的分词结果中,如果以其中一个分词作为中心词,则该中心词的前C(C为大于或等于1的整数)个分词和后C个分词就可以称为该中心词的上下词。
具体地,预设一个取词窗口值C,用于定义上下词的取词范围和数量,C值为整数,且C大于或等于1。当位于中心词前方和后方的分词数量均大于C时,获取的上下词的数量为2C;当位于中心词前方或后方的分词数量小于C时,在分词数量小于C的方向取到所有的分词为止,此时上下词的数量小于2C。
示例地,中心词为“苹果”,分词序列为:我想买一个苹果电脑
当C=1时,上下词为“一个”和“电脑”。
当C=2时,从“苹果”的前方取到上下词“想买”和“一个”;从“苹果”的后方取到上下词“电脑”;因此,从分词序列中取到的上下词为“想买”“一个”“电脑”。
进一步地,包括中心词和上下词在内的分词均可以包括多个语义,每个语义可进一步第分割成多个原子语义,原子语义是表达语义的不可继续分割的最小单位,也称为义原。其中,中心词和上下词的语义和义原可以从HowNet(知网)中获得。知网是一个以汉语和英语的词语所代表的概念为描述对象,以揭示概念与概念之间以及概念所具有的属性之间的关系为基本内容的常识知识库。在知网中,义原是最基本的、不易于再分割的意义的最小单位,一个词可以有多个语义,每个语义可以包含多个义原。例如:中心词“苹果”共有两个语义,即“电脑”和“水果”,其中,例如“电脑”包含义原“样式值”“能”“携带”“特定牌子”。在知网,相对于词语的数量来说,义原的数量十分有限,且词语的语义均可以细分为知网中的几个义原,所以不同词语的语义中,义原会存在交叉。因此,如果用义原向量去生成分词的语义向量,不仅能够表达出分词的真实语义,还能够体现出不同分词的语义之间的关系。
另外,由于中心词包含多个上下词,那么,在使用中心词的词向量训练上下词的词向量时,要对中心词的每个上下词分别进行的训练,为了描述正在被训练的上下词,本申请中将正在被训练的上下词命名为目标词。因此,在每一次训练中,目标词为中心词的一个上下词。
下面结合附图,对本申请实施例提供的技术方案做具体说明。
下面是本申请的方法实施例。
参见图2,为本申请实施例示出的一种单语义监督的词向量训练方法的流程图,如图2所示,所述方法包括以下步骤:
步骤S1,根据目标词的每个语义所包含义原的义原向量,生成每个语义的加权语义向量。
其中,义原向量在词向量模型训练开始前随机生成,并在训练过程中不断迭代更新。加权语义向量可以通过对语义所包含的义原的义原向量进行加权求和得到。
在知网中,义原的数量很少(约2000个),通过义原向量生成的加权语义向量能够很好地表达语义之间的相近关系,例如:加权语义向量A由a、b、c三个义原向量生成,加权语义向量B由a、d、e三个义原向量生成,两个加权语义向量中均包含义原向量a,因此,这两个加权语义向量所对应的语义存在相近成分。
进一步参见图3,为本申请实施例示出的一种单语义监督的词向量训练方法步骤S1的流程图,在本实施例或本申请其他某些实施例的一种可选择的实施方式中,步骤S1可以包括以下步骤:
步骤S11,根据目标词的每个语义的义原数量,设置每个语义的义原权重。
本申请实施例中,基本思路是:根据目标词的每个语义拥有的义原的数量确定义原权重,即:语义中义原数量越多,每个义原的权重就越小,语义中义原数量越少,每个义原的权重就越大。示例地,目标词共有N个语义,如果第j(1≤j≤N)个语义中义原的数量为M,且每个语义的义原的总权重为1,那么,第j个语义中每个义原的义原权重就为1/M,即:对每个语义中的义原设置相同的义原权重,义原权重的数值等于义原数量的倒数。
步骤S12,根据所述义原权重,对每个语义中的所述义原向量进行加权求和,生成每个语义的所述加权语义向量。
本申请实施例中,基本思路是:首先,随机对义原向量进行初始化赋值,然后,将义原向量乘以其对应的义原权重,从而得到义原向量的加权,然后,义原向量的加权求和,得到加权语义向量。
示例地,目标词第j个语义的第k个义原向量为那么该义原向量的加权为:
如果将目标词第j个语义的加权语义向量表示为那么,/>的计算方法为:
容易理解的是,现有技术中在训练词向量的方法,通常是以上下词作为中心词的语义,使中心词向上下词靠拢,或者,是以中心词作为上下词的语义,使上下词向中心词靠拢,由于上下词和中心词的词向量都是随机初始化生成的,因此,现有技术训练出的词向量无法表达出中心词和上下词的真实语义,因此词向量的质量不高。而本申请中,目标词的加权语义向量是通过对义原向量加权得到,能够表达目标词的真实语义。
步骤S2,选取目标词的一个语义的所述加权语义向量作为引导向量。
本申请实施例中,引导向量用于在词向量训练过程中引导目标词的词向量的迭代更新方向,使目标词的词向量的迭代方向朝着目标词的其中一个语义靠拢,而不是如现有技术那样朝着中心词的词向量靠拢,从而,使本申请实施例的技术方案训练得到目标词的词向量能够表达出目标词的真实语义,从而,本申请实施例的技术方案训练得到的词向量在应用于智能问答、文本匹配和文本分类等自然语言处理等任务中时,能够有更好的表现。
在一种可选择的实施方式中,步骤S2可以包括:
步骤S21,随机选取目标词的一个语义的所述加权语义向量作为所述引导向量。
其中,随机选取目标词的一个加权语义向量作为引导向量,使词向量训练过程中,目标词的每个加权语义向量都可能被随机选择到,能够在保证目标词的词向量向目标词的单一语义靠拢的同时,又体现出一定的丰富性,从而,使训练出的词向量用于智能问答等领域时,智能问答系统生成的结果具有多样性。
在另一种可选择的实施方式中,步骤S2可以包括:
步骤S22,获取目标词的义原数量最少的语义。
步骤S23,从目标词的义原数量最少的语义中随机选择一个语义的所述加权语义向量作为所述引导向量。
示例地,目标词共有A、B、C,共三个语义,其中,A包含a、b、c三个义原,B包含d、e两个义原,C包含f、g两个义原,因此,目标词的义原数量最少的语义有B和C,然后,进一步从B和C中随机选择一个语义的加权语义向量作为引导向量。
其中,选取目标词的义原数量最少的加权语义向量作为引导向量,能够使训练得到的目标词的词向量唯一性更高,从而减小语义损失,使词向量表达的语义更专注,从而,在训练出的词向量用于文本匹配等领域时,使匹配结果更准确、更收敛。
步骤S3,构造从所述引导向量到目标词的词向量之间的距离损失函数。
为了解决现有技术中的词向量训练方法得到的词向量在表达词的极性和类别上的缺陷,本申请实施例不使用中心词的词向量作为目标词的词向量的迭代目标,而是使用了在步骤S2中生成的引导向量,构造从目标词的词向量到引导向量之间的距离损失函数,由于引导向量取自目标词的一个加权语义向量,因此,本申请实施例构造的距离损失函数,建立起了目标词的词向量与目标词的其中一个真实语义之间的联系,引导目标词的词向量朝着贴近目标词的一个真实语义的方向去迭代更新。因此,本申请实施例训练得到的词向量能够表达出目标词的真实语义,弥补了现有技术中存在的词向量表达词的极性和类别上的缺陷。
具体地,获取目标词的词向量与引导向量的余弦距离,将所述余弦距离作为距离损失函数。
其中,所述余弦距离函数可以是如下形式:
其中:cosθ为余弦距离;Ai表示引导向量第i维的值;Bi表示目标词的词向量第i维的值;n表示词向量的预设维度,例如,当词向量的维度为200维时,n=200。
步骤S4,根据所述距离损失函数监督目标词的词向量在词向量模型训练时的迭代更新方向。
现有技术是使用中心词的词向量去监督目标词的词向量在词向量模型训练时的迭更新代方向,本申请实施例中,基本思路是使用距离损失函数替代中心词的词向量,从而使词向量模型训练的目标词的词向量朝着引导向量去迭代,进而使训练生成的目标词的词向量朝着目标词的一个真实语义去靠拢,解决现有技术的词向量训练方法得到的词向量在表达词的极性、类别方面存在欠缺,无法体现出词语的真实语义的问题。
具体地,词向量模型在训练过程中,循环选择中心词的预设窗口范围内的上下词作为目标词,并根据所述距离损失函数监督目标词的词向量的迭代更新方向。
进一步参见图4,为本申请实施例示出的一种单语义监督的词向量训练方法步骤S4的流程图,在本实施例或本发明其他某些实施例的一种可选择的实施方式中,步骤S4可以包括以下步骤:
步骤S41,获取所述距离损失函数对词向量模型中每个连接权重的偏导。
例如CBOW、Skip-gram等词向量模型的基本结构可以看作是两个反向连接的神经网络,其中,词向量模型的隐含层权重就是这个神经网络的每个网络节点的连接权重,其训练词向量的过程就是在迭代中不断更新其连接权重,使神经网络的输出结果趋近于减小距离损失函数的过程。因此,本申请实施例的基本思路是:为了更新这些连接权重,首先获取词向量模型中每个连接权重的偏导。
步骤S42,根据所述偏导更新所述连接权重。
其中,每个连接权重的偏导反应了每个连接权重对距离损失函数的影响值。在步骤S42中,通过使用链式法则将每个连接权重的偏导进行反向传播,从而获取到词向量模型的输出层到隐含层、以及隐含层到输入层的连接权重对距离损失函数的影响值。
具体地,在更新连接权重的过程中可设置神经网络的学习速率,可以在迭代的初期设置一个较大的学习速率,然后在迭代过程中使学习速率不断衰减,防止学习速度过快而导致连接权重的更新陷入随机跳动、局部最小值或发散。
步骤S43,在下一轮迭代中,使用更新后的所述连接权重更新目标词的词向量。
通过词向量模型的连接权重的不断更新,目标词的词向量也在训练中不断更新,最终生成能够用于到生产环境中的词向量。
另外,在现有技术中的词向量模型,通常以中心词的词向量作为输入,以上下词的词向量作为输出,或者,以上下词的词向量作为输入,以中心词的词向量作为输出。由于中心词的词向量和上下词的词向量均为随机生成的词向量,因此,这样的词向量在表达词的语义和语境上均存在缺陷。为了克服上述缺陷,本申请示例提供的技术方案中,词向量模型以中心词的词向量作为输入,以输出向量作为输出。
参见图5,为本申请实施例提供的一种单语义监督的词向量训练方法的生成输出向量的流程图。下面结合图5具体介绍输出向量的生成方法,包括以下步骤:
步骤S51,分别获取中心词的词向量与目标词的每个所述加权语义向量的相似度。
其中,中心词的词向量在初始化时随机生成,并在词向量模型的训练过程中迭代更新。作为一种可选择的实施方式,本申请实施例中以中心词的词向量和目标词的加权语义向量的向量乘积作为所述相似度,即:
其中,w为中心词的词向量,为目标词第j个语义的加权语义向量。
步骤S52,根据所述相似度,分别获取中心词的词向量与目标词的每个所述加权语义向量的关注系数。
具体地,可以使用以下公式生成每个加权语义向量的关注系数:
其中:目标词共有N个语义;表示目标词第j个语义的加权语义向量的关注系数,1≤j≤N;w为中心词的词向量;/>为目标词第j个语义的加权语义向量;/>为目标词第p个语义的加权语义向量,1≤p≤N;/>表示对目标词第j个语义对应的相似度取e为底的对数;/>表示分别对目标词每个语义对应的相似度取e为底的对数,然后求和。
步骤S53,根据所述关注系数,对目标词的语义向量进行加权求和,生成目标词的输出向量。
本申请实施例中,基本思路是使用所述关注系数对目标词的语义向量进行加权,并对加权结果进行求和,将求和结果作为目标词的输出向量。其中,目标词的语义向量与目标词的加权语义向量是不同的概念,目标词的语义向量是随机初始化生成的,并且在词向量模型的训练过程中迭代更新,而目标词的加权语义向量是由义原向量加权得到的。
具体地,可以用以下公式生成目标词的输出向量。
Wt为目标词的输出向量;N为目标词语义的数量;为目标词第j个语义的加权语义向量的关注系数;/>为目标词的第j个语义的语义向量。
本申请实施例中,输出向量能够表达出目标词的语境对目标词的语义的影响,因此,使用本申请生成的输出向量作为词向量模型的输出,能够使训练得到的目标词的词向量在很好地表达词的极性和类别的同时,还能表达出语境对语义的影响,因此词向量的质量更高。
此外,由于在词向量训练过程中,在对义原向量、语义向量和词向量进行初始化之后,这些向量的数值在迭代过程中是不断发生变化的,因此,整个词向量模型将会是一个不断更新学习的不稳定模型。为了能够使词向量模型趋于稳定,使词向量稳定地朝着引导向量的方向去迭代更新,本申请实施例在步骤S4之后,还可以包括迁徙流程。
参见图6,为本申请实施例示出的一种单语义监督的词向量训练方法的迁徙流程图,具体以下步骤:
步骤S61,在词向量模型完成预设次数的迭代之后,提取词向量模型产生的词向量和义原向量。
具体地,在词向量模型完成一定次数的迭代之后,词向量模型训练产生的词向量和义原向量已经能够达到用于生产环境(例如:用于进行文本分类,智能问答等生产环境中)的标准,此时,本申请实施例中,词向量模型产生的词向量和义原向量提取出来,作为词向量模型的迁徙学习的素材。
步骤S62,将提取到的词向量和义原向量作为词向量模型继续训练的输入参数。
具体地,本申请实施例中,将提取到的词向量和义原向量作为词向量模型继续训练的输入参数,以替代词向量模型训练时使用的随机产生的初始参数。
此外,提取到的词向量和义原向量还可以迁徙到其他词向量模型,作为其他词向量模型的初始参数,可以大大节省词向量词向量训练时间和提高训练生成的词向量的质量。
步骤S63,当词向量模型继续训练时,固定义原向量的值,使词向量模型在迭代更新时仅更新词向量的值。
具体地,由于语义向量和词向量均由义原向量产生,因此,如果固定义原向量的值,就等于固定了词向量模型的根基,词向量模型就会趋于稳定,从而词向量可以稳定地朝着引导向量的方向更新,提高词向量的质量。
由以上技术方案可知,本申请实施例提供了一种单语义监督的词向量训练方法,在词向量训练的过程中,首先,根据目标词的每个语义所包含义原的义原向量,生成每个语义的加权语义向量;然后,选取目标词的一个语义的所述加权语义向量作为引导向量;然后,构造从所述引导向量到目标词的词向量之间的距离损失函数;最后,根据所述距离损失函数监督目标词的词向量在词向量模型训练时的迭代更新方向,从而使目标词的词向量在训练过程中朝着目标词的单一语义靠拢。从而,解决了现有技术中的词向量训练方法得到的词向量在表达词的极性、类别方面存在欠缺,无法表达出词语的真实语义的问题。
下面是本申请的装置实施例,可用于执行本申请的方法实施例,该装置包括用于执行本申请的方法实施例的各个步骤的软件模块。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
参见图7,为本申请实施例示出的一种单语义监督的词向量训练装置的示意图,如图7所示,所述装置包括:
加权语义向量表达模块71,用于根据目标词的每个语义所包含义原的义原向量,生成每个语义的加权语义向量;
引导向量表达模块72,用于选取目标词的一个语义的所述加权语义向量作为引导向量;
距离损失构造模块73,用于构造从所述引导向量到目标词的词向量之间的距离损失函数;
监督模块74,用于根据所述距离损失函数监督目标词的词向量在词向量模型训练时的迭代更新方向;
其中,所述目标词为中心词的一个上下词。
由以上技术方案可知,本申请实施例提供了一种单语义监督的词向量训练装置,在词向量训练的过程中,首先,根据目标词的每个语义所包含义原的义原向量,生成每个语义的加权语义向量;然后,选取目标词的一个语义的所述加权语义向量作为引导向量;然后,构造从所述引导向量到目标词的词向量之间的距离损失函数;最后,根据所述距离损失函数监督目标词的词向量在词向量模型训练时的迭代更新方向,从而使目标词的词向量在训练过程中朝着目标词的单一语义靠拢。从而,解决了现有技术中的词向量训练方法得到的词向量在表达词的极性、类别方面存在欠缺,无法表达出词语的真实语义的问题。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。