词嵌入模型的训练方法及装置
技术领域
本发明涉及自然语言处理技术领域,具体涉及一种词嵌入模型的训练方法及装置。
背景技术
在自然语言处理(Natural Language Processing,NLP)领域,词的表示方法有独热表示(one-hot representation)和分布式表示(distributed representation)两大类,其中,分布式表示是基于分布假说(Distributional Hypothesis),它的核心思想由两部分组成:一、选择一种方式描述上下文;二、选择一种模型来刻画某个词(即中心词)与其上下文之间的关系。根据建模的不同,词的分布式表示主要可以分为三类:基于矩阵的分布表示、基于聚类的分布表示和基于神经网络的分布表示。其中,基于神经网络的分布式表示一般也被称为词嵌入(word embedding),主要是通过神经网络技术对中心词的上下文,以及上下文与中心词之间的关系进行建模。词嵌入是一种低维实数向量,例如[0.792,-0.177,-0.107,0.109,-0.542,…],其维度可以是50维、100维等。
连续词袋模型(Continous Bag of Words Model,CBOW)和Skip-gram模型是Mikolov等人提出的神经网络语言模型,可以用来训练以得到语料库中每一个词的词嵌入。CBOW是统计语言模型的一种,请参考图1,其主要思想是根据中心词(w(t))的上下文,即中心词前面的C个词(例如w(t-2)、w(t-1)等)以及后面的C个词(例如w(t+1)、w(t+2)等),来计算中心词的概率。与CBOW相反,请参考图2,Skip-Gram模型的主要思想是根据中心词(w(t))来分别计算它前后的词(例如w(t-2)、w(t-1)、w(t+1)、w(t+2)等)的概率。
但是,采用CBOW、Skip-gram模型等训练出来的词嵌入在表示能力上还存在缺陷,极性问题较为严重。具体来说,当计算两个词的相似度时,通常是将两个词各自的词嵌入代入到欧式距离或者余弦距离的公式中来计算。但是无论是采用欧式距离还是余弦距离来表示两个词的相似度,经常会出现这样的错误——语义相反的词之间的距离反而比语义一致的词之间的距离更近。例如“开心”与“快乐”的语义一致,利用CBOW、Skip-gram模型等训练得到的词嵌入来计算二者的语义相似度P1;“开心”与“不开心”的语义相反,同样利用利用CBOW、Skip-gram模型等训练得到的词嵌入来计算二者的语义相似度P2。理应P1>P2,但实际计算出来却可能是P1<P2。
由于采用CBOW、Skip-gram模型等训练出来的词嵌入存在这样的极性问题,进而导致进行文本语义匹配、文本分类等处理的时候容易出错,匹配到完全不同的句子,或者将语义相反的两个文本分类到同一个类别中,这是本领域技术人员亟待解决的问题。
发明内容
为解决上述技术问题,本申请提供一种新的词嵌入模型的训练方法,在现有的训练方法的基础上,局部调整某些词的位置,使这些词与其近义词之间的距离缩小。通过这样的方法训练得到的词嵌入矩阵,能够更好地区分近义词和反义词,从而有效地减轻词嵌入的极性问题。
第一方面,本申请提供一种词嵌入模型的训练方法,包括以下步骤:
利用词嵌入矩阵,训练样本的输入词向量化表示为第一向量;
根据所述第一向量得到预测词;
利用所述预测词,以及所述输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数;
获取目标词的近义词集,所述目标词包括所述输入词或所述真实词;
从所述近义词集中确定一个榜样词;
更新所述目标词和所述榜样词在词嵌入矩阵中所对应的参数,以缩短所述目标词与所述榜样词之间的距离。
结合第一方面,在第一方面第一种可能的实现方式中,从所述近义词集中确定一个榜样词的步骤,包括:
从所述近义词集中确定子集,所述子集中的每一个近义词与所述目标词的反义词分别处于所述目标词的两侧;
从所述子集中确定一个榜样词。
结合第一方面的第一种实现方式,在第一方面第二种可能的实现方式中,所述词嵌入模型的目标函数为:
L(H)=L+α·J(wt,wi),
其中,L为第一目标函数,表示CBOW模型或Skip模型的目标函数;
wt表示目标词,wi表示选自所述近义词集的榜样词;
J(wt,wi)为第二目标函数,表示榜样词wi与目标词wt之间的距离;
α表示影响因子。
结合第一方面的第一种或第二种实现方式,在第一方面第三种可能的实现方式中,榜样词wi与目标词wt之间的距离为余弦距离,
结合第一方面的第三种实现方式,在第一方面第四种可能的实现方式中,更新所述目标词在词嵌入矩阵中所对应的参数的步骤,包括:
wtj (new)=wtj+η·Gradient(wtj),
其中,wtj (new)表示目标词wt的第j维在更新后的值;
η表示第二学习率;
Gradient(wtj)表示目标词wt的第j维的更新梯度;
表示目标词wt与榜样词wi之间的距离值,对目标词wt的第j维的偏导数;
wtj表示目标词wt的第j维在更新之前的值;
wij表示榜样词的第j维在更新之前的值。
结合第一方面的第四种实现方式,在第一方面第五种可能的实现方式中,更新所述榜样词在词嵌入矩阵中所对应的参数的步骤,包括:
wij (new)=wij+η·Gradient(wij),
其中,wij (new)表示榜样词wi的第j维在更新后的值;
η表示第二学习率;
Gradient(wij)表示榜样词wi的第j维的更新梯度;
表示目标词wt与榜样词wi之间的距离值,对榜样词wi的第j维的偏导数;
wij表示近义词wi的第j维在更新之前的值;
wtj表示目标词的第j维在更新之前的值。
结合第一方面的第四种或第五种实现方式,在第一方面第六种可能的实现方式中,第二学习率η通过以下方式得到:
η=α·μ,
其中,α表示影响因子;
μ表示第一学习率;
μ0表示第一学习率预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
结合第一方面的第四种或第五种实现方式,在第一方面第七种可能的实现方式中,当更新梯度Gradient(wtj)的绝对值>max_Gradient时,取所述Gradient(wtj)=max_Gradient;和/或,
当更新梯度Gradient(wij)的绝对值>max_Gradient时,取所述Gradient(wij)=max_Gradient;
其中,
max_Gradient为梯度最大值;
starting_mG表示梯度最大值的预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
结合第一方面及上述可能的实现方式,在第一方面第八种可能的实现方式中,当所述词嵌入模型为CBOW模型时,所述训练样本的输入词为上下文词,所述预测词为中心词的预测值,所述真实词为中心词的真实值;或,当所述词嵌入模型为Skip模型时,所述训练样本的输入词为中心词,所述预测词为上下文词的预测值,所述真实词为上下文词的真实值。
第二方面,本申请提供一种词嵌入模型的训练装置,包括:
第一处理单元,用于利用词嵌入矩阵,将训练样本的输入词向量化表示为第一向量;根据所述第一向量得到预测词;利用所述预测词,以及所述输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数;
第二处理单元,用于获取目标词的近义词集;从所述近义词集中确定一个榜样词;以及,更新所述目标词和所述榜样词在词嵌入矩阵中所对应的参数,以缩短所述目标词与所述榜样词之间的距离;其中,所述目标词包括所述输入词或所述真实词。
在上述训练方法和装置中,在常规的词嵌入模型中引入一个远程监督榜样,让榜样词和目标词彼此成为对方的远程监督榜样,利用目标词和榜样词构造一个远程监督函数,将其与常规模型的目标函数合在一起,从而使二者做联合学习。即,一方面,利用词嵌入矩阵,将输入词向量化表示为第一向量,根据第一向量得到预测词,利用预测词以及输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数;另一方面,获取目标词的近义词集,这里的目标词包括输入词或真实词;然后从所述近义词集中确定一个榜样词,更新所述目标词和所述榜样词在词嵌入矩阵中所对应的参数,以缩短所述目标词与榜样词之间的距离。通过这样的方法不断训练,不断更新词嵌入矩阵中的参数,使每一个目标词都朝着该目标词的榜样词移动,让目标词对应的榜样词也朝着目标词移动,对目标词和榜样词做局部调整,从而缩短二者之间的距离。进而使得在最终训练得到的词嵌入矩阵中,一个词与其大部分近义词之间的距离小于该词与其反义词之间的距离。
上述训练方法中,除了利用语言单位的组合关系之外,还引入了语言单位之间的聚合关系,从而可以很好地将一个词的近义词与其反义词区分开来,以此减轻词嵌入的极性问题。同时,这样训练得到的词嵌入仅仅做了局部调整,而不会导致整个词向量空间紊乱。相比于采用常规的词嵌入模型所训练得到的词嵌入而言,将这样的词嵌入应用到文本语义匹配、文本分类等自然语言处理任务中,可以使匹配或分类的准确率更高,取得更加令人满意的效果,尤其适合用在文本匹配等相关的自然语言处理任务中。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为CBOW模型的原理示意图;
图2为Skip模型的原理示意图;
图3为CBOW模型的结构及工作原理示意图;
图4为本申请的词嵌入模型的训练方法的一个实施例的流程图;
图5为获取目标词的近义词集的一个实例示意图;
图6为采用本申请的训练方法将目标词朝榜样词移动之前和之后的效果示意图;
图7为图6中(a)所示的例子中将每一个近义词分别作为榜样词,与目标词朝着彼此移动之后的效果示意图;
图8为采用本申请的训练方法时确定榜样词时的一种实现方式的示意图;
图9为本申请的词嵌入模型的训练装置的一个实施例的结构示意图。
附图标记说明:
目标词移动之前其近义词集的范围1;近义词集中的远距离近义词12;近义词集中除远距离近义词之外其他的近义词11;目标词移动之后其近义词集的范围2;目标词3;目标词的反义词集的范围4;反义词41;
第一处理单元5;第二处理单元6。
具体实施方式
像CBOW、Skip这样的词嵌入模型,一般包括三层结构:输入层、投影层和输出层。以下以CBOW模型为例来具体说明其工作原理。
请参考图3,在输入层内具有一个词嵌入矩阵,包括了训练语料中的所有词(n个)的初始向量表示,该词嵌入矩阵为n×d的矩阵,其中每一个词对应的初始向量表示都可以是随机设定或预设的。在输入层中,利用该词嵌入矩阵,获取中心词(w(t))的上下文,即中心词前面的C个词(例如w(t-2)、w(t-1)等)以及后面的C个词(例如w(t+1)、w(t+2)等)的向量表示,即2C个上下文词的向量表示。投影层中具有m个神经元,输入层到投影层的权值表示为V,投影层到输出层的权值表示为U。这里V和U也都是矩阵,在训练的初始可以随机设置权值V和权值U。将上下文词的向量表示映射到投影层上的神经元之后,再映射到输出层,从输出层输出预测到的中心词(预测词)。根据预测的中心词(预测词),以及实际的中心词(真实词),采用梯度下降法来更新词嵌入矩阵、权值V和权值U。直到所有的训练样本都迭代训练了预设的次数,或者满足预设的停止条件,则认为训练完成。此时的权值V和权值U就是模型的最优参数,同时此时的词嵌入矩阵就是训练得到的词嵌入矩阵,其中包含了训练语料中每一个词的向量表示,即词嵌入,每一个词的词嵌入的维度为1×d。
对于一个词嵌入模型而言,其目标函数用于计算预测到预测词与真实词之间的误差,并用于通过反向传播的方法来更新模型中的参数,包括前述的词嵌入矩阵、参数U和V等。
像CBOW、Skip这样的词嵌入模型,其目标函数是似然对数函数。
CBOW的目标函数如下:
Sikp的目标函数如下:
其中,w表示中心词,Context(x)表示上下文词,C表示语料库中所有的词。
在语言学里面,语言单位之间的关系包括了组合关系和聚合关系。
组合关系是语言单位之间的横向关系。语言是一个线性结构,要表达一定意义的一个句子通常需要许多语言单位组合在一起。这些语言单位在组合过程中有一定的顺序和选择对象,并不是任意组合的,例如:肉-吃,雪-冷,医生-医院等。
聚合关系是语言单位之间的纵向关系。具有聚合关系的语言单位在一个句子中可能出现在同一个位置上,具有相同的功能,在符合语法要求的情况下可以相互替换。例如,“你是一个好学生”以及“你是一个坏学生”这两个句子中,“好”和“坏”这两个词可以相互替换,不会影响语法结构。与一个词具有聚合关系的词,可以包括其近义词、同类别词、反义词等。
现有的像CBOW、Skip这样的词嵌入模型,是基于上下文概率最大化为优化目标的模型,在语言学里面就是利用句子中语言单位之间的组合关系来进行预测。而利用这样的模型训练后得到的词嵌入之所以存在极性问题,主要是由于模型本身是基于语言单位之间的组合关系而构建的,而词嵌入的极性问题其本质上属于语言单位之间的聚合关系,故而利用CBOW、Skip等词嵌入模型难以准确地表示出语言单位之间的聚合关系。
为了能够有效区分近、反义词,一种实现方式是引入近义词集和反义词集,构造一个远程监督的函数去区分近、反义词,然后和原始词嵌入模型的优化目标函数一起做联合学习。但是在实现该方案的过程中,发明人发现,使近、反义词移动,缩短每一对近义词之间的距离,放大每一对反义词之间的距离,虽然可以较好地区分近、反义词,但会破坏整个词向量空间。具体来说,在整个词向量空间中,词之间是很密集的,每一维的值差距特别小。例如,将50万个词都压缩在200维的浮动数字上,每一维的数字都小于1,并且每一维的数字的差基本都只有零点零几。CBOW、Skip等模型训练得到的词嵌入,其相对位置都是较为合理的,只是存在有些近、反义词区分不了的问题。而如果将近、反义词大面积移动,就会造成整个词向量空间的紊乱。例如,“提升”这个词,其移动到了靠近“苹果”的位置,虽然其与“降低”的距离更远了,可以很好地被区分开,但是这使得动词都移动到了名词的位置,从而造成了词向量空间的紊乱。这样得到的词嵌入用在后续的自然语言处理任务(例如分类、匹配、语义相关推理等)中,处理的效果较差。
故而,本申请提供一种新的词嵌入模型(在本申请中将其称之为BidirectionalMovement of Target and Synonyms Model,即BMTS模型)训练方法,在现有的词嵌入模型的基础上进行了改进,引入一个远程监督榜样,使二者做联合训练。即从目标词的近义词集中确定一个榜样词,然后使目标词朝着榜样词移动,让榜样词也朝着目标词移动,对目标词和榜样词做局部调整,从而缩短二者之间的距离,以便可以将目标词的近义词和反义词区分开来,同时不会导致整个词向量空间紊乱。
具体来说,以下将详细描述利用一个训练样本来训练该词嵌入模型的过程,请参考图4,包括以下S100至S600的步骤。
S100:利用词嵌入矩阵,将训练样本的输入词向量化表示为第一向量。
这里的词嵌入矩阵,包括语料库中所有训练语料中的词的向量表示。例如,语料库中所有训练语料中一共包含了1000个不同的词,预设每个词都采用200维的向量来表示,则词嵌入矩阵为一个1000×200的矩阵,其中每一行对应表示一个语料库中的词。这里,词嵌入矩阵中的每一个元素的初始值可以为随机值,也可以为预设值,随着训练的进行,词嵌入矩阵中的元素的值会被不断更新。
训练样本来自训练语料,包括了输入词和与之对应的真实词。在一种实现方式中,可以将该真实词以标签的形式标注在对应的输入词上。以训练语料中的一句文本“他是一个好学生”为例,这句话中包含了多个训练样本。用于训练CBOW模型,每个训练样本包括了上下文词以及中心词的真实值,这里的上下文词就是输入词,中心词的真实值就是真实词。从训练语料中获取训练样本的过程中,可以设置取词的窗口大小。例如,当窗口大小为2时,输入词是“他”、“是”、“好”、“学生”,与之对应的真实词为“一个”。又例如,输入词是“是”、“一个”、“学生”,与之对应的真实词为“好”。用于训练Skip模型,每个训练样本包括了中心词以及上下文词的真实值,这里的中心词就是输入词,上下文词的真实值就是真实词。例如,输入词是“一个”,与之对应的真实词为“他”、“是”、“好”、“学生”。又例如,输入词是“好”,与之对应的真实词为“是”、“一个”、“学生”。
将输入词向量化表示的方法,在一种实现方式中,当本申请中的词嵌入模型(即BMTS模型)基于CBOW模型时,也就是说BMTS模型是在CBOW模型的基础上改进而成的模型,此时,所述输入词为上下文词。在大部分情况下,上下文词往往有至少两个。此时,S100的步骤可以包括:
S101:确定至少两个上下文词;
S102:利用词嵌入矩阵分别确定所述至少两个上下文词的向量表示;
S103:将所述至少两个上下文词的向量表示累加,得到第一向量。
从当前的词嵌入矩阵中查找出每一个上下文词对应的向量表示,然后将所有上下文词的向量累加,就得到了第一向量。举例来说,如果上下文词共2个——“是”和“学生”,从1000×200的词嵌入矩阵中查找到“是”的向量v1为[0.790,-0.117,-0.107,……],“学生”的v2向量[0.176,0.354,-0.835……],二者均是200维的向量。将v1和v2对应的列的元素值分别相加,就得到了第一向量,即[0.966,0.237,-0.942,……]。
当获取训练样本的过程中窗口大小为1,并且中心词为训练语料的第一个词或最后一个词时,训练样本中作为输入词的上下文词仅有1个。此时,从词嵌入矩阵中查找到该上下文词的向量表示,直接将该向量表示作为第一向量,用于后续步骤中进行预测。
在另一种实现方式中,当词嵌入模型(即BMTS模型)基于Skip模型时,也就是说BMTS模型是在Skip模型的基础上改进而成的模型,此时,所述输入词为中心词。一般来说,中心词只取一个,因此,从当前的词嵌入矩阵中查找到该中心词对应的向量表示,该向量表示就是第一向量。
S200:根据所述第一向量得到预测词。
对于常规的词嵌入模型,例如CBOW、Skip这样的词嵌入模型而言,将一个向量作为词嵌入模型的输入值,经过模型预测就会得到预测词。这里,根据第一向量得到预测词的过程,可以与现有的CBOW、Skip等模型的预测过程一致,此处不再赘述。
S300:利用所述预测词,以及所述输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数。
在训练的过程中,利用输入词预测得到的预测词往往与真实词存在一定的误差,可以根据二者的误差来更新词嵌入矩阵中与当前输入词对应的参数。例如,如果输入词中包括了“学生”这个词,就会更新词嵌入矩阵中“学生”一词所对应的向量中的部分或全部元素的值。这里,更新词嵌入矩阵的具体方法可以采用现有的方法,例如梯度下降法等,此处不再赘述。
此外,在更新词嵌入矩阵的同时,还会根据预测词和真实词来更新词嵌入模型中各层之间的权值等参数。
当所述词嵌入模型(BMTS模型)是基于CBOW模型这样的利用上下文词来预测中心词的模型时,所述输入词为上下文词,所述预测词为中心词的预测值,所述真实词为中心词的真实值。当所述词嵌入模型(BMTS模型)是基于Skip模型这样的利用中心词来预测上下文词的模型时,所述输入词为中心词,所述预测词为上下文词的预测值,所述真实词为上下文词的真实值。
在本实施例中,词嵌入模型(BMTS模型)的目标函数可以是:
L(H)=L+α·J(wt,wi) (1)
其中,L为第一目标函数,表示CBOW模型或Skip模型的目标函数,用于按照CBOW模型或Skip模型的方法训练模型,以更新模型参数以及词嵌入矩阵。前述步骤S300中更新所述输入词在词嵌入矩阵中所对应的参数的过程,主要就是依据该第一目标函数。
α·J(wt,wi)是用于调整选自近义词集中的榜样词与目标词之间的距离的目标函数,其含义将在后续的S600的步骤中进行详细的说明。
S400:获取目标词的近义词集,所述目标词包括所述输入词或所述真实词。
目标词可以是输入词和真实词中的任一个。针对目标词,可以在预设的近义词库中查找,确定该目标词的至少一个近义词,然后获取至少一个近义词所组成的近义词集。例如,请参考图5,其中,输入词包括“build”、“your”、“home”、“now”共4个词,真实词为“smart”。将真实词“smart”作为目标词,可以获取到该目标词的近义词集,其中包括了3个近义词,分别为“wise”、“intelligent”和“clever”。
这里需要说明的是,此步骤中获取的近义词集中的每一个近义词,必然包含在语料库的所有词中,如果一个目标词在预设的近义词库中存在4个近义词,而其中一个是不在语料库的所有词中的,那么这个词就没必要作为该目标词的近义词而引入到训练当中来。例如前述的例子中,预设的近义词库中“smart”的近义词还包括“bright”,但训练该词嵌入模型所采用的语料库的所有词中并不包含“bright”一词,则获取的近义词集中就不包含“bright”。
另外需要说明的是,尽管该例子中以英语单词为例来说明,但是,本申请的训练方法可以适用于中文、英文、日文等多种语言,并仅限于本申请例子中的几种语言。
S500:从所述近义词集中确定一个榜样词。
这里,从近义词集中确定一个榜样词,可以是随机选取一个近义词,也可以是根据一定的规则来选取近义词,将其确定为榜样词。例如,请参考图5,将真实词“smart”作为目标词,可以获取到该目标词的近义词集包括“wise”、“intelligent”和“clever”共3个近义词。从中随机选取一个近义词“intelligent”,将其确定为榜样词。
如果通过规则来从近义词集中选取榜样词,在一种实现方式中,可以计算近义词集中所有近义词与目标词之间的距离,然后取离目标词最远的一个作为榜样词。在另一种实现方式中,还可以在目标词的近义词集中确定一个子集,这个子集中的近义词都是距离目标词的反义词距离较远的词,从子集中随机选取一个作为榜样词。具体来说,从所述近义词集中确定一个榜样词的步骤,可以包括:
S510:从所述近义词集中确定子集,所述子集中的每一个近义词与所述目标词的反义词分别处于所述目标词的两侧;
S520:从所述子集中确定一个榜样词。
例如,请参考图6(a)和图7,其示出了常规训练方法所训练得到的词嵌入中,一个目标词与其近义词集、反义词集之间的关系。其中,目标词3的近义词在圈1的近义词集范围内。远距离近义词12距离目标词的距离较远,比该目标词3的反义词集(即圈4中所示的范围)中的部分反义词41距离该目标词3的距离更远。正是这样的远距离近义词导致了该目标词存在极性问题。图7中点划线以上半个圈1中的近义词位于目标词的一侧,距离目标词的反义词相对较远;而点划线以下半个圈1中的近义词位于目标词的另一侧,与目标词的反义词处于同一侧,距离反义词距离相对较近,可以将上半个圈1内的5个近义词确定为一个子集,然后从子集中随机选取一个作为榜样词。通过这样的方式,可以进一步使目标词和近义词有更有针对性地移动,从而能够有效地将远距离近义词与反义词区分开来,提高模型训练的效率。
S600:更新所述目标词和所述榜样词在词嵌入矩阵中所对应的参数,以缩短所述目标词与所述榜样词之间的距离。
这里,更新目标词和榜样词在词嵌入矩阵中所对应的参数,即更新该目标词在词嵌入矩阵中对应的向量的部分或全部元素的值,使目标词朝着榜样词的方向移动,从而缩短目标词与榜样词之间的距离;且更新该榜样词在词嵌入矩阵中对应的向量的部分或全部元素的值,使榜样词朝着目标词的方向移动,从而也缩短目标词与榜样词之间的距离。目标词与榜样词之间的距离,可以采用余弦距离来表示。
更新目标词在词嵌入矩阵中对应的参数,与更新榜样词在词嵌入矩阵中对应的参数的步骤,二者可以同时进行,也可以先后进行,本申请对其执行的先后顺序不做限定。无论执行顺序如何,榜样词在移动时所依据的监督榜样均是移动之前的目标词,而目标词移动时所依据的监督榜样也是移动之前的榜样词。
请参考图6,图6(a)示出了常规训练方法所训练得到的词嵌入中,一个目标词与其近义词集、反义词集之间的关系。其中,目标词3的近义词在圈1的近义词集范围内。远距离近义词12距离目标词的距离较远,比该目标词3的反义词集(即圈4中所示的范围)中的部分反义词41距离该目标词3的距离更远。在确定一个榜样词(例如近义词11)之后,将目标词3和榜样词11朝着彼此的方向移动,从而缩短目标词3与榜样词11的距离。图6(b)示出了目标词与榜样词共同移动之后一个目标词与其近义词集、反义词集之间的关系。由于目标词3朝着榜样词11移动,其与该远距离近义词12的距离缩短了,而与反义词41的距离变长了。移动后目标词3与远距离近义词12之间的距离小于目标词3与反义词41之间的距离,从而可以将二者区分开,即达到了区分目标词的近义词与反义词的效果,缓解了该目标词的极性问题。
S100至S600的步骤描述了利用一个训练样本进行训练的过程。而通常训练模型时需要将语料库中所有训练样本都迭代训练一个或数个轮次,才会完成训练。具体迭代轮次可以是由用户预设,例如可以为4次或5次等。一般情况下,目标词的近义词大概率地聚集在该目标词的一侧,而反义词大概率的聚集在该目标词的另一侧,因此,即便是从近义词集中随机确定榜样词,抽取到与引起极性问题的反义词(例如图6(a)中的41)处于目标词的两侧的近义词的概率也远远大于抽取到与引起极性问题的反义词(例如图6(a)中的41)处于目标词的同一侧的概率。针对一个目标词,随机选取其近义词集中的一个近义词作为榜样词有可能会出现反效果,即,移动之后目标词与反义词的距离缩短了,而与远距离近义词的距离拉长了。但是在迭代训练中涉及该目标词的样本会被训练多次,故而总体而言,目标词仍然会朝着近义词更密集的区域移动,而远离引起极性问题的反义词。也就是说,当训练迭代多轮的时候,就保证了目标词总体上朝着远离引起反义词41的方向移动。例如,分别将每一个近义词都作为榜样词,使目标词和榜样词朝着彼此的方向移动,移动之后的效果示意图如图7所示,从而较好地将目标词3的远距离近义词12和反义词41区分开。同时,从所有的目标词的角度来看,一个轮次的训练中,随机地从近义词集中选取榜样词,其中必然有一部分榜样词和目标词移动之后,可以将其远距离近义词与引起极性问题的反义词区分开来,这部分的目标词和榜样词在词嵌入矩阵中的向量表示已经经过调整。故而,从总体上来看,采用该方法训练得到的整个词嵌入矩阵应用到自然语言处理任务中时,仍然可以达到提升任务处理的准确率等效果。
在S400的步骤中,还可以将输入词中的一个或多个词,以及真实词中的一个或多个词都作为目标词。也就是说,对于利用一个训练样本的训练过程而言,目标词可以有多个。此时,可以分别获取每一个目标词所对应的近义词集,然后确定与之对应的榜样词,再分别调整各个目标词与对应的榜样词之间的距离,即重复执行S400至S600的步骤即可。
此外,需要说明的是,目标词可以是输入词,也可以是真实词。当目标词为输入词时,S300的步骤与S600的步骤都是更新输入词在词嵌入矩阵中所对应的参数,二者可以一起更新,也可以分别更新,本申请对此不做限定。当目标词为真实词时,S300的步骤更新的是输入词在词嵌入矩阵中所对应的参数,S600的步骤更新的是真实词在词嵌入矩阵中所对应的参数,二者彼此独立,本申请对其更新的顺序也不做限定。
在词嵌入模型的训练过程中,每一轮的每一次训练,都可能会更新词嵌入矩阵中的参数。当达到预设的训练迭代次数或者满足预设的停止条件,则训练完成,此时就得到了最终的词嵌入矩阵。
在上述技术方案中,在常规的词嵌入模型中引入一个远程监督榜样,让榜样词和目标词彼此成为对方的远程监督榜样,利用目标词和榜样词构造一个远程监督函数,将其与常规模型的目标函数合在一起,从而使二者做联合学习。即,一方面,利用词嵌入矩阵,将输入词向量化表示为第一向量,根据第一向量得到预测词,利用预测词以及输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数;另一方面,获取目标词的近义词集,这里的目标词包括输入词或真实词;然后从所述近义词集中确定一个榜样词,更新所述目标词和所述榜样词在词嵌入矩阵中所对应的参数,以缩短所述目标词与榜样词之间的距离。通过这样的方法不断训练,不断更新词嵌入矩阵中的参数,使每一个目标词都朝着该目标词的榜样词移动,让目标词对应的榜样词也朝着目标词移动,对目标词和榜样词做局部调整,从而缩短二者之间的距离。进而使得在最终训练得到的词嵌入矩阵中,一个词与其大部分近义词之间的距离小于该词与其反义词之间的距离。
上述训练方法中,除了利用语言单位的组合关系之外,还引入了语言单位之间的聚合关系,从而可以很好地将一个词的近义词与其反义词区分开来,以此减轻词嵌入的极性问题。同时,这样训练得到的词嵌入仅仅做了局部调整,而不会导致整个词向量空间紊乱。相比于采用常规的词嵌入模型所训练得到的词嵌入而言,将这样的词嵌入应用到文本语义匹配、文本分类等自然语言处理任务中,可以使匹配或分类的准确率更高,取得更加令人满意的效果,尤其适合用在文本匹配等相关的自然语言处理任务中。
如前所述,在本实施例中,词嵌入模型的目标函数可以是:
L(H)=L+α·J(wt,wi) (1)
在前述式(1)中,wt表示目标词,wi表示选自所述近义词集的榜样词。J(wt,wi)为第二目标函数,也就是利用榜样词所构建的远程监督函数,这里的榜样词选自目标词的近义词集的,表示榜样词wi与所述目标词wt之间的距离。α表示影响因子,其取值一般在0.05-0.2之间。具体可以为预设值,也可以通过其他方式来确定。
在式(1)中将第一目标函数L与α·J(wt,wi)相加,表示利用第一目标函数与第二目标函数联合训练。
更具体地,可以采用余弦距离来表示目标词与榜样词之间的距离,从而来构建第二目标函数,具体为:
其中,wt表示目标词,wi表示榜样词。
J(wt,wi)表示目标词wt与榜样词wi之间的距离。
在前述S600的步骤中,更新目标词在词嵌入矩阵中所对应的参数,可以分别更新词嵌入矩阵中该目标词的每一个维度的元素的值。在一种实现方式中,对于目标词wt的第j维而言,其更新后的值wtj (new)可以通过以下计算公式来计算得到:
wtj (new)=wtj+η·Gradient(wtj) (3)
其中,wtj (new)表示目标词wt的第j维在更新后的值;
η表示第二学习率;
Gradient(wtj)表示目标词wt的第j维的更新梯度;
表示目标词wt与榜样词wi之间的距离值,对目标词wt的第j维的偏导数;
wtj表示目标词wt的第j维在更新之前的值;
wij表示榜样词的第j维在更新之前的值。
在前述S600的步骤中,更新榜样词在词嵌入矩阵中所对应的参数,可以分别更新词嵌入矩阵中该榜样词的每一个维度的元素的值。在一种实现方式中,对于目标词wi的第j维而言,其更新后的值wij (new)可以通过以下计算公式来计算得到:
wij (new)=wij+η·Gradient(wij) (6)
其中,wij (new)表示榜样词wi的第j维在更新后的值;
η表示第二学习率;
Gradient(wij)表示榜样词wi的第j维的更新梯度;
表示目标词wt与榜样词wi之间的距离值,对榜样词wi的第j维的偏导数;
wij表示近义词wi的第j维在更新之前的值;
wtj表示目标词的第j维在更新之前的值。
这里,第二学习率η可以采用预设的数值,也可以随着训练的不断进行而不断变化。具体来说,其可以通过以下方式得到:
η=α·μ (9)
其中,α表示影响因子;
μ表示第一学习率;
μ0表示第一学习率预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
需要说明的是,在本实施例中,将语料库中包含的所有样本都训练一遍,视为完成了一个迭代轮次的训练。整个词嵌入矩阵的训练过程可以包括多个迭代轮次。通过上述公式(6)和(7)可以看出,随着训练的不断进行,iter原来越大,word_ca越来越大。在每一个迭代轮次中,逐渐增大至接近于1,第一学习率μ不断减小,第二学习率η也不断减小。随着训练的不断进行,词嵌入矩阵中的各个词所对应的向量越来越接近于最优解或局部最优解,此时,如果第二学习率很大,会导致更新参数的时候更新的步长过大,反而难以更新到更接近于最优解的位置。故而,通过上述方式,可以使得在训练过程中第二学习率不断减小,从而在训练前期以较大的步长来更新参数,在训练后期减小更新的步长,起到微调的作用,更有利于提升训练的稳定性及训练效率。
此外,可选地,在更新目标词在词嵌入矩阵中所对应的参数时,为了防止梯度爆炸,可以通过以下方式来限定更新梯度Gradient(wtj)的最大值。即,当更新梯度Gradient(wtj)的绝对值>max_Gradient时,取所述Gradient(wtj)=max_Gradient。
类似地,当在更新榜样词在词嵌入矩阵中所对应的参数时,为了防止梯度爆炸,可以通过以下方式来限定更新梯度Gradient(wij)的最大值。即,当更新梯度Gradient(wij)的绝对值>max_Gradient时,取所述Gradient(wij)=max_Gradient。
其中,max_Gradient为梯度最大值;
starting_m G表示梯度最大值的预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
通过式(11)可以看出,随着训练的不断进行,iter原来越大,word_ca越来越大。在每一个迭代轮次中,逐渐增大至接近于1,max_Gradient逐渐减小。一旦采用式(4)和/或(7)的方式计算出的更新梯度超过了梯度最大值,就取该梯度最大值为更新梯度,从而有效地控制更新的梯度,避免梯度爆炸,进而提升训练的稳定性。
需要说明的是,当词嵌入模型(BMTS模型)是基于负采样(Negative Sampling)的模型时,不但将“输入词-真实词”作为一个训练样本,还可以从训练语料中采集“输入词-非真实词”作为一个负样本来训练词嵌入模型。还是以训练语料中的一句文本“他是一个好学生”为例,输入词为“是”、“一个”、“学生”,与之对应的真实词为“好”,这是一个正向的训练样本。还可以采集输入词为“是”、“一个”、“学生”,与之对应的非真实词为“他”,这就是一个负样本。当前述的BMTS模型是基于负采样的BMTS模型时,前述的S400的步骤中的目标词除了可以包括输入词和/或真实词以外,还可以包括语料库中所有其他的词,即与输入词对应的非真实词。
还需要说明的是,在本申请的方法中,步骤的编号仅为了便于区分不同的步骤以及引用,并不隐含对步骤之间的先后顺序的限定。例如,前述的步骤S300可以在S600之前执行,也可以与S600同时执行;还例如,S400、S500的步骤可以与S100的步骤同时执行,也可以在其之前或之后执行,本申请对于其执行的先后顺序不做限定。
通过上述方法所训练得到的词嵌入可以被应用在很多涉及自然语言处理的应用场景中,例如智能问答、机器翻译、新闻文本分类、意图判断等。
以下以智能问答中的文本匹配任务为实例,对训练得到的词嵌入的应用效果进行进一步说明。在智能问答的场景中,聊天机器人可以与用户进行交互。首先获取用户的会话内容,然后将会话内容所形成的文本与预存的问答库中的问题文本进行文本匹配,如果匹配到某一个问题文本,就将与该问题文本对应答复信息反馈给用户。在一种实现方式中,进行文本匹配的过程中,首先将会话内容所形成的文本、问题文本分别向量化表示,然后计算二者的相似度;分别计算会话内容所形成的文本与问答库中的多个问题文本之间的相似度,将相似度最大的问题文本确定为与会话内容所形成的文本匹配的问题文本。在向量化表示文本时,针对不同的语言,实现的过程会稍有差异。例如,如果文本是中文文本,通常需要将其先分词,得到分词结果,然后获取分词结果中的每一个分词在词嵌入矩阵中所对应的向量,即获取每一个单词所对应的词嵌入,然后将这些向量加和,得到表示中文文本的向量。又例如,如果文本是英文文本,则可以直接获取每一个单词在词嵌入矩阵中所对应的向量,然后将这些向量加和,得到表示英文文本的向量。
在本实例中,以下的(1)、(2)、(3)为3个用户的会话内容所形成的文本,将其作为待匹配的文本。
(1)A person on a horse jumps over a broken down airplane.
(2)Children smiling and waving at camera.
(3)A boy is jumping on skateboard in the middle of a red bridge.
以文本(2)为例,利用前述的词嵌入矩阵,获取文本(2)中每一个单词所对应的向量,然后将这些向量加和,得到表示文本(2)的向量。然后分别计算其与问答库中的多个问题文本,例如“There are children present are happy.”以及“The children arecrying”等,之间的文本相似度,将相似度最大的一个问题文本确定为文本(2)的预测结果。文本(1)和(3)的预测过程与文本(2)类似。三个预测结果如表1所示。作为对照组,表1中还示出了利用常规方法训练得到的词嵌入来进行文本匹配的预测结果,其预测过程与前述过程类似。
表1
从表1的结果中可以看出,对于文本(1)和文本(3),利用本申请的方法所训练得到的词嵌入,以及常规方法训练得到的词嵌入,都可以匹配到准确的结果。而对于文本(2),由于常规方法训练得到的词嵌入中存在极性的缺陷,例如与“smiling”语义相近的“happy”与其的相似度较低,而与“smiling”语义相反的“crying”与其的相似度较高,这就导致匹配文本的时候从文本库中匹配到“The children are crying.”作为预测结果。而采用本申请的方法所训练得到的词嵌入,由于已经缓解了词嵌入的极性问题,故而可以准确地匹配到“There are childrenpresent are happy.”作为预测结果。由于二者所匹配到的问题文本不一样,聊天机器人所反馈的回复信息也会相应不同。因此,采用本申请的方法所训练得到的词嵌入矩阵,可以提高后续自然语言处理任务的准确率,获得更为理想的效果,例如使聊天机器人的回复信息的准确率更高。
以下以语义推理为实例,对训练得到的词嵌入的应用效果进行进一步说明。将通过上述方法所训练得到的词嵌入应用到语义推理任务中,以下为一个实例的部分试验结果。其中,(1)、(2)、(3)、(4)为语义推理的4份语料,具体如下所示。
(1)Athens-Greece;Paris-?
(2)amazing-amazingly;serious-?
(3)jumping-jumped;enhancing-?
(4)woman-women;pineapple-?
在(1)中,Athens-Greece为推理语料,即雅典对应希腊,需要推理出Paris,即巴黎所对应的词语。其他语料的含义与此类似。
最后得到的推理预测结果如表2所示。作为对照组,表2中还示出了利用常规方法训练得到的词嵌入来进行语义推理所得到的推理结果。
表2
从表2的结果中可以看出,对于语料(2)和(3),利用本申请的方法所训练得到的词嵌入,以及前述的利用近义词集和反义词集联合学习的方法所训练得到的词嵌入,都能够得到正确的推理结果。但是,由于对前述的利用近义词集和反义词集联合学习的方法所训练得到的词嵌入而言,整个词向量空间已经被破坏,对于语料(1)和(4),其均无法得到准确地推理结果。采用本申请的方法所训练得到的词嵌入,仅局部调整了部分词的向量表示,缓解了词嵌入的极性问题,但并没有破坏造成整个词向量空间的紊乱,故而可以准确地根据语料(1)和(4)得到相应的正确的推理结果。
以下以智能问答中的文本分类任务为实例,对训练得到的词嵌入的应用效果进行进一步说明。对于用于客服的聊天机器人来说,其在获取到用户的会话内容所形成的文本时,可以首先通过从会话内容所形成的文本中提取至少一个特征词,将该文本分类到预设的几个业务类型中,例如“运费相关”、“退货相关”、“服装尺寸咨询”等;然后再根据业务类型和会话内容所形成的文本中的其他信息,给出回复信息。这个过程中涉及到文本分类的处理任务。可见,如果文本分类出错,那么聊天机器人所给出的回复信息很大概率都不是用户期望得到的回复。
利用本申请的方法训练词嵌入模型(BMTS),得到词嵌入。将该词嵌入应用在文本分类器的训练中。采用公开数据集AG’s news作为文本分类器训练的语料库,训练集中包括120000个样本,测试集中包括7600个样本。共训练2种文本分类器,一种为基于CNN(卷积神经网络)的文本分类器,另一种为基于LR(逻辑回归)的文本分类器。然后用测试集来测试这两种文本分类器的预测准确率,其结果具体如表3所示。
表3
从表3可以看出,相比于常规CBOW和Skip的训练方法所训练得到的词嵌入,通过本申请的词嵌入模型训练方法所训练得到的词嵌入应用在文本分类中时,有效地提高了文本分类的分类准确率。
在本申请的第二个实施例中,请参考图8,提供一种词嵌入模型的训练装置,包括:
第一处理单元5,用于利用词嵌入矩阵,将训练样本的输入词向量化表示为第一向量;根据所述第一向量得到预测词;利用所述预测词,以及所述输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数;
第二处理单元6,用于获取目标词的近义词集,从所述近义词集中确定一个榜样词,以及,更新所述目标词和所述榜样词在词嵌入矩阵中所对应的参数,以缩短所述目标词与所述榜样词之间的距离;其中,所述目标词包括所述输入词或所述真实词。
可选地,所述第二处理单元6还用于从所述近义词集中确定子集,所述子集中的每一个近义词与所述目标词的反义词分别处于所述目标词的两侧;以及,从所述子集中确定一个榜样词。
可选地,所述词嵌入模型的目标函数为:
L(H)=L+α·J(wt,wi),
其中,L为第一目标函数,表示CBOW模型或Skip模型的目标函数;
wt表示目标词,wi表示选自所述近义词集的榜样词;
J(wt,wi)为第二目标函数,表示榜样词wi与所述目标词wt之间的距离;
α表示影响因子。
可选地,榜样词wi与目标词wt之间的距离为余弦距离,
可选地,所述第二处理单元6更新所述目标词在词嵌入矩阵中所对应的参数的步骤,包括:
wtj (new)=wtj+η·Gradient(wtj),
其中,wtj (new)表示目标词wt的第j维在更新后的值;
η表示第二学习率;
Gradient(wtj)表示目标词wt的第j维的更新梯度;
表示目标词wt与榜样词wi之间的距离值,对目标词wt的第j维的偏导数;
wtj表示目标词wt的第j维在更新之前的值;
wij表示榜样词的第j维在更新之前的值。
可选地,所述第二处理单元6更新所述榜样词在词嵌入矩阵中所对应的参数的步骤,包括:
wij (new)=wij+η·Gradient(wij),
其中,wij (new)表示榜样词wi的第j维在更新后的值;
η表示第二学习率;
Gradient(wij)表示榜样词wi的第j维的更新梯度;
表示目标词wt与榜样词wi之间的距离值,对榜样词wi的第j维的偏导数;
wij表示近义词wi的第j维在更新之前的值;
wtj表示目标词的第j维在更新之前的值。
可选地,第二学习率η通过以下方式得到:
η=α·μ,
其中,α表示影响因子;
μ表示第一学习率;
μ0表示第一学习率预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
可选地,当更新梯度Gradient(wtj)的绝对值>max_Gradient时,取所述Gradient(wtj)=max_Gradient;
可选地,当更新梯度Gradient(wij)的绝对值>max_Gradient时,取所述Gradient(wij)=max_Gradient;
这里,
其中,max_Gradient为梯度最大值;
starting_mG表示梯度最大值的预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
可选地,当所述词嵌入模型为CBOW模型时,所述训练样本的输入词为上下文词,所述预测词为中心词的预测值,所述真实词为中心词的真实值。
可选地,所述第一处理单元5还用于确定至少两个上下文词;利用词嵌入矩阵分别确定所述至少两个上下文词的向量表示;以及,将所述至少两个上下文词的向量表示累加,得到第一向量。
可选地,当所述词嵌入模型为Skip模型时,所述训练样本的输入词为中心词,所述预测词为上下文词的预测值,所述真实词为上下文词的真实值。
可选地,上述训练装置中,第一处理单元5和第二处理单元6的功能也可以由一个处理单元来实现。
上述的词嵌入模型的训练装置与第一个实施例中的词嵌入模型训练方法相对应,故而相应地具有前述训练方法所具有的有益效果,此处不再赘述。
本说明书中各个实施例之间相同相似的部分互相参见即可。以上所述的本发明实施方式并不构成对本发明保护范围的限定。