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

1 python gensim doc2vec

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

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

现在,我想检索配方的所有文档向量。我的配方文件的格式是recipe__<some number>(例如,配方__23,配方__34)。我想知道是否有可能使用一种模式(例如,以开头的标签recipe__)获得多个文档向量

请帮我!

goj*_*omo 5

没有模式检索功能,但是您可以访问中所有已知(字符串)文档标签的列表model.docvecs.offset2doctag。然后,您可以遍历该列表以查找所有匹配项,并分别进行检索。

另外,所有doc矢量都在一个大数组中,model.docvecs.doctag_syn0并且,如果仅使用字符串doc标签,则标签在中的位置offset2doctag将恰好是相应矢量的索引doctag_syn0。这样,您就可以使用numpy的“掩码索引”将向量的子集作为新数组来获取,例如:

recipes_mask = [tag.startswith('recipe_') for tag in model.dacvecs.offset2doctag]
recipes_vectors = model.docvecs.doctag_syn0[recipes_mask]
Run Code Online (Sandbox Code Playgroud)

当然,此向量数组不再具有与原始位置相同的配方,因此您需要额外的步骤才能知道“ recipe__11”向量在何处recipes_vectors