源代码
https://code.google.com/p/word2vec/
思想
使用deep learning思想,Google开源的一款将词表征为实数值向量的高效工具,采用的模型由CBOW(continuous bag of words,连续的词袋模型)和Skip-Gram。
通过训练,word2vec可以把文本内容的处理简化为k维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上德相似度。
词向量
- One-hot Representation
NLP 相关任务中最常见的第一步是创建一个词表库并把每个词顺序编号。这 实际就是词表示方法中的 One-hot Representation,这种方法把每个词顺序编号, 每个词就是一个很长的向量,向量的维度等于词表大小,只有对应位置上的数字 为 1,其他都为 0。当然在实际应用中,一般采用稀疏编码存储,主要采用词的 编号。
这种表示方法一个最大的问题是无法捕捉词与词之间的相似度,就算是近义 词也无法从词向量中看出任何关系。此外这种表示方法还容易发生维数灾难,尤 其是在 Deep Learning 相关的一些应用中。 - Distributed Representation
Distributed representation 最早由 Hinton 在 1986 年提出[8]。其基本思想是 通过训练将每个词映射成 K 维实数向量(K 一般为模型中的超参数),通过词之 间的距离(比如 cosine 相似度、欧氏距离等)来判断它们之间的语义相似度。而 word2vec 使用的就是这种 Distributed representation 的词向量表示方式。
统计语言模型
- 上下文无关模型
- n-gram模型
- n-pos模型
- 基于决策树的语言模型
- 最大熵模型
- 自适应模型
word2vec 可调整的超参数
- –size:向量维数
- –window:上下文窗口大小
- –sample:高频词亚采样的阈值
- –hs:是否采用层次 softmax
- –negative:负例数目
- –min-count:被截断的低频词阈值
- –alpha:开始的 learning rate
- –cbow:使用 CBOW 算法