NLP系列——文本向量化

NLP系列——文本向量化

主要介绍word2vec词向量算法和doc2vec文本向量算法。
文本表示是自然语言处理中的基础工作,直接影响到整个自然语言处理系统的性能,而文本向量化是文本表示的一种重要方式。
文本向量化根据对象的差异分为:
word2vec算法(词向量化)
doc2vec算法(文章向量化)
str2vec算法(句子向量化)


文章目录

  • NLP系列——文本向量化
  • 一、word2vec算法
    • 1.1 词袋模型
    • 1.2 词空间模型
    • 1.3 神经网络语言模型(Neural Network Language Model NNLM)
    • 1.4 C&W模型


一、word2vec算法

1.1 词袋模型

处理过程包括两部分内容:
1)对文本中出现的每个词进行统计和编码,生成词典;
2)对每个文档统计词典中各个词出现的次数,将词的编号作为索引,生成词向量列表;

存在的问题:
1)维度灾难:对每个文档都会产生非常高维的词典空间;
2)无法保留次序信息;
3)存在语义鸿沟;

1.2 词空间模型

分布假说的核心思想:上下文相似的词,其语义也相似。

神经网络模型能够灵活的对上下文进行建模,构造词表示。
神经网络的词向量模型:根据上下文与目标词之间的关系进行建模

1.3 神经网络语言模型(Neural Network Language Model NNLM)

目标:
构建一个语言概率模型

基本流程:
从语料库中搜集一系列长度为n的文本序列 w i − ( n − 1 ) , . . . , w i − 1 , w i w_{i-(n-1)},...,w_{i-1},w_i wi(n1),...,wi1,wi,假设这些长度为n的文本序列组成的集合为 D D D,NNLM的目标函数为:
∑ D P ( w i ∣ w i − ( n − 1 ) , . . . , w i − 1 ) \sum_DP(w_i|w_{i-(n-1)},...,w_{i-1}) DP(wiwi(n1),...,wi1)
NNLM模型采用的是经典的三层前馈神经网络结构,其中包括输入层、中间层、隐藏层和输出层三部分。
为了解决词袋模型数据稀疏问题,输入层的输入为低维度的、紧密的词向量,具体操作犯法是将词序列 w i − ( n − 1 ) , . . . , w i − 1 w_{i-(n-1)},...,w_{i-1} wi(n1),...,wi1中的每个词向量按照顺序拼接,得到:
x = [ v ( w i − ( n − 1 ) ) , . . . , v ( w i − 2 ) , v ( w i − 1 ) ] x = [v(w_{i-(n-1)}),...,v(w_{i-2}),v(w_{i-1})] x=[v(wi(n1)),...,v(wi2),v(wi1)]
输入层得到上述 x x x输入之后,将 x x x输入隐藏层得到 h h h,再将 h h h输入到输出层得到最后的输出变量 y y y,其中:
h = t a n h ( b + H x ) h = tanh(b + Hx) h=tanh(b+Hx) y = b + U h y = b + Uh y=b+Uh
这里输入层到隐藏层的激活函数采用双曲正切函数 t a n h tanh tanh
输出的 y y y是一个向量,向量中的每个分量 ( y ( w ) ) (y(w)) (y(w))指的是下一个词为词表中词 w w w的可能性,为了使得输出的 y ( w ) y(w) y(w)能够表示概率,经常采用softmax函数对多分类输出进行归一化,对应的函数表达式为:
P ( w i ∣ w i − ( n − 1 ) , . . . , w i − 1 ) = e x p ( y ( w i ) ) ∑ e x p ( y ( w i ) ) P(w_i|w_{i-(n-1)},...,w_{i-1})=\frac{exp(y(w_i))}{\sum^{}exp(y(w_i))} P(wiwi(n1),...,wi1)=exp(y(wi))exp(y(wi))

模型优点:
1)解决了词袋模型的高维稀疏矩阵问题;
2)考虑了词的上下文语境,能够更加准确的预测相似的目标词;

目标函数:
输出的 y ( w i ) y(w_i) y(wi)表示的是上文出现词序 w i − ( n − 1 ) , . . . , w i − 1 w_{i-(n-1)},...,w_{i-1} wi(n1),...,wi1的情况下,下一个词为 w i w_i wi的概率,因为上述情况是给定的样本(事实),所以模型的参数应该朝着最大化 y ( w i ) y(w_i) y(wi)的方向进行的方向迭代,具体的目标函数为(对长度为N的文本序列集合D中每个文本的预测概率结果求乘积,再取对数):
∑ w i − ( n − 1 ) : i ∈ D l o g P ( w i ∣ w i − ( n − 1 ) , . . . , w i − 1 ) \sum_{w_{i-(n-1)}:i\in{D}}logP(w_i|w_{i-(n-1)},...,w_{i-1}) wi(n1):iDlogP(wiwi(n1),...,wi1)
使用梯度下降算法进行求解,梯度迭代公式为:
θ : θ + α ∂ l o g P ( w i ∣ w i − ( n − 1 ) , . . . , w i − 1 ) ∂ θ \theta:\theta + \alpha \frac{\partial{logP(w_i|w_{i-(n-1)},...,w_{i-1})}}{\partial{\theta}} θ:θ+αθlogP(wiwi(n1),...,wi1)

1.4 C&W模型

与NNLM模型的对比:
NNLM:以构建语言概率模型为目标,从隐藏层到输出层的权重计算过程运算量很大
C&W:以生成词向量为目标,通过对n元短语进行打分的方式,快速获取词向量

C&W核心机理:
如果待评估的n元短语在语料库中出现过,模型会给该短语打高分,否则打低分(为保证上下文词数的一致性,n应为奇数)

目标函数:
∑ ( w , c ) ∈ D ∑ w ′ ∈ V m a x ( 0 , 1 − s c o r e ( w , c ) + s c o r e ( w ′ , c ) ) \sum_{(w,c)\in{D}}\sum_{w^{'}\in{V}}max(0,1-score(w,c)+score(w^{'},c)) (w,c)DwVmax(0,1score(w,c)+score(w,c))
其中 ( w , c ) (w,c) (w,c)为语料库中抽取的n元短语( w w w为目标词, c c c表示目标词上下文的语境), w ′ w^{'} w为词典空间中随机抽取的一个词。

采用成对词语的方式对目标函数进行优化,目标函数期望正样本 ( w , c ) (w,c) (w,c)(来自语料库)的得分至少比负样本 ( w ‘ , c ) (w{‘},c) (w,c)高1分,否则改样本的损失函数值将大于0。

C&W模型的输出层是单神经元结构,输出节点的大小代表n元短语的打分高低,相比较于NNLM模型,隐藏层到输出层的计算量大大降低。

你可能感兴趣的:(NLP技术,nlp,神经网络)