如何在gensim 0.11.1中从Doc2Vec获取文档向量?

时间:2016-06-11 12:45:04

标签: python gensim word2vec doc2vec

有没有办法在gensim 0.11.1版本中从Doc2Vec获取看不见和看到的文档的文档向量?

  • 例如,假设我训练了1000万的模型 - 我能得到吗? 这些1000个文档的doc向量?

  • 有没有办法获得组成的看不见的文件的文件向量 来自相同的词汇?

1 个答案:

答案 0 :(得分:8)

对于第一个项目符号点,您可以在gensim 0.11.1

中执行此操作
from gensim.models import Doc2Vec
from gensim.models.doc2vec import LabeledSentence

documents = []
documents.append( LabeledSentence(words=[u'some', u'words', u'here'], labels=[u'SENT_1']) )
documents.append( LabeledSentence(words=[u'some', u'people', u'words', u'like'], labels=[u'SENT_2']) )
documents.append( LabeledSentence(words=[u'people', u'like', u'words'], labels=[u'SENT_3']) )


model = Doc2Vec(size=10, window=8, min_count=0, workers=4)
model.build_vocab(documents)
model.train(documents)

print(model[u'SENT_3'])

这里SENT_3是一个已知的句子。

对于第二个项目符号点,您不能在gensim 0.11.1中执行此操作,您必须将其更新为0.12.4。这个最新版本有infer_vector函数,可以为看不见的文档生成一个向量。

documents = []
documents.append( LabeledSentence([u'some', u'words', u'here'], [u'SENT_1']) )
documents.append( LabeledSentence([u'some', u'people', u'words', u'like'], [u'SENT_2']) )
documents.append( LabeledSentence([u'people', u'like', u'words'], [u'SENT_3']) )


model = Doc2Vec(size=10, window=8, min_count=0, workers=4)
model.build_vocab(documents)
model.train(documents)

print(model.docvecs[u'SENT_3']) # generate a vector for a known sentence
print(model.infer_vector([u'people', u'like', u'words'])) # generate a vector for an unseen sentence