词向量
词向量做的事情就是将词表中的单词映射为实数向量。
one-hot编码
one-hot对每个词进行编号,假设词表的长度为n,则对于每一个词的表征向量均为一个n维向量,且只在其对应位置上的值为1,其他位置都是0。
问题:
1.有序性问题:它无法反映文本的有序性。
2.语义鸿沟:其无法通过词向量来衡量相关词之间的距离关系,无法反映词之间的相似程度。
3.维度灾难:高维情形下将导致数据样本稀疏,距离计算困难,这对下游模型的负担是很重的。
统计语言模型
从统计语言模型开始,来解决无序性的这个问题。
Ngram模型
问题
1.由于参数空间的爆炸式增长,它无法处理更长程的context(N>3);
2.它虽然可以描述上下文之间的概率关系,但这种处理方式本质的数学的形式仍是一个个离散的one-hot向量,或者说Ngram仅仅解决了文本之间的转移概率的问题,并没有解决文本本身的表征问题。无法表述两个词之间的相似性。
我们知道one-hot向量的长度对应于整个词表的长度。在动辄上完甚至上百万的实际应用中,这样的表征方法将面临巨大的维度灾难问题。
分布式表征
解决维度灾难的问题。使用稠密连续向量表征文字
词袋假说(Bag of Words Hypothesis)
矩阵的行对应词典里的一个word;矩阵的列对应训练语料里的一篇文档;矩阵里的元素代表着word在文档 中出现的次数(或频率)。那么,我们就可以提取行向量做为word的语义向量,或者提取列向量作为文档的主题向量。
分布假说(Distributional Hypothesis)
基于Distributional Hypothesis构造一个word-context的矩阵。此时,矩阵的列变成了context里的word,矩阵的元素也变成了一个context窗口里word的共现次数。
用SVD算法表征的词向量就是Bag of Words Hypothesis,而word2vec算法是基于Distribut