NLP with DL Stanford -- 1. Word Vector Basic

带有NLP with DL Stanford标签的都是来自 斯坦福课程(CS224n: Natural Language Processing with Deep Learning)的课程笔记。

Word Vector

自然语言处理本质上采用的依然是一个数学模型,单纯的文字文本对于大部分的模型来说是不可识别或者难以计算的,所以在处理之前我们必须将文本转化成模型可识别的输入。词向量(Word Vector)便是一种把词处理成向量的技术,也被称为Word Embedding

其中最简单的一种表示被称为one-hot vector,即将每一个词表示为 R|V|×1 的向量,(所有词排成一定顺序,称为词典顺序)除了该词的词典序处的数字置为1,其余位置为0。 |V| 是我们词汇集合(词典)的大小。举例如下:

ωaardvark=1000,ωan=0100,ωat=0010,ωzebra=0001

但是该表示方法有两个很明显的劣势,一是现实世界词汇量之大,容易造成维数灾难(Curse of Dimensionality),二是词汇之间是不相关的,这并不利于我们后续的一些进展。除了one-hot vector , 还有一些词向量的算法被提出,流行的比如Word2Vec,以及接下来介绍的SVD Based Methods生成的词向量。

SVD Based Methods

其中一种得到词向量的方法,是通过遍历数据集得到某种形式的矩阵 X ,通过对X奇异值分解(SVD, Singular Value Decomposition),得到 USVT ,我们使用 U 的行向量作为我们词典中的词向量。

步骤如下:
1. 构造矩阵X:一般构造的是Word-Word Co-occurrence Matrix,即每一个词在行和列中按顺序各出现一次,数值代表每个词出现在目标词一个窗口长度内的次数(窗口长度1即是相邻)大小为|V|×|V|
2. 对X进行奇异值分解,得到 X=USVT
3. 选择 U 前k列作为词向量
4. ki=1σi|V|i=1σi表示了选取的前k维的方差和

以上方法构造出来的词向量包含着足够的语义和句法信息,但也有不少问题:
1. 矩阵维数经常需要改变(新的词会不断产生)
2. 矩阵及其稀疏,因为绝大多数词不会共同出现
3. 矩阵总体上维数非常高( 106×106
4. 训练的时间复杂度为平方
5. 需要在X中做一些修正以解决字频率极大的不平衡(Requires the incorporation of some hacks on X to account for the drastic imbalance in word frequency)

有一些现有的方案可以去解决上述问题:
1. 忽略诸如“the”,“he”,“has”等等功能词
2. 应用斜坡窗口(ramp window),即根据文档中单词之间的距离赋予次数权重。
3. 使用Pearson相关性并将负数设置为0而不是使用原始计数。

Next Up

下一节将介绍Word2Vec的一个模型The Skip-Gram Model

参考:

http://web.stanford.edu/class/cs224n/lecture_notes/cs224n-2017-notes1.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值