我知道要使用doc2vec中的给定标签获取文档向量print(model.docvecs['recipe__11'])。
我的文档向量是食谱(标签以开头recipe__),报纸(标签以开头news__)或配料(标签以开头ingre__)
现在,我想检索配方的所有文档向量。我的配方文件的格式是recipe__<some number>(例如,配方__23,配方__34)。我想知道是否有可能使用一种模式(例如,以开头的标签recipe__)获得多个文档向量
请帮我!
没有模式检索功能,但是您可以访问中所有已知(字符串)文档标签的列表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。