【问题标题】:How to get the Document Vector from Doc2Vec in gensim 0.11.1?如何从 gensim 0.11.1 中的 Doc2Vec 获取文档向量?
【发布时间】:2016-06-11 12:45:03
【问题描述】:

有没有办法从 gensim 0.11.1 版本的 Doc2Vec 中获取未见和已见文档的文档向量?

  • 例如,假设我在 100 万上训练模型 - 我可以得到 那 1000 个文档的文档向量?

  • 有没有办法让看不见的文档组成文档向量
    来自同一个词汇?

【问题讨论】:

    标签: python gensim word2vec doc2vec


    【解决方案1】:

    对于第一个要点,您可以在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 2018-08-14
      • 2017-03-17
      • 1970-01-01
      相关资源
      最近更新 更多