1

人类的语言在计算机中是无法直接被识别的,只能换算成二进制代码组成的机器语言计算机才能识别,并对其进行相关操作。因此要实现对语言文本的处理,首要条件就是对文本建立模型以使得机器能够识别处理。1986年,Hinton首次提出了分布式表达(Distributed Representation,DR)概念,简称词向量(Word Embedding)[30]。词向量是将大量的文本集中进行训练并统计,之后将文本组成的语料库中的每个词映射在一个向量空间上,这个向量空间通常都是凝聚度较高、维度较低的具有实际数值的向量。此向量的维数通常都会远小于原本词典的大小。为了最大限度表达词且方便计算,可以将向量设置在几十维到几百维之间,其中每一维都代表一个包含潜在语义的特征,该特征隐含了从语料中学习到的句法和语义特征。此外,由于向量具有的数学特性使得分析向量之间包含的语义关系时,可以快速方便地利用各种相似度算法或者距离算法进行计算。

2  Word2vec工作原理

2013年来自Google团队的Tomas Mikolov等人设计开发了一款名为Word2vec的程序,该程序可以很简便地设置最终词向量的维度,并根据不同的任务需求设置不同维度数,得到的词向量能满足相加性,可以用公式2-1表示词向量的相加性。

                                                  

word2vec 词向量效果 word2vec词向量维度_子节点

(2-1)

由公式2-1可以看出,词向量之间简单的计算方法就能够表达词向量互相的语义关系。图2-1简洁形象地展示了词向量的相加性。

word2vec 词向量效果 word2vec词向量维度_自然语言处理_02

                                                                                  图2-1 词向量的相加性表示

Word2vec是基于统计语言模型而构建的,统计语言模型是用于统计一串字符序列成立的概率大小的概率模型。假定 代表一个字符串,组成成分为 ,记为 ,则由 的联合概率可计算出 出现的概率,如式2-2所示。

                                                                          

word2vec 词向量效果 word2vec词向量维度_子节点_03

(2-2)

利用贝叶斯公式可将上式2-2分解为公式2-3。

                          

word2vec 词向量效果 word2vec词向量维度_算法_04

(2-3)其中

word2vec 词向量效果 word2vec词向量维度_自然语言处理_05

为模型参数,当其取具体数值时则能计算出相应的

word2vec 词向量效果 word2vec词向量维度_算法_06


Word2vec是一款利用深度学习来训练生成词向量的工具,它的主要思想是海量的文本中隐含着词与词之间的联系,利用其训练大量文本后可得到质量高且语义相近的词向量。Word2vec的优势是它改进了传统神经网络的词向量语言模型,大大降低了传统向量空间模型处理数据存在的高维度问题。传统的神经网络模型有输入、隐藏和输出三层结构,隐藏层到输出层的softmax层需要计算所有输入词的softmax概率然后判断挑选出最大的值,该过程的计算复杂度很高。相比于传统神经网络,Word2vec在输入层做了改变,传统的神经网络在输入时通常需要先进行线性变换并加入激活函数,而Word2vec则采用求和平均方式处理输入的词向量,将多个词向量转变成一个词向量,大大减小了计算强度;不仅如此,在输出层Word2vec也作了改进,该程序去掉了隐藏层到输出层过程,改用哈夫曼树来取代。假设将哈夫曼树中每个叶子节点赋为权值,则哈夫曼树的目的就是构造出最短的带有权值的路径,哈夫曼又被称为最优二叉树。如图2-2所示为叶子节点被赋予权值的哈夫曼树。

word2vec 词向量效果 word2vec词向量维度_自然语言处理_07

                                                                                            图2-2 根据权重构造的哈夫曼树

叶子节点上每个词都有独一无二的编码,约定在哈夫曼树中左子树记为0,右子树记为1,而Word2vec中则相反。例如任意从新浪微博中爬取了若干与泰国普吉沉船事件有关的微博,经过简单统计发现“泰国”、“普吉”、“游船”、“遇难”、“救援”、“死伤”的次数分别为18、9、8、6、4、3,把这六个词在爬取的微博文本中出现的频率作为权重并赋为树的叶子节点,最终构造而成的哈夫曼树如图2-2所示。在该哈夫曼树中,“泰国”的编码为1、“游船”的编码为011。

由图2-2可知在哈夫曼树中权重越高的节点距离根节点越近,则相对的特征词的编码值也就更短,即树的带权路径越短。Word2vec有连续词袋模型(Continuous Bag-of-word Model,CBOW)和Skip-gram两个模型,下文将仔细阐述这两个模型的原理。

2.1  连续词袋模型

CBOW的主要思想是在某个语句片段中,在知道某个词上下文的基础上来推测某个特征词出现的概率,也就是说模型的输入是某个词的上下文,而输出是某个词的概率。该模型有输入、投影和输出三层结构。假设某个词为 ,则该上下文信息为:

                                                        

word2vec 词向量效果 word2vec词向量维度_自然语言处理_08

(2-4)

式中 c ——前后单词个数;

当前词出现的概率表述为:

                                                                                

word2vec 词向量效果 word2vec词向量维度_算法_09

   (2-5)式中 

word2vec 词向量效果 word2vec词向量维度_word2vec 词向量效果_10

——词 的上下文;

CBOW的结构图如图2-3所示。

word2vec 词向量效果 word2vec词向量维度_word2vec 词向量效果_11

                                                                       图2-3 CBOW模型结构图

Input层:假定c=2 ,即输入为某个词上下文两个词的单向量。单向量是目前广泛使用的一种将文字转化为计算机能识别的数学符号的方法,它是将词表示为一个向量形式。

Projection层:计算

word2vec 词向量效果 word2vec词向量维度_word2vec 词向量效果_12

得到一个和向量,即对输入的某个词的上下文词的单向量作累加求和。

Output层:输出是一个哈夫曼树。语料库中的每个词作为该树的叶子节点,而每个词出现的频率则被当作权重,以此生成一个哈夫曼树。哈夫曼树的特性决定了距离根节点越近的词出现的频率越高。

2.2  Skip-gram模型

Skip-gram模型也是统计语言模型的一种,处理数据时和CBOW是相反的过程,目的是输入一个特征词,通过模型训练后得到该词的上下文信息。其结构模型图如下所示。

word2vec 词向量效果 word2vec词向量维度_子节点_13

                                                                          图2-4 Skip-gram模型结构图

Input层即输入层:输入的数据是语料中的中心词,同CBOW模型一样,也是用单向量表示。

Projection层即投影层:此层在Skip-gram模型中没有起到作用,只是为了在结构上和CBOW模型作对比。

Output层即输出层:此层的结构也是最优二叉树,能更生动地表现词频高的向量。

如图2-5所示是Skip-gram模型的网络结构图。

word2vec 词向量效果 word2vec词向量维度_自然语言处理_14

                                                                  图2-5 Skip-gram模型的网络结构图

由于本文扩充微博短文本时主要是利用Skip-gram模型训练微博文本,因此接下来详细介绍Skip-gram模型训练词向量的基本原理。

由Sigmoid函数可得,公式2-6为将一个节点分作正类的概率。

                                                                                          

word2vec 词向量效果 word2vec词向量维度_子节点_15

(2-6)

式中  word2vec 词向量效果 word2vec词向量维度_词向量_16——哈夫曼树中非叶子节点的向量;

     x ——当前内部节点的词向量。

分为负类的概率为:

                                                                                                  

word2vec 词向量效果 word2vec词向量维度_词向量_17

       (2-7)

Skip-gram模型的目标函数如下:

word2vec 词向量效果 word2vec词向量维度_word2vec 词向量效果_18

                                                                      (2-8)式中 

word2vec 词向量效果 word2vec词向量维度_word2vec 词向量效果_19

此公式中最重要的部分就是构造条件概率函数

word2vec 词向量效果 word2vec词向量维度_子节点_20


word2vec 词向量效果 word2vec词向量维度_word2vec 词向量效果_21

word2vec 词向量效果 word2vec词向量维度_自然语言处理_22