我知道使用print(model.docvecs['recipe__11'])
获取doc2vec中给定标记的文档向量。
我的文档向量是食谱(标签以recipe__
开头),报纸(标签以news__
开头)或成分(标签以ingre__
开头)
现在我想要检索配方的所有文档向量。我的食谱文件的模式是recipe__<some number>
(例如,食谱_23,食谱_34)。我有兴趣知道是否可以使用模式获取多个文档向量(例如,以recipe__
开头的标记)
请帮助我!
答案 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'向量的位置(例如) }。