文本向量化

文本向量化是将文本表示成一系列能够表达文本语义的向量。词语是表达文本处理的最基本单元,因此当前阶段对文本向量化大部分的研究都是通过对词向量化实现的。与此同时,也有相当一部分研究者将文章或者句子作文文本处理的基本单元,与之对应的是doc2vec和str2vec技术。

1.词向量化之 word2vec算法

一: 词袋(Bag Of Word)模型 词袋模型是最早的以词语为基本处理单元的文本向量化方法,其原理如下: 取所有文本中单词的并集并去重,构建词典,词典中为为每一个出现过的单词进行编号。然后对某一个文本进行处理时,则遍历该词典中每一个单词,若该单词在这个文本中没有出现则记为0,出现了则记录出现的次数。具体如下: 文档1:John likes to watch movies, Mary likes too. 文档2:Johon also likes to watch football games. 根据上述文档构造的词典为: {'John':1,'likes':2,'to':3,'watch':4,'movies':5,'alse':6,'football':7,'game':8,'Mary':9,'too':10} 根据上述词典对文档进行向量化: 文档1:[1,2,1,1,1,0,0,0,1,1] 文档2:[1,1,1,1,0,1,1,1,0,0] 该向量与原来文本中单词出现的顺序没有关系,而是记录每个单词在文本中出现的频率。其缺点如下:

  • 维数灾难。若词典中包含大量的单词(10000),则每个文本就需要响应维度(10000)的向量表示,并且除了文本中出现的词语位置不为0,其余9000多位置都为0.
  • 向量没有保留原有文本单词的顺序信息
  • 存在语义鸿沟 词语是表达语义的基本单元。词袋模型只是将词语符号化,他不考虑词的顺序,并且假设词于词之间是独立的,实际上词的顺序对语义至关重要并且词与词也是相互影响的。所以词袋模型是不包含任何语义信息的。为了解决如何使‘词向量'包含语义信息,有人提出了分布假说,其核心思想是:上下文相似的词,其语义也相。运用该思想的方法有词空间模型(word space model)以及神经网络模型等。

高维稀疏向量的降维:

Dristributed representation可以解决One hot representation的高维稀疏矩阵问题,它的思路是通过训练,将每个词都映射到一个较短的词向量上来。所有的这些词向量就构成了向量空间,进而可以用普通的统计学的方法来研究词与词之间的关系。这个较短的词向量维度是多大呢?这个一般需要我们在训练时自己来指定。比如以全世界的 将世界所有城市名称作为语料库的话,采用One-hot编码将词向量化,那这个向量会过于稀疏,并且会造成维度灾难。

杭州 [0,0,0,0,0,0,0,1,0,……,0,0,0,0,0,0,0] 上海 [0,0,0,0,1,0,0,0,0,……,0,0,0,0,0,0,0] 宁波 [0,0,0,1,0,0,0,0,0,……,0,0,0,0,0,0,0] 北京 [0,0,0,0,0,0,0,0,0,……,1,0,0,0,0,0,0]

而可通过指定维度将其进行压缩,比如指定4个维度population人口,地理位置position,全球影响力,经济发达指数: 杭州[0.6, 0.5, 0.1, 0.3] 上海[0.8, 0.5, 0.9, 0.9] 宁波[0.3, 0.6, 0.05, 0.1] 北京[0.8, 0.1, 1.0, 0.85] 当然实际况中,我们并不能对词向量的每个维度做一个很好的解释。向量由高维向低微映射需满足以下性质:

(1)这个映射是单设(不懂的概念自行搜索); (2)映射之后的向量不会丢失之前的那种向量所含的信息。 该高维向量由低维向量压缩的过程被称为embedding,高维向量难于理解难于发现规律,压缩后便于分析各个向量之间的关系

二: 神经网络语言模型 (NNLM) 神经网络词向量模型根据上下文与目标词之间的关系进行建模。其以长度为n的文本单词文本序列集合文本向量化_词向量作为训练样本,以目标词为文本向量化_词向量_02标签设为1,目标词不为文本向量化_词向量_02标签设置为0作为标签,进而通过训练神经网络的参数使得目标词为文本向量化_词向量_02的概率最大。 当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数,例如隐层的权重矩阵。 神经网络语言模型采用的是经典的三层前馈神经网络结果。为解决词袋模型数据稀疏问题,其输入为低纬度的紧密的词向量。 输入层: 输入层的操作就是将给定的词序列文本向量化_词向量的词向量按顺序进行拼接为输入数据: 文本向量化_词向量_06输出层: 输出层文本向量化_词向量_07 为上文出现词序列为文本向量化_词向量的情况下,下一个词为文本向量化_词向量_02的概率 NNLM模型优点:

  • 输入数据采用低微紧凑的词向量对词序列进行表示,解决了词袋模型带来的数据稀疏,语义鸿沟等问题。
  • NNLM模型根据上下文语境预测出现概率最大的目标词,因而在相似的语义环境下,模型可预测出相似的目标词。

三: C&W模型 NNLM模型的目标是构建一个语言概率模型,而C&W模型则是以生成词向量为目标的模型,其核心机理是:如果n元短语在语料库中出现过,那么模型会给短语打高分,若是未在语料库中出现过,那么模型会给短语打较低的评分。与NNLM模型的目标词在输出层不同,C&W模型的输入层就包含了目标词,其输出层也变为一个节点,该节点输出值的大小代表n元短语的打分高低

四: CBOW模型和Skip-gram模型 CBOW使用一段文本的中间词作为目标词,同时去掉了隐藏层,此外CBOW模型使用上下文各词向量的平均值代替NNLM模型各个拼接的词向量。 CBOW(continuouns bag of words)的目标是根据上下文来预测当前词语的概率,且上下文所有的词对当前词出现概率的影响的权重是一样的。如在袋子中取词,取出数量足够的词就可以了,取出的先后顺序则是无关紧要的。

Skip-gram刚好相反,是根据当前词语来预测上下文概率的

文本向量化_神经网络_10

文本向量化_向量化_11