码迷,mamicode.com
首页 > 其他好文 > 详细

Word Representation 词表示

时间:2020-05-04 17:07:11      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:inter   影响   src   alt   cti   复杂度   article   div   分类   

一、概念和意义

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 词表示

标签:inter   影响   src   alt   cti   复杂度   article   div   分类   

原文地址:https://www.cnblogs.com/hxmp/p/WordRepresentation-OneHot-NGRAM-NNLM-Word2Vec.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!