Python 如何在gensim中获取给定主题的文档向量

Python 如何在gensim中获取给定主题的文档向量,python,gensim,word2vec,doc2vec,Python,Gensim,Word2vec,Doc2vec,我有大约9000个文档,我正在使用Gensim的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 d

我有大约9000个文档,我正在使用Gensim的
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)
我想获得所有与“深度学习”主题相关的文件。i、 e.主要包含与深度学习相关内容的文件。是否可以在gensim的doc2vec模型中执行此操作


如果需要,我很乐意提供更多的细节。

如果您的培训集中有一个文档是“深度学习”的一个很好的例子,比如,
docs[17]
,那么在成功的培训之后,您可以要求提供与该示例文档类似的文档,这大概就是您所需要的。例如:

sims = model.docvecs.most_similar(docs[17].tags[0])

然后,您将在
sims
中列出与目标文档的
标记
最相似的10个文档的排名和评分列表

非常感谢你的回答。有没有一种更自动化的方法来寻找“深度学习”的好例子?原因是我只是以“深度学习”为例。但我们有很多话题要探讨。:)如果您对文本进行了预处理,将多单词短语(如
'deep-learning'
)转化为单个单词标记(如
'deep-u-learning'
),并且如果您使用了
Doc2Vec
模式,并且单词和文档向量都被共同训练到同一个“空间”,那么单词的向量
'deep-u-learning'
(&其他主题)可能对您的目的有所帮助。但更好的方法是手动选择示例文档,或从某些现有系统中进行分类,以匹配您需要的“深度学习”的含义。例如,Wikipedia有一个“深度学习”类别,而Arxiv有类似于
cs.AI
(人工智能)的类别&
cs.LG
(机器学习),但没有专门的“深度学习”。只要你能找到可靠标记的文档,你可以将它们添加到你的语料库和/或用作示例/查询。不过,请注意,将主题简化为“单个摘要点”(1个向量)对于真正的类别建模来说,可能不如有一系列的例子来覆盖高维文档向量空间中的异域形状区域好。因为
docs[“paper\u 3286”]。标记[0]
应该只是
“paper\u 3286”
,您可以将其简化为
sims=model.docvecs。大多数类似(“paper\u 3286”)
。您还可以提供多个正面示例&它将在返回最接近该平均值的文档之前对它们进行平均。例如:
最相似(正面=['paper\u 3286'、'paper\u 1234'、'paper\u 4077
])`。(这可能会很有帮助,或者,通过将3个示例的多样性分解为一个点,可能会比分别查看每个示例最近的-N更不有趣。您必须测试哪些适合您的需要。)在
肯定
列表中可以包含多少项没有强制的上限-因此,如果您可以构建列表,它可能会很好地传递!(但是,与其他技术相比,将许多项平均到一个点可能会使多个示例所涵盖的区域过于简单。)