【发布时间】:2019-01-19 21:04:12
【问题描述】:
我是 doc2vec 的新手,对文档向量有一些疑问。 我想要得到的是一个短语向量,比如“像猫一样的哺乳动物”。 所以,到目前为止我尝试的是使用 doc2vec 预训练模型,我尝试了下面的代码
import gensim.models as g
model = "path/pre-trained doc2vec model.bin"
m = g. Doc2vec.load(model)
oneword = 'cat'
phrase = 'cat like mammal'
oneword_vec = m[oneword]
phrase_vec = m[phrase_vec]
当我尝试这段代码时,我可以得到一个单词“cat”的向量,但不能得到“cat-like哺乳动物”的向量。 因为 word2vec 只为像“猫”这样的一个词提供向量,对吧? (如果我错了,请纠正我) 所以我搜索并找到了 infer_vector() 并尝试了下面的代码
phrase = phrase.lower().split(' ')
phrase_vec = m.infer_vector(phrase)
当我尝试这段代码时,我可以得到一个向量,但每次我尝试时都会得到不同的值 短语向量 = m.infer_vector(短语) 因为 infer_vector 有“步骤”。
当我设置 steps=0 时,我总是得到相同的向量。 phrase_vec = m.infer_vector(phrase, steps=0)
但是,我还发现文档向量是通过平均文档中的单词获得的。 like 如果文档是由‘cat-like哺乳动物’三个词组成,将‘cat’、‘like’、‘mammal’三个向量相加,然后取平均值,就是文档向量。 (如果我错了,请纠正我)
所以这里有一些问题。
- 使用 infer_vector() 0 步获取短语向量是否正确?
- 如果是词的正确平均向量得到文档向量,是否不需要使用infer_vector()?
- model.docvecs 有什么用?
【问题讨论】: