时间:2024-05-04
陈珍锐, 丁治明
(北京工业大学 信息学部, 北京 100124)
词向量表示技术是将自然语言中的每一个词语转换为稠密向量形式. 这种表示方法能够充分的发挥计算机的计算能力, 并且在现有的自然语言处理任务中具有广泛的应用, 例如通过计算向量之间的距离表示词语的相似程度可以应用在信息检索[1]、文档分类[2]和问答系统[3]等任务.
近几年来, 有许多关于词向量表示技术的相关研究. Mikolov[4]提出了Word2Vec模型通过引入负采样和哈夫曼编码, 使得训练速度比传统的神经网络模型[5]得到了大幅的提升, 也使得Word2Vec模型得到了广泛的应用. Pennington[6]提出了GloVe模型, 该模型通过利用共现矩阵分解的方式得到词向量. Vilnis等人[7]提出了一种概率模型训练词向量的方法, 他们将每一个词映射为一个多维高斯分布然后训练该高斯分布的均值和方差, 其中均值就是对应词语的词向量. 由于Word2Vec、GloVe等模型并不能有效表示自然语言中广泛存在的多义词, 为了解决这个问题, 提升词向量的表示, Huang[8]引入了多原型词向量训练模型, 通过对上下文词向量聚类给出目标词的准确语义, 然后利用全局得分和局部得分定义损失函数训练多原型词向量. Facebook智能研究室提出了fastText文本分类器模型[9-11], 该模型可以在保证分类质量的同时, 大大缩短文本分类的训练时间. FastText模型也能够用来训练词向量, 通过借鉴Skip-gram构建哈夫曼编码树思路加速模型的计算.但是fastText通过加入n-gram特征保留了词语的语序信息提高分类的准确率, 同时也使得其训练的词向量能够对生成的低频词词向量有较好的表示效果, 并且对于词典以外的单词, 可以通过叠加它们字符级别的n-gram向量获得该词典外单词的词向量.
本文提出一种改进的GloVe模型训练词向量的方法. GloVe模型是一种基于共现矩阵分解生成词向量的基本模型, 同Word2Vec、wordrank[12]等模型一样可以根据语料库的统计信息训练词向量并捕捉词语间的语法和语义信息. 本文通过分析GloVe模型共现矩阵的特点, 利用分布式假说[13,14]过滤不能够代表目标词语义的无关词和噪声词, 减少共现矩阵中非零元素数目,进而提高模型的训练速度. 最后,利用Mikolov[15]提出的词汇类比方法和人为标注的词汇相似性数据集对词向量的训练效果给出评价.
GloVe模型是一种对 “词-词”共现矩阵X分解而得到的词向量表示方法. 共现矩阵X中的第i行第j列的值Xij为目标词Vi与上下文词Vj在语料库中的共同出现次数. GloVe模型由于只在全局的非零矩阵元素Xij上进行训练, 其训练速度比Word2Vec更加高效. 该模型使用最小二乘法作为损失函数, 同时对共现矩阵X中的行和列加入了偏移项. 其损失函数为:
其中, |V|为词典的大小,wi为目标词的词向量,wj为上下文词的词向量,bi,bj为共现矩阵X行和列的偏移值,f(x)是一个加权函数, 用于对从语料库中统计的低频词对进行衰减, 减少低频噪声带来的误差, 其定义为:
同时GloVe模型作者Pennington给出了xmax,α的经验值分别为100, 3/4.
我们知道, GloVe模型的共现矩阵中的值Xij是通过滑动窗口对语料库中所有存在窗口内的目标词与上下文词的词频统计信息. 根据分布式假说[13,14]如果两个词语具有相似的上下文那么它们的语义相近. 为了能够清晰的表达这种相似, 我们从维基百科中抽取出以下三个句子:
(1) Several species of pear are valued for their edible fruit and juices.
(2) The peach is seen as the fruit of happiness,riches, honours and longevity.
(3) One type of commonly known gas is steam.
对于上面句子划线的三个词 pear, peach 和 gas, 由我们的经验可知词对(pear, peach)关系要大于词对(pear, gas)或 (peach, gas)之间的关系, 因为前者共同属于水果类别, 而后者并没有特别明显的相关性. 同时,词对(pear, peach)相关性我们可以从句子(1), (2)中看出,它们拥有共同上下文词语fruit、of等, 如果当语料库足够大时在pear和peach的上下文中会有更多的词语代表它们的共同含义例如tree、leaf、delicious等,但是gas的上下文中几乎不可能出现tree, delicious等上下文词语,这说明词语 fruit, tree, delicious能够代表pear和peach的语义信息而不能表示gas的语义信息.但是在上面的句子中也存在大量的既不能代表pear和peach的语义, 也不能代表gas语义的词语例如of,and, is等无关词或噪声词, 并且在对语料库做统计的过程中会存在大量的无关词或者噪声词, 它们的存在使得模型训练需要较长的时间, 同时由于引入噪声对词向量的训练质量造成一定的影响, 所以这些词语是没有必要参与公式(1)的运算.
表1 pear, peach和gas与他们上下文词共现概率及关系
从表1可以看出pear和peach的上下文为k时,比如当k为 tree, delicious, fruit时它们的概率比P(k|pear)/P(k|peach)接近于 1, 但是对于 P(k|pear)/P(k|gas)的比值却远远的大于1或小于1, 也就是越相似的词它们的上下文词的共现概率比值越接近于1, 越不相似的词它们的上下文词的共现概率比值越不接近与 1. 当k为 the, of等无关词时, P(k|pear)/P(k|gas)的比值也接近于1. 通过分析可以概括出以下规律:
1 )对于词义相似的词a,b和它们的上下文词k有:
2)对于词义不相似的两个词a,c和上下文词k, 当k不为无关词, 则有:
当k为无关词时, 此时可以得到与公式(3)相似的公式:
从上节的分析可以看出当词语a,c不相似时,给定上下文词k可以从他们的的共现概率比值中获得k是否为无关词信息. 例如从表1中我们发现当上下文词k为 tree, steam 时, P(tree|pear)/P(tree|gas)=404.55,P(steam|gas)/P(steam|pear)=55,它们的比值都要远远大于 1, 所以上下文词 tree, steam 不为无关词, 并且 tree能够用来表示pear的语义, 而steam表示gas的语义.而上下文词为无关词the, of时, P(the|pear)/P(the|gas)=1.05、P(of|gas)/P(of|pear)=1.09它们的共现概率比值接近于1. 如果假设词语a、c在给定上下文词k时, 共现概率比值为:
其中,γ为设置的超参数. 我们可以归纳以下结论:
若a,c为不相似的两个词, 给定上下文词k时:
1)若共现概率比值γ≈1时 (公式 (5)), 此时k为无关词;
2)若共现概率比值γ>>1 时 (公式 (4)), 此时k可以用于代表a或c的语义词.
根据上面的结论我们考虑如何选择与a不相似的词c来过滤无关词. 例如要过滤出pear上文中的无关词,如何选择与pear不相似的词语gas. 这里给出了以下式子选择与a不相似的词语c:
其中,a,c∈V,wa,wc分别为a,c对应的词向量. 由分布式假设我们知道如果两个词语上下文越相似, 那么它们的语义越相似, 它们的余弦距离越大, 它的逆否命题为如果两个词语的余弦距离越小, 那么这两个词语的上下文越不相似, 它们的语义相差越远, 所以两个词语的相似关系可以使用余弦距离给出. 公式(7)给出选择不相似词语的一般公式, 即从所有与a的余弦距离小于0的集合c中随机的选择N个不相似的词语过滤a中的无关词, 这样既可以减小共现矩阵中非零元素数量, 加快训练时间, 又可以使得实验效果得到改进, 然后结合公式(6)给出的结论过滤出无关词.
总而言之, 为了能够过滤出共现矩阵中的无关词与噪声词, 提高词向量的训练质量, 并加快词向量的训练效率, 本文方法可以概括为以下三个步骤:
1)对于词典中的每个词a利用余弦距离找到与其余弦距离小于0的词语集合set(c);
2)从集合set(c)中随机的选择N个词语, 结合公式(6)及其结论从原共现矩阵中过滤出无关词、噪声词, 生成新的共现矩阵;
3)将新的共现矩阵代入公式(1)训练新的词向量.
我们使用维基百科数据集(wiki2010)训练词向量.该数据集包含大约10亿个单词, 用NLTK工具包中的方法对该数据集进行分词, 并且将所有大写字母转换为小写形成新的语料库, 然后使用30 000个出现最频繁的单词形成字典, 利用字典和左右为10的滑动窗口处理新的语料库构成共现矩阵.
在使用公式(1)训练后每个单词会得到两份词向量分别是目标词向量W和上下文词向量, 因为我们使用左右为10的滑动窗口生成的共现矩阵为对称矩阵, 所以W,也是几乎相等的, 只是由于它们的初始值不同而造成稍微不同[6], 另外Ciresan[16]指出对于某种类型的神经网络, 通过结合该网络中的多个参数可以帮助减少过度拟合和噪声的影响, 从而改善词向量的训练结果. 本文使用了W+作为最终的词向量, 这样做可以在词语语义类比实验中增加准确率. 本文若无特别指出, 其他的相关的参数如xmax,α等与Pennington[6]在GloVe模型中设置相同.
在对词向量训练效果评价上, 我们使用Mikolov[4]提出的词语类比数据集进行实验, 该类比数据集包含19 544个问题, 分为语义类比和语法类比两部分. 另外,本文给出了超参数N,γ在不同取值时对词向量质量的影响, 同时在几个标准的词语相似度数据集上对训练的词向量质量进行评估.
我们使用了标准的词语相关性数据集对训练的词向量结果进行评估,其中包括SimLex[17], WordSim-353、WS-S (similarity)、WS-R (relatedness)[18], MC[19],MEN[20], RG[21], YP[22]和 RW[23]. 这些数据集包含一系列的单词对列表, 每个单词对的相似度都有人为的评分, 我们通过计算人为打分和训练的词向量之间的皮尔逊系数[24]得出词向量与人为打分之间的相关性, 皮尔逊系数越高, 则相关性越大, 词向量的训练效果也就越好.
表2 不同的词向量训练模型在词语相似度数据集上的皮尔逊系数
表2给出了Skip-gram、CBow、LG (Gaussian embedding)[7]、Glove以及GloVe-r15在词语相似度数据集的皮尔逊系数. 所有这些模型使用相同的维基数据集, 词向量维度均为300维, 其中GloVe-r15使用了N=3,γ=15 的训练结果. 从总体上来看, 这些不同模型在所有的词语相似度数据集得到的皮尔逊系数都非常接近, 并且各个模型在不同的数据集皮尔逊系数都有最大值. Skip-gram在WS和MC数据集上的皮尔逊系数最高. 本文模型GloVe-r15在数据集MEN, YP上取得较好的效果, 在其它不同的数据集上与其它模型差距也非常小. 从表格中看出, 我们的方法可以有效的捕捉词语相似性关系, 并且与其它模型训练在词语相似度皮尔逊系数也非常接近.
Mikolov[4]提出了通过词语类比实验检验词向量的训练质量. 该方法主要通过回答类似于“如果a与b相似, 正如c与d相似”的问题, 这些问题又分为语义问题和语法问题两部分. 语义问题主要是对称谓和地点进行类比检验, 比如“boy”与“girl”相似, 正如“brother”与“sister”相似. 语法问题主要来对动词时态, 单复数等形式进行验证, 比如“dance”与“dancing”相似, 正如“decrease”与“decreasing”相似. 在计算的过程中, 方法是假设实验中的某个单词是未知的, 例如假设d未知,通过余弦距离找到与wb-wa+wc最相近的词向量wd',检查词d'是否与d一致, 若一致则认为类比正确.
表3给出了使用不同模型在不同的维度下词语类比实验准确率, 其中GloVe-r15是本文提到的方法将N设置为3,γ设置为15时所得到的实验结果. 我们主要对比了流行的词向量训练方法Skip-gram, CBow,GloVe模型, 同时给出了fasttext在词向量300维时的训练结果.这些模型使用了wiki2010数据集进行训练,并且词典大小、滑动窗口大小等超参数也都尽可能的保持相同. 从表3中可以得出以下结论.
表3 不同模型在不同词向量维度下词语类比实验准确率(%)
1) 随着词向量维度的增加, 所有模型的词语类比实验准确率都在提高. 因为维度越大词向量对共现矩阵信息拟合的越准确, 故而词语类比实验准确率也会越高.
2) fasttext训练时间最长, 除 fasttext之外, 在其他模型的相互比较中Skip-gram在相同的维度下训练时间最长. fasttext主要是用于文本分类, 通过使用字符间的n-gram信息提高分类的准确性. 我们在训练词向量时也加入词的n-gram特征, 其在训练过程中主要训练单词的组成成分[9], 需要训练的词向量也由原来的K扩大为K'(K'的取值与n-gram的n取值范围有关),由于fasttext采用了层次Softmax优化[10], 需要训练词向量K大小变化相对于算法复杂度 O (dlog2(K))影响较小. 其性能损失主要来源于损失函数计算和反向传播过程中由只对单词的计算变为对单词组成成分计算,进而需要更多的处理器和内存交互而影响算法性能.但是如果不在fasttext加入n-gram特征, 那么fasttext模型将退化为Skip-gram模型, 从而失去比较的意义. 通过加入n-gram语法可以获得词典外单词的词向量, 扩展词典的表示范围, 同时Bojanowski在论文第六节[9]中给出了n-gram语法在词语语义相似度和词素关系的定性分析.
3) 在相同的词向量维度下本文的方法是所有相关模型中用时最短, 语义类比实验结果最好的模型, 但是在语法类比实验中其准确率相对于原始GloVe模型在下降, 这是因为在使用分布式假设过滤共现矩阵时主要考虑的是语义信息, 使得模型在语法信息捕捉下降.我们可以通过引入对单词的语法信息提高语法实验准确性, 本文第5节给出了处理方法.
由于词向量的训练质量会受到N,γ值的影响,图1给出了当N=3时,γ不同取值时词语类比实验准确率. 从图1可以发现,γ对于词向量的训练质量影响较小. 但是当γ取较大值时准确率有稍微下降. 图2给出了γ=15,N的不同取值时对实验准确率的影响. 当N取较大值时, 词语类比实验的准确率有明显下降, 实验表明, 当N取值在[3, 7]之间,γ在[10, 20]区间时可以取得相对较好的实验结果.
图1 N=3, γ不同取值时词语类比实验准确率
图2 γ=15, N不同取值时词语类比实验准确率
本文通过分析GloVe模型共现矩阵特点, 提出了一种过滤出共现矩阵中无关词的方法, 该方法可以在不影响词向量质量的前提下, 缩短词向量的训练时间,并且能够更好的捕捉词语间的语义信息. 但是, 本文方法虽然在语义类比实验得到提升,同时也会造成语法类比实验结果的下降, 未来可以从两个方向利用语法信息对实验结果进行改进: 1)保留共现矩阵中形态变化词的词频统计信息. 即使用NLTK对词典进行词形归一化, 找到所有能够进行词形归一化的形态变化词,保留这些的词频统计信息, 只对非形态变化词进行共现矩阵中词频统计处理. 2)借鉴fasttext在词语层面的ngram思路. 将形态变化词进行词干提取形成词干+词尾的形式, 此时wi=ws+wl其中ws为词干词向量,wl为词尾词向量, 并且词尾词向量表示了语法信息. 由训练词向量wi变为训练词向量ws和wl.
最后, 本文给出一种提升词语语义相似度新方法,实验表明, 该方法在语义相似度实验中比传统词向量训练方法能够获得了更好的结果, 也为深度学习在自然语言处理上层应用提供了更好的表示.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!