Word Representation 词表示

Posted hxmp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Word Representation 词表示相关的知识,希望对你有一定的参考价值。

一、概念和意义

1.1. One-Hot

在自然语言处理中,我们该怎样从语料中提取信息?语料是string的形式,无法计算,所以我们必须要把语料用向量表示。
最先引入最基本的表示方法 One Hot,根据词在词汇表的位置来表示这个词。

技术图片

1.2. 语言模型 Language Model

表示后怎么用呢?一个朴素的概念是,当我们知道了上文,就能预测下个词是什么。设我们要预测的词语是(w_k),它前面有(k-1)个词语,那么到了第(k)个词时为(w_k)的概率是:

[P(w_1,w_2,w_3,...,w_k)=P(w_1)P(w_2|w_1)P(w_3|w_2,w_1)...P(w_k|w_k-1,...w_1)]

那么如何求的下个词的概率 (P(w_1,w_2,w_3,...,w_k))

最朴素的思想,把其中每一个子项的概率全部求解出来,每一项都有 (P(w_k|w_{1}^{k-1})=frac{P(w_{1}^{k})}{P(w_{1}^{n-1})}approx frac{Count(w_{1}^{k})}{Count(w_{1}^{k-1})}) ,只要求出来每一项,就知道下个词为的概率 (w_k) 了,这就是统计语言模型。
但显然基于统计的语言模型复杂度非常高,遍历统计每种几率不现实,所以逐步发展出了N-gram模型、基于神经网络的模型……

二、N-gram 模型

2.1. 概念

在上一节中,计算每一项 (Count(w_{1}^{k})) 是唯一耗时。为了简化问题,我们做一个假设,每个词的出现概率,只和它前面的N个词语有关,这就是N-gram模型了。
根据N-gram,我们有

[P(w_k|w_{1}^{k-1})=frac{P(w_{1}^{k}))}{P(w_{1}^{n-1})}approx frac{Count(w_{1}^{k})}{Count(w_{1}^{k-1})}approx frac{Count(w_{k-n+1}^{k})}{Count(w_{k-n+1}^{k-1})} ]

这样一来,需要统计的数量就变少了。那么 (n) 取多少呢?一般来说要考虑到模型复杂度和模型效果。复杂度方面,假定词汇有N=2*10^5个,由于整体复杂度是 (O({N}^{n})) ,因此一般不会取太大的n。实践中一般取n=3,称为 Three-Gram Model (三元模型)。

技术图片

2.2. Smoothing 平滑化

问题背景

  • 若n-gram公式中 (Count(w_{k-n+1}^{k-1})=0),能否认为 $ P(w_k|w_{1}^{k-1})=0$ ?
    1. 在n-gram中,即使语料库再丰富,也必然有未共现的词汇组合。
    2. 对于百万字中文语料来说约23%的bigram未出现[1],百万词英文语料中50%三元组只出现一次,80%三元组不超过5次[2]
    3. 针对未共现的词汇,若设 $ P(w_k|w_{1}^{k-1})=0$ 。由于n-gram中的概率是由子序列概率乘积得到的,如果中间有一个值为0,那么对于一个句子,我们就会得到一个很差的概率估计(0概率),导致泛化能力弱。
  • 若n-gram公式中 (Count(w_{k-n+1}^{k-1})=Count(w_{k-n+1}^{k})),能否认为 $ P(w_k|w_{1}^{k-1})=1$ ?
    • 留待思考

解决方案[3]

  1. Add-One Smoothing (Laplace Smoothing)
    • 在现有语料基础上,假设每个可能的 N-gram 再发生一次。例如原来0次的现在就有1次共现,10次的就有11次共现。
    • ( P(w_k|w_{1}^{k-1})= frac{Count(w_{k-n+1}^{k})}{Count(w_{k-n+1}^{k-1})}→frac{Count(w_{k-n+1}^{k})+1}{Count(w_{k-n+1}^{k-1})+V})
    • (V) 表示词汇表 (N-1) 阶组合的数量,对bigram而言就是词汇表的大小。
    • Add-One Smoothing 的缺点是对原先未共现的组合过于倾向。考虑到前面问题背景里给出的数据统计结论——“80%三元组不超过5次”,加1的操作对语料库中存在共现的组合产生了较大影响。因此在实际操作时可以不采用 (V) ,通过引入系数 (delta∈(0,1)) ,使用 (delta V) 来代替。
  2. Backoff Smoothing
  3. Interpolation Smoothing (Jelinek-Mercer Smoothing) 差值平滑
  4. Good-Turing Smoothing

三、神经概率语言模型 NNLM

N-gram思路将计算的窗口范围缩减到了n个,但是仍然是一个统计概率语言模型,基于统计去进行概率估计。就像分类问题我们可以建模成神经网络模型,在语言模型中我们也可以引入神经网络的结构,通过训练每层之间的参数,拟合出语言概率的结果,这就是NNLM。

3.1. 概念

技术图片

第一层是输入层,设每个词语是长度为 m 的 “distribution representation” 向量,一共有 n 个词,那么输入层shape 就是 (n, m)

第二层是投影层,把输入的每个词concat起来,输出shape = (1, nm)

第三层是隐藏层,是一个Dense(activation=‘tanh‘)的全连接,有参数 W 和 b 在这里训练,设隐藏层的输出是 h 维的(这里一般较小的数字就可以了,因为很影响计算量),那么输出shape = (nm, h)

第四层是输出层,是一个Dense(activation=‘tanh‘)的全连接softmax输出。有参数也在这一层训练。同时输出的向量大小是 (|V|, 1),|V|就是词汇表的大小。

四、Word2Vec


参考资料


  1. https://blog.csdn.net/lzh_12345/article/details/82990101 ??

  2. https://www.isip.piconepress.com/courses/msstate/ece_8463/lectures/current/lecture_33/lecture_33.pdf ??

  3. https://web.archive.org/web/20181024040030/http://www.cs.utexas.edu/~mooney/cs388/slides/equation-sheet.pdf ??

以上是关于Word Representation 词表示的主要内容,如果未能解决你的问题,请参考以下文章

Global Vectors forWord Representation

Efficient Vector Representation for Documents through Corruption-by Minmin Chen阅读

Distributed Representation——词向量

如何构建词空间向量和文本向量化

word2vec是如何得到词向量的?

怎样用word2vec来得到某几个词的向量表示