目录
word2vec 和doc2vec的区别
不管是词向量还是句向量都是一个训练模型的副产品。
所谓副产品,就是说,模型的设计原则是训练一个预测任务的模型后,得到了预测模型和词向量或者句向量。
有很多训练词向量和句向量的文献。词向量常用的是文献[2]提出的,可以访问它的官网[1];
句向量的我读的是文献[3]的版本,理由是gensim python包提供了它的实现(参考[4])。
词向量,大家比较熟悉了,网上各种解释版本。
我想说的的doc2vec与word2vec的不同。
动机
为了把一句子转换成向量。假设把句子中单词的向量进行线性变化,那么信息总是会有些损失。为了能把句子转换成向量,就有人提出各种句向量的训练模型,比如微软的Sent2vec,还有文献[3]。
PV-DM模型
例子:加载google训练的模型,并输出单词”good”的向量
在ubuntu的终端输入,如下代码
$python3 ##进入python3的命令行环境。
>>> import gensim
>>> from gensim.models.keyedvectors import KeyedVectors
>>> word_vectors = KeyedVectors.load_word2vec_format('/home/xuyl/word2vec/xuyaoli/GoogleNews-vectors-negative300.bin', binary=True) # C binary format
注意事项:
a. 需要等待1分钟;
b. 建议你的系统环境是16G内存(如果你的是8G内存,可能会出问题,因为向量是写在一个大的矩阵,比较吃内存);
c. 如果你下载的是.gz文件,那么建议你解压后,运行代码。
>>> word_vectors["good"] ##输出单词good的300维度的向量
参考文献
[1] word2vec官方网站 https://code.google.com/archive/p/word2vec/
[2] word2vec的文献 Tomas Mikolov, Ilya Sutskever, Kai Chen, Gregory S. Corrado, Jeffrey Dean:
Distributed Representations of Words and Phrases and their Compositionality. NIPS 2013: 3111-3119
[3] doc2vec Quoc V. Le, Tomas Mikolov: Distributed Representations of Sentences and Documents. ICML 2014: 1188-1196
[4] gensim官网 https://radimrehurek.com/gensim/models/doc2vec.html