词嵌入模型的训练方法及装置
技术领域
本发明涉及自然语言处理技术领域,具体涉及一种词嵌入模型的训练方法及装置。
背景技术
在自然语言处理(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维等。
连续词袋模型(Continuous 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,wsyn),
其中,L为第一目标函数,表示CBOW模型或Skip-gram模型的目标函数;
wt表示目标词,wsyn表示目标词的近义词集;
J(wt,wsyn)为第二目标函数,表示所述至少一个近义词与所述目标词之间的距离;
α表示影响因子。
结合第一方面的第一种实现方式,在第一方面第二种可能的实现方式中,
其中,wt表示目标词,wi表示所述至少一个近义词中的一个近义词;
J(wt,wi)表示所述至少一个近义词中的一个近义词wi与目标词wt之间的距离。
结合第一方面的第二种实现方式,在第一方面第三种可能的实现方式中,更新所述近义词集中的至少一个近义词在词嵌入矩阵中对应的参数的步骤,包括:
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(wij)的绝对值>max_Gradient时,取所述Gradient(wij)=max_Gradient;
其中,max_Gradient为梯度最大值;
starting_mG表示梯度最大值的预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
结合第一方面及上述可能的实现方式,在第一方面第六种可能的实现方式中,当所述词嵌入模型为CBOW模型时,所述训练样本的输入词为上下文词,所述预测词为中心词的预测值,所述真实词为中心词的真实值。
结合第一方面的第六种实现方式,在第一方面第七种可能的实现方式中,所述利用词嵌入矩阵,将训练样本的输入词向量化表示为第一向量的步骤,包括:
确定至少两个上下文词;
利用词嵌入矩阵分别确定所述至少两个上下文词的向量表示;
将所述至少两个上下文词的向量表示累加,得到第一向量。
结合第一方面及上述可能的实现方式,在第一方面第八种可能的实现方式中,当所述词嵌入模型为Skip-gram模型时,所述训练样本的输入词为中心词,所述预测词为上下文词的预测值,所述真实词为上下文词的真实值。
第二方面,本申请提供一种词嵌入模型的训练装置,包括:
第一处理单元,用于利用词嵌入矩阵,将训练样本的输入词向量化表示为第一向量;根据所述第一向量得到预测词;利用所述预测词,以及所述输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数;
第二处理单元,用于获取目标词的近义词集,以及,更新所述近义词集中的至少一个近义词在词嵌入矩阵中对应的参数,以缩短所述至少一个近义词与所述目标词之间的距离;其中,所述目标词包括所述输入词或所述真实词,所述至少一个近义词中包括至少一个远距离近义词,所述远距离近义词与所述目标词之间的距离大于或等于所述目标词的至少一个反义词与所述目标词之间的距离。
在上述训练方法和装置中,利用目标词的至少一个近义词构造一个远程监督函数,将其与常规模型的目标函数合在一起,从而使二者做联合学习。即,一方面,利用词嵌入矩阵,将输入词向量化表示为第一向量,根据第一向量得到预测词,利用预测词以及输入词所对应的真实词,更新输入词在词嵌入矩阵中所对应的参数;另一方面,获取目标词的近义词集,这里的目标词包括输入词或真实词;然后更新近义词集中的至少一个近义词在词嵌入矩阵中对应的参数,以缩短所述至少一个近义词与目标词之间的距离,这里的至少一个近义词中包括至少一个远距离近义词。通过这样的方法不断训练,不断更新词嵌入矩阵中的参数,使每一个目标词的近义词集中的至少一个近义词都朝着该目标词移动,进而使得在最终训练得到的词嵌入矩阵中,一个词与其大部分近义词之间的距离小于该词与其反义词之间的距离。
在上述技术方案中,除了利用语言单位的组合关系之外,还引入了语言单位之间的聚合关系,从而可以很好地将一个词的近义词与其反义词区分开来,以此减轻词嵌入的极性问题。同时,这样训练得到的词嵌入仅仅做了局部调整,而不会导致整个词向量空间紊乱。相比于采用常规的词嵌入模型所训练得到的词嵌入而言,将这样的词嵌入应用到文本语义匹配、文本分类等自然语言处理任务中,可以使匹配或分类的准确率更高,取得更加令人满意的效果,尤其适合用在文本分类、语义推理等相关的自然语言处理任务中。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为CBOW模型的原理示意图;
图2为Skip-gram模型的原理示意图;
图3为CBOW模型的结构及工作原理示意图;
图4为本申请的词嵌入模型的训练方法的一个实施例的流程图;
图5为获取目标词的近义词集的一个实例示意图;
图6为采用本申请的训练方法将目标词的至少一个近义词移动之前和之后的效果示意图;
图7为本申请的词嵌入模型的训练装置的一个实施例的结构示意图。
附图标记说明:
目标词的近义词移动之前的范围1;近义词集中的远距离近义词12;近义词集中除远距离近义词之外其他的近义词11;目标词的至少一个近义词移动之后的范围2;目标词3;目标词的反义词集的范围4;反义词41;
第一处理单元5;第二处理单元6。
具体实施方式
像CBOW、Skip-gram这样的词嵌入模型,一般包括三层结构:输入层、投影层和输出层。以下以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-gram这样的词嵌入模型,其目标函数是似然对数函数。
CBOW的目标函数如下:
Sikp的目标函数如下:
其中,w表示中心词,Context(x)表示上下文词,C表示语料库中所有的词。
在语言学里面,语言单位之间的关系包括了组合关系和聚合关系。
组合关系是语言单位之间的横向关系。语言是一个线性结构,要表达一定意义的一个句子通常需要许多语言单位组合在一起。这些语言单位在组合过程中有一定的顺序和选择对象,并不是任意组合的,例如:肉-吃,雪-冷,医生-医院等。
聚合关系是语言单位之间的纵向关系。具有聚合关系的语言单位在一个句子中可能出现在同一个位置上,具有相同的功能,在符合语法要求的情况下可以相互替换。例如,“你是一个好学生”以及“你是一个坏学生”这两个句子中,“好”和“坏”这两个词可以相互替换,不会影响语法结构。与一个词具有聚合关系的词,可以包括其近义词、同类别词、反义词等。
现有的像CBOW、Skip-gram这样的词嵌入模型,是基于上下文概率最大化为优化目标的模型,在语言学里面就是利用句子中语言单位之间的组合关系来进行预测。而利用这样的模型训练后得到的词嵌入之所以存在极性问题,主要是由于模型本身是基于语言单位之间的组合关系而构建的,而词嵌入的极性问题其本质上属于语言单位之间的聚合关系,故而利用CBOW、Skip-gram等词嵌入模型难以准确地表示出语言单位之间的聚合关系。
为了能够有效区分近、反义词,一种实现方式是引入近义词集和反义词集,构造一个远程监督的函数去区分近、反义词,然后和原始词嵌入模型的优化目标函数一起做联合学习。但是在实现该方案的过程中,发明人发现,使近、反义词移动,缩短每一对近义词之间的距离,放大每一对反义词之间的距离,虽然可以较好地区分近、反义词,但会破坏整个词向量空间。具体来说,在整个词向量空间中,词之间是很密集的,每一维的值差距特别小。例如,将50万个词都压缩在200维的浮动数字上,每一维的数字都小于1,并且每一维的数字的差基本都只有零点零几。CBOW、Skip-gram等模型训练得到的词嵌入,其相对位置都是较为合理的,只是存在有些近、反义词区分不了的问题。而如果将近、反义词大面积移动,就会造成整个词向量空间的紊乱。例如,“提升”这个词,其移动到了靠近“苹果”的位置,虽然其与“降低”的距离更远了,可以很好地被区分开,但是这使得动词都移动到了名词的位置,从而造成了词向量空间的紊乱。这样得到的词嵌入用在后续的自然语言处理任务(例如分类、匹配、语义相关推理等)中,处理的效果较差。
故而,本申请提供一种新的词嵌入模型(在本申请中将其称之为UnidirectionalMovement of Synonym Model Only,即UMSO模型)训练方法,在现有的词嵌入模型的基础上进行了改进,引入一个远程监督榜样,使二者做联合训练。以使目标词的近义词集中的至少一个近义词能够朝着目标词移动,从而对目标词的至少一个近义词做局部调整,以便可以将目标词的近义词和反义词区分开来,同时不会导致整个词向量空间紊乱。
具体来说,以下将详细描述利用一个训练样本来训练该词嵌入模型的过程,请参考图4,包括以下S100至S500的步骤。
S100:利用词嵌入矩阵,将训练样本的输入词向量化表示为第一向量。
这里的词嵌入矩阵,包括语料库中所有训练语料中的词的向量表示。例如,语料库中所有训练语料中一共包含了1000个不同的词,预设每个词都采用200维的向量来表示,则词嵌入矩阵为一个1000×200的矩阵,其中每一行对应表示一个语料库中的词。这里,词嵌入矩阵中的每一个元素的初始值可以为随机值,也可以为预设值,随着训练的进行,词嵌入矩阵中的元素的值会被不断更新。
训练样本来自训练语料,包括了输入词和与之对应的真实词。在一种实现方式中,可以将该真实词以标签的形式标注在对应的输入词上。以训练语料中的一句文本“他是一个好学生”为例,这句话中包含了多个训练样本。用于训练CBOW模型,每个训练样本包括了上下文词以及中心词的真实值,这里的上下文词就是输入词,中心词的真实值就是真实词。从训练语料中获取训练样本的过程中,可以设置取词的窗口大小。例如,当窗口大小为2时,输入词是“他”、“是”、“好”、“学生”,与之对应的真实词为“一个”。又例如,输入词是“是”、“一个”、“学生”,与之对应的真实词为“好”。用于训练Skip-gram模型,每个训练样本包括了中心词以及上下文词的真实值,这里的中心词就是输入词,上下文词的真实值就是真实词。例如,输入词是“一个”,与之对应的真实词为“他”、“是”、“好”、“学生”。又例如,输入词是“好”,与之对应的真实词为“是”、“一个”、“学生”。
将输入词向量化表示的方法,在一种实现方式中,当本申请中的词嵌入模型(即UMSO模型)基于CBOW模型时,也就是说UMSO模型是在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个。此时,从词嵌入矩阵中查找到该上下文词的向量表示,直接将该向量表示作为第一向量,用于后续步骤中进行预测。
在另一种实现方式中,当词嵌入模型(即UMSO模型)基于Skip-gram模型时,也就是说UMSO模型是在Skip-gram模型的基础上改进而成的模型,此时,所述输入词为中心词。一般来说,中心词只取一个,因此,从当前的词嵌入矩阵中查找到该中心词对应的向量表示,该向量表示就是第一向量。
S200:根据所述第一向量得到预测词。
对于常规的词嵌入模型,例如CBOW、Skip-gram这样的词嵌入模型而言,将一个向量作为词嵌入模型的输入值,经过模型预测就会得到预测词。这里,根据第一向量得到预测词的过程,可以与现有的CBOW、Skip-gram等模型的预测过程一致,此处不再赘述。
S300:利用所述预测词,以及所述输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数。
在训练的过程中,利用输入词预测得到的预测词往往与真实词存在一定的误差,可以根据二者的误差来更新词嵌入矩阵中与当前输入词对应的参数。例如,如果输入词中包括了“学生”这个词,就会更新词嵌入矩阵中“学生”一词所对应的向量中的部分或全部元素的值。这里,更新词嵌入矩阵的具体方法可以采用现有的方法,例如梯度下降法等,此处不再赘述。
此外,在更新词嵌入矩阵的同时,还会根据预测词和真实词来更新词嵌入模型中各层之间的权值等参数。
当所述词嵌入模型(UMSO模型)是基于CBOW模型这样的利用上下文词来预测中心词的模型时,所述输入词为上下文词,所述预测词为中心词的预测值,所述真实词为中心词的真实值。当所述词嵌入模型(UMSO模型)是基于Skip-gram模型这样的利用中心词来预测上下文词的模型时,所述输入词为中心词,所述预测词为上下文词的预测值,所述真实词为上下文词的真实值。
在本实施例中,词嵌入模型(UMSO模型)的目标函数可以是:
L(H)=L+α·J(wt,wsyn)(1)
其中,L为第一目标函数,表示CBOW模型或Skip-gram模型的目标函数。
前述步骤S300中更新所述输入词在词嵌入矩阵中所对应的参数的过程,主要就是依据该第一目标函数。
L+α·J(wt,wsyn)是用于调整近义词集中的至少一个近义词与目标词之间的距离的目标函数,其含义将在后续的S500的步骤中进行详细的说明。
S400:获取目标词的近义词集,所述目标词包括所述输入词或所述真实词。
目标词可以是输入词和真实词中的任一个。针对目标词,可以在预设的近义词库中查找,确定该目标词的至少一个近义词,然后获取至少一个近义词所组成的近义词集。例如,请参考图5,其中,输入词包括“build”、“your”、“home”、“now”共4个词,真实词为“smart”。将真实词“smart”作为目标词,可以获取到该目标词的近义词集,其中包括了3个近义词,分别为“wise”、“intelligent”和“clever”。
这里需要说明的是,此步骤中获取的近义词集中的每一个近义词,必然包含在语料库的所有词中,如果一个目标词在预设的近义词库中存在4个近义词,而其中一个是不在语料库的所有词中的,那么这个词就没必要作为该目标词的近义词而引入到训练当中来。例如前述的例子中,预设的近义词库中“smart”的近义词还包括“bright”,但训练该词嵌入模型所采用的语料库的所有词中并不包含“bright”一词,则获取的近义词集中就不包含“bright”。
另外需要说明的是,尽管该例子中以英语单词为例来说明,但是,本申请的训练方法可以适用于中文、英文、日文等多种语言,并仅限于本申请例子中的几种语言。
S500:更新所述近义词集中的至少一个近义词在词嵌入矩阵中对应的参数,以缩短所述至少一个近义词与所述目标词之间的距离。
这里,近义词集中的至少一个近义词,可以是f个,f取≥1且≤n的正整数,n为近义词集中所有近义词的总数量。也就是说,可以更新近义词集中的一个近义词在词嵌入矩阵中所对应的参数,也可以更新近义词集中的多个或全部近义词在词嵌入矩阵中所对应的参数。例如图5所示的例子,近义词集中包括了“wise”、“intelligent”和“clever”3个词。而在此步骤中更新参数所涉及的可以是近义词集中的一部分词,即仅更新“wise”、“intelligent”两个词在词嵌入矩阵中对应的向量表示。
为了便于引用说明,此处可以将这f个近义词组成的集合称之为移动集合。移动集合中的近义词可以通过随机方式从近义词集中选取,也可以根据预设的规则来选取,本申请对此不做限定。
如果通过预设的规则来从近义词集中选取至少一个近义词,在一种实现方式中,则可以计算近义词集中所有近义词与目标词之间的距离,然后取离目标词最远的一个或多个,即将这一个或多个近义词作为移动集合中的元素。
通过更新目标词的这f个近义词在词嵌入矩阵中所对应的参数,即这f个近义词在词嵌入矩阵中对应的向量的部分或全部元素的值,从而缩短这f个近义词与目标词之间的距离。近义词与目标词之间的距离,可以采用余弦距离来表示。
在本实施例中,远距离近义词属于目标词的近义词集,它与目标词之间的距离≥目标词的至少一个反义词与该目标词之间的距离。正是这样的远距离近义词导致了该目标词存在极性问题。移动集合中不要求必须包括目标词的所有远距离近义词,只要包括一个或一个以上的远距离近义词,就可以局部调整该远距离近义词与目标词之间的距离,从而达到将该远距离近义词与反义词区分开的效果。这样训练得到的词嵌入在应用到后续的自然语言处理任务中时就可以一定程度上提高处理效果。此外,移动集合中还可以包括其他原本就能够与目标词的反义词区分开的近义词。这些近义词即便不移动,也能够与该目标词的反义词区分开,而将这些近义词朝着该目标词移动之后,也仍然可以与反义词区分开。
请参考图6,图6(a)示出了常规训练方法所训练得到的词嵌入中,一个目标词与其近义词集、反义词集之间的关系;图6(b)示出了采用申请的训练方法所训练得到的词嵌入中,一个目标词与其近义词集、反义词集之间的关系,即采用本申请的训练方法经过一次或多次移动之后,一个目标词与其近义词集、反义词集之间的关系示意图。在图6(a)中,目标词3的近义词在圈1的近义词集范围内。其中,远距离近义词12距离目标词的距离较远,比该目标词3的反义词集(即圈4中所示的范围)中的部分反义词41距离该目标词3的距离更远。为了区分该目标词3的近义词和反义词,一种实现方式是将至少一个近义词(f个)朝着目标词3的方向移动,缩短这f个近义词与目标词3之间的距离,这f个近义词中就包括了至少一个远距离近义词12。当然,移动的f个近义词中也可以包括其他原本就能够与该目标词3的反义词区分开的近义词11,如图6(b)所示。移动后的目标词的近义词在圈2所示的近义词集范围之内。通过图6所示的例子可以发现,采用本实施例的训练方法所训练得到的词嵌入,已经局部调整了一个词的近义词的向量表示,从而使其近义词能够与其反义词区分开来,以便能够更好地应用在后续的自然语言处理任务中。
在S400的步骤中,还可以将输入词中的一个或多个词,以及真实词中的一个或多个词都作为目标词。也就是说,对于利用一个训练样本的训练过程而言,目标词可以有多个。此时,可以分别获取每一个目标词所对应的近义词集,然后分别调整各个目标词的至少一个近义词与对应的目标词之间的距离,即重复执行S400和S500的步骤即可。
需要说明的是,S100至S500的步骤仅仅是描述了利用一个训练样本进行训练的过程,对于单独一个训练样本的训练过程而言,移动集合,也就是f个需要移动的近义词中包含至少一个远距离近义词,这样才能够提升目标词的近义词、反义词的区分率。而通常训练模型时需要将语料库中所有训练样本都迭代训练一个或数个轮次,才会完成训练。具体迭代轮次可以是由用户预设,例如可以为4次或5次等。针对一个目标词,某一次随机选取需要移动的近义词,有可能移动集合中并不包含远距离近义词,但是经过多个轮次的迭代训练,每次都随机选取一个或多个需要移动的近义词,就会大大提高选取到远距离近义词的概率。同时,从所有的目标词的角度来看,随机地从近义词集中选取移动集合来移动,其中必然有一部分目标词的至少一个远距离近义词朝着相应的目标词移动了,这部分的远距离近义词在词嵌入矩阵中的向量表示就会被更新。故而,从总体上来看,采用该方法训练得到的整个词嵌入矩阵应用到自然语言处理任务中时,仍然可以达到提升任务处理的准确率等效果。
因此,在词嵌入模型训练的整个过程中,并不要求每一个训练样本的训练过程中移动集合都必须包括至少一个远距离近义词,其中部分训练样本在训练过程中,其移动集合也可以不包括远距离近义词。即,在词嵌入模型训练的整个过程中,只要部分训练样本的训练过程包含前述S100至S500的步骤,就落入本专利到保护范围之内。
在词嵌入模型的训练过程中,通常需要将语料库中包含的所有训练样本都训练一遍,视为训练了一个迭代轮次,一般需要迭代训练一个或多个轮次。每一轮的每一次训练,都可能会更新词嵌入矩阵中的参数。当达到预设的训练迭代次数即训练完成,此时就得到了最终的词嵌入矩阵。
在上述技术方案中,在常规的词嵌入模型中引入一个远程监督榜样,让目标词成为近义词的远程监督榜样,利用目标词的至少一个近义词构造一个远程监督函数,将其与常规模型的目标函数合在一起,从而使二者做联合学习。即,一方面,利用词嵌入矩阵,将输入词向量化表示为第一向量,根据第一向量得到预测词,利用预测词以及输入词所对应的真实词,更新输入词在词嵌入矩阵中所对应的参数;另一方面,获取目标词的近义词集,这里的目标词包括输入词或真实词;然后更新近义词集中的至少一个近义词在词嵌入矩阵中对应的参数,以缩短所述至少一个近义词与目标词之间的距离,这里的至少一个近义词中包括至少一个远距离近义词。通过这样的方法不断训练,不断更新词嵌入矩阵中的参数,使每一个目标词的近义词集中的至少一个近义词都朝着该目标词移动,进而使得在最终训练得到的词嵌入矩阵中,一个词与其大部分近义词之间的距离小于该词与其反义词之间的距离。
上述训练方法中,除了利用语言单位的组合关系之外,还引入了语言单位之间的聚合关系,从而可以很好地将一个词的近义词与其反义词区分开来,以此减轻词嵌入的极性问题。同时,这样训练得到的词嵌入仅仅做了局部调整,而不会导致整个词向量空间紊乱。相比于采用常规的词嵌入模型所训练得到的词嵌入而言,将这样的词嵌入应用到文本语义匹配、文本分类等自然语言处理任务中,可以使匹配或分类的准确率更高,取得更加令人满意的效果,尤其适合用在文本分类、语义推理等相关的自然语言处理任务中。
此外,相比于将目标词的近义词集中所所有的近义词都朝目标词聚拢,以缩短每一个近义词与目标词的距离的方法而言,本实施例中的方法的计算量更小。
如前所述,在本实施例中,词嵌入模型的目标函数可以是:
L(H)=L+α·J(wt,wsyn) (1)
在前述式(1)中,wt表示目标词,wsyn表示目标词的近义词集。J(wt,wsyn)为第二目标函数,也就是利用目标词的近义词集中的至少一个近义词所构建的远程监督函数,表示所述至少一个近义词与所述目标词之间的距离。α表示影响因子,其取值一般在0.05-0.2之间。具体可以为预设值,也可以通过其他方式来确定。
在式(1)中将第一目标函数L与α·J(wt,wsyn)相加,表示利用第一目标函数与第二目标函数联合训练。
更具体地,可以采用余弦距离来表示目标词与其近义词之间的距离,从而来构建第二目标函数,具体为:
其中,wt表示目标词,wi表示所述至少一个近义词中的一个近义词,也就是移动集合中的其中一个词。
J(wt,wi)表示所述至少一个近义词中的一个近义词wi与目标词wt之间的距离。
更具体地,前述S500的步骤中,更新目标词的某一个近义词在词嵌入矩阵中所对应的参数,可以分别更新词嵌入矩阵中该近义词的每一个维度的元素的值。在一种实现方式中,对于移动集合中的一个近义词wi的第j维而言,其更新后的值wij (new)可以通过以下计算公式来计算得到:
wij (new)=wij+η·Gradient(wij) (3)
其中,wij (new)表示近义词wi的第j维在更新后的值;
η表示第二学习率;
Gradient(wij)表示近义词wi的第j维的更新梯度;
表示目标词wt与近义词wi之间的距离值,对wi的第j维的偏导数;
wij表示近义词wi的第j维在更新之前的值;
wtj表示目标词的第j维的值。
这里,第二学习率η可以采用预设的数值,也可以随着训练的不断进行而不断变化。具体来说,其可以通过以下方式得到:
η=α·μ (6)
其中,α表示影响因子;
μ表示第一学习率;
μ0表示第一学习率预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
需要说明的是,在本实施例中,将语料库中包含的所有样本都训练一遍,视为完成了一个迭代轮次的训练。整个词嵌入矩阵的训练过程可以包括多个迭代轮次。通过上述公式(6)和(7)可以看出,随着训练的不断进行,iter原来越大,word_ca越来越大。在每一个迭代轮次中,逐渐增大至接近于1,第一学习率μ不断减小,第二学习率η也不断减小。随着训练的不断进行,词嵌入矩阵中的各个词所对应的向量越来越接近于最优解或局部最优解,此时,如果第二学习率很大,会导致更新参数的时候更新的步长过大,反而难以更新到更接近于最优解的位置。故而,通过上述方式,可以使得在训练过程中第二学习率不断减小,从而在训练前期以较大的步长来更新参数,在训练后期减小更新的步长,起到微调的作用,更有利于提升训练的稳定性及训练效率。
此外,可选地,在更新移动集合中的近义词在词嵌入矩阵中的参数时,为了防止梯度爆炸,可以通过以下方式来限定更新梯度Gradient(wij)的最大值。即,当更新梯度Gradient(wij)的绝对值>max_Gradient时,取所述Gradient(wij)=max_Gradient;
其中,max_Gradient为梯度最大值;
starting_m G表示梯度最大值的预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
通过式(8)可以看出,随着训练的不断进行,iter原来越大,word_ca越来越大。在每一个迭代轮次中,逐渐增大至接近于1,max_Gradient逐渐减小。一旦采用式(4)的方式计算出的更新梯度超过了梯度最大值,就取该梯度最大值为更新梯度,从而有效地控制更新的梯度,避免梯度爆炸,进而提升训练的稳定性。
需要说明的是,当词嵌入模型(UMSO模型)是基于负采样(Negative Sampling)的模型时,不但将“输入词-真实词”作为一个训练样本,还可以从训练语料中采集“输入词-非真实词”作为一个负样本来训练词嵌入模型。还是以训练语料中的一句文本“他是一个好学生”为例,输入词为“是”、“一个”、“学生”,与之对应的真实词为“好”,这是一个正向的训练样本。还可以采集输入词为“是”、“一个”、“学生”,与之对应的非真实词为“他”,这就是一个负样本。前述的UMSO模型是基于负采样的UMSO模型,在这种情况下,前述的S400的步骤中的目标词除了可以包括输入词和/或真实词以外,还可以包括语料库中所有其他的词,即与输入词对应的非真实词。
还需要说明的是,在本申请的方法中,步骤的编号仅为了便于区分不同的步骤以及引用,并不隐含对步骤之间的先后顺序的限定。例如,前述的步骤S300可以在S500之前执行,也可以与S500同时执行;还例如,S400的步骤可以与S100的步骤同时执行,也可以在其之前或之后执行,本申请对于其执行的先后顺序不做限定。
通过上述方法所训练得到的词嵌入可以被应用在很多涉及自然语言处理的应用场景中,例如智能问答、机器翻译、新闻文本分类、意图判断等。
以下以新闻文本分类为实例,对训练得到的词嵌入的应用效果进行进一步说明。将通过上述方法所训练得到的词嵌入应用到新闻文本分类的任务中,以下为一个实例的部分试验结果。其中,(1)、(2)、(3)、(4)为4个待分类的文本,具体如下所示。
(1)"Wall St.Bears Claw Back Into the Black(Reuters)","Reuters-Short-sellers,Wall Street's dwindling\band ofultra-cynics,are seeing green again."
(2)"Carlyle Looks Toward Commercial Aerospace(Reuters)","Reuters-Private investment firm Carlyle Group,which has a reputation for making well-timed and occasionally controversialplays in the defense industry,has quietlyplaced its bets on anotherpart ofthe market."
(3)"Navy to go on PR'offensive'to repair battered image ofsubmarineprogram(Canadian Press)","Canadian Press-HALIFAX(CP)-They have become thedefining images of Canada's fault-filled submarine program."
(4)"NBA Wrap:Wade,O'Neal Carry Heat to 7th Straight Win","NEW YORK(Reuters)-Dwyane Wade scored 25points to inspire the Miami Heat to theirseventh straight win,a 107-100victory over the Denver Nuggets Friday."
已划分出的文本类簇有一类(军事新闻)、二类(体育新闻)和三类(金融新闻)共3个类簇。
分别利用前述的词嵌入来计算待分类文本与已划分出的类簇的簇心或其中一个文本的相似度,根据相似度来确定是否将待分类文本划分到类簇中。在本实例中,首先将待分类文本、已划分出的一个类簇的簇心分别向量化表示;然后计算二者的余弦距离,以此表示二者的相似度。在向量化表示文本时,针对不同的语言,实现的过程会稍有差异。例如,如果文本是中文文本,通常需要将其先分词,得到分词结果,然后获取分词结果中的每一个分词在词嵌入矩阵中所对应的向量,即获取每一个单词所对应的词嵌入,然后将这些向量加和,得到表示中文文本的向量。又例如,如果文本是英文文本,则可以直接获取每一个单词在词嵌入矩阵中所对应的向量,然后将这些向量加和,得到表示英文文本的向量。最后,将待分类文本划分到与其相似度最大的簇心所在的类簇中。
通过上述方法对(1)至(4)分类的结果如表1所示。作为对照组,表1中还示出了利用常规方法训练得到的词嵌入来进行文本分类的结果。
表1
待分类文本编号 |
(1) |
(2) |
(3) |
(4) |
利用本申请方法训练的词嵌入的分类结果 |
三类 |
三类 |
一类 |
二类 |
真实结果 |
三类 |
三类 |
一类 |
二类 |
利用常规方法训练的词嵌入的分类结果 |
三类 |
一类 |
一类 |
二类 |
从表1的结果中可以看出,对于文本(1)、文本(3)和文本(4),利用本申请的方法所训练得到的词嵌入,以及常规方法训练得到的词嵌入,都可以分类到正确的类别中。而对于文本(2),利用常规方法训练得到的词嵌入来计算,就容易将其分类到一类,即军事新闻,而实际上文本(2)是一篇关于金融的新闻,这就导致文本分类出错。而采用本申请的方法所训练得到的词嵌入,由于已经局部调整了部分词的向量表示,缓解了词嵌入的极性问题,故而可以准确地将文本(2)分类到一类中。因此,采用本申请的方法所训练得到的词嵌入,可以提高后续自然语言处理任务的准确率,获得更为理想的效果。
将通过上述方法所训练得到的词嵌入应用到语义推理任务中,以下为一个实例的部分试验结果。其中,(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的结果中可以看出,对于语料(3),利用本申请的方法所训练得到的词嵌入,以及前述的利用近义词集和反义词集联合学习的方法所训练得到的词嵌入,都能够得到正确的推理结果。但是,由于对前述的利用近义词集和反义词集联合学习的方法所训练得到的词嵌入而言,整个词向量空间已经被破坏,故而对于语料(1)、(2)和(4),其均无法得到准确地推理结果。采用本申请的方法所训练得到的词嵌入,仅局部调整了部分词的向量表示,缓解了词嵌入的极性问题,但并没有破坏造成整个词向量空间的紊乱,故而可以准确地根据语料(1)、(2)和(4)得到相应的正确的推理结果。
以下以智能问答中的文本分类任务为实例,对训练得到的词嵌入的应用效果进行进一步说明。对于用于客服的聊天机器人来说,其在获取到用户的会话内容所形成的文本时,可以首先通过从会话内容所形成的文本中提取至少一个特征词,将该文本分类到预设的几个业务类型中,例如“运费相关”、“退货相关”、“服装尺寸咨询”等;然后再根据业务类型和会话内容所形成的文本中的其他信息,给出回复信息。这个过程中涉及到文本分类的处理任务。可见,如果文本分类出错,那么聊天机器人所给出的回复信息很大概率都不是用户期望得到的回复。
利用本申请的方法训练词嵌入模型(UMSO),得到词嵌入。将该词嵌入应用在文本分类器的训练中。采用公开数据集AG’s news作为文本分类器训练的语料库,训练集中包括120000个样本,测试集中包括7600个样本。共训练2种文本分类器,一种为基于CNN(卷积神经网络)的文本分类器,另一种为基于LR(逻辑回归)的文本分类器。然后用测试集来测试这两种文本分类器的预测准确率,其结果具体如表3所示。
表3
从表3可以看出,相比于常规CBOW和Skip-gram的训练方法所训练得到的词嵌入,通过本申请的词嵌入模型训练方法所训练得到的词嵌入应用在文本分类中时,有效地提高了文本分类的分类准确率。
在本申请的第二个实施例中,提供一种词嵌入模型的训练装置,包括:
第一处理单元5,用于利用词嵌入矩阵,将训练样本的输入词向量化表示为第一向量;根据所述第一向量得到预测词;利用所述预测词,以及所述输入词所对应的真实词,更新所述输入词在词嵌入矩阵中所对应的参数;
第二处理单元6,用于获取目标词的近义词集,以及,更新所述近义词集中的至少一个近义词在词嵌入矩阵中对应的参数,以缩短所述至少一个近义词与所述目标词之间的距离;其中,所述目标词包括所述输入词或所述真实词,所述至少一个近义词中包括至少一个远距离近义词,所述远距离近义词与所述目标词之间的距离大于或等于所述目标词的至少一个反义词与所述目标词之间的距离。
可选地,所述词嵌入模型的目标函数为:
L(H)=L+α·J(wt,wsyn),
其中,L为第一目标函数,表示CBOW模型或Skip-gram模型的目标函数;
wt表示目标词,wsyn表示目标词的近义词集;
J(wt,wsyn)为第二目标函数,表示所述至少一个近义词与所述目标词之间的距离;
α表示影响因子。
可选地,
其中,wt表示目标词,wi表示所述至少一个近义词中的一个近义词;
J(wt,wi)表示所述至少一个近义词中的一个近义词wi与目标词wt之间的距离。
可选地,所述第二处理单元更新所述近义词集中的至少一个近义词在词嵌入矩阵中对应的参数的步骤,包括:
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(wij)的绝对值>max_Gradient时,取所述Gradient(wij)=max_Gradient;
其中,max_Gradient为梯度最大值;
starting_mG表示梯度最大值的预设初始值;
train_words表示训练语料的总词数;
word_ca表示当前已经训练过的输入词的数量;
iter表示当前训练的迭代轮次。
可选地,当所述词嵌入模型为CBOW模型时,所述训练样本的输入词为上下文词,所述预测词为中心词的预测值,所述真实词为中心词的真实值。
可选地,所述第一处理单元5还用于确定至少两个上下文词;利用词嵌入矩阵分别确定所述至少两个上下文词的向量表示;以及,将所述至少两个上下文词的向量表示累加,得到第一向量。
可选地,当所述词嵌入模型为Skip-gram模型时,所述训练样本的输入词为中心词,所述预测词为上下文词的预测值,所述真实词为上下文词的真实值。
可选地,上述训练装置中,第一处理单元5和第二处理单元6的功能也可以由一个处理单元来实现。
上述的词嵌入模型的训练装置与第一个实施例中的词嵌入模型训练方法相对应,故而相应地具有前述训练方法所具有的有益效果,此处不再赘述。
本说明书中各个实施例之间相同相似的部分互相参见即可。以上所述的本发明实施方式并不构成对本发明保护范围的限定。