如何在 python 中获取 gensim 中单词的最近文档

How to get the nearest documents for a word in gensim in python

我正在使用如下的 doc2vec 模型来构建我的文档向量。

from gensim.models import doc2vec
from collections import namedtuple

dataset = json.load(open(input_file))

docs = []
analyzedDocument = namedtuple('AnalyzedDocument', 'words tags')

for description in dataset:
    tags = [description[0]]
    words = description[1]
    docs.append(analyzedDocument(words, tags))

model = doc2vec.Doc2Vec(docs, vector_size = 100, window = 10, min_count = 1, workers = 4, epochs = 20)

我看到gensim doc2vec也包含词向量。假设我为单词 deep learning 创建了一个词向量。我的问题是;在python中的gensim中是否有可能获得最接近deep learning词向量的documents

如果需要,我很乐意提供更多详细信息。

一些Doc2Vec模式将co-traindoc-vectors和word-vectors在"same space"中。然后,如果您有一个 word-vector 对应 'deep_learning',您可以在该向量附近请求文档,结果可能对您有用。例如:

similar_docs = d2v_model.docvecs.most_similar(
                   positive=[d2v_model.wv['deep_learning']]
               )

但是:

  • 这只会与您的模型学到的一样好 'deep_learning' 作为一个词来表示您对它的看法

  • known-good 个符合类别 'deep_learning'(和其他类别)的文档的训练集可能会更好 - 无论您 hand-curate 那些,还是尝试 bootstrap 来自其他来源(例如维基百科类别“Deep Learning”或您信任的其他 curated/search-result 集)。

  • 将类别缩减为单个摘要点(一个向量)可能不如拥有各种示例(很多点)都适合该类别。 (相关文档可能不是围绕摘要点的整洁球体,而是填充 doc-vector high-dimensional space 的 exotically-shaped 区域。)如果你有很多很好的例子对于每个类别,您可以训练一个分类器,然后标记或 rank-in-relation-to-trained-categories 任何进一步未分类的文档。