如何在gensim中获取doc2vec中的文档向量

时间:2017-11-15 06:09:07

标签: python gensim doc2vec

我知道使用print(model.docvecs['recipe__11'])获取doc2vec中给定标记的文档向量。

我的文档向量是食谱(标签以recipe__开头),报纸(标签以news__开头)或成分(标签以ingre__开头)

现在我想要检索配方的所有文档向量。我的食谱文件的模式是recipe__<some number>(例如,食谱_23,食谱_34)。我有兴趣知道是否可以使用模式获取多个文档向量(例如,以recipe__开头的标记)

请帮助我!

1 个答案:

答案 0 :(得分:4)

没有模式检索,但您可以访问model.docvecs.offset2doctag中所有已知(字符串)文档标记的列表。然后,您可以遍历该列表以查找所有匹配项,并单独检索每个匹配项。

此外,所有doc-vector都在一个大数组model.docvecs.doctag_syn0中,如果你只使用字符串doc-tags,那么offset2doctag中标记的位置就是索引在doctag_syn0中的相应向量的。这将允许您使用numpy'掩码索引'来抓取一个向量子集作为新数组,如:

recipes_mask = [tag.startswith('recipe_') for tag in model.dacvecs.offset2doctag]
recipes_vectors = model.docvecs.doctag_syn0[recipes_mask]

当然,这个矢量数组不再具有与原始数据相同位置的配方,因此您需要额外的步骤来了解{{1}中'recipe__11'向量的位置(例如) }。