我知道使用 print(model.docvecs['recipe__11']) 获取 doc2vec 中给定标签的文档向量.
我的文档向量是食谱(标签以 recipe__ 开头)、报纸(标签以 news__ 开头)或配料(标签以 ingre__ 开头)
现在我想检索食谱的所有文档向量。我的食谱文件的模式是 recipe__<some number> (例如,recipe__23、recipe__34)。我想知道是否有可能使用一种模式获取多个文档向量(例如,以 recipe__ 开头的标签)
请帮帮我!
请您参考如下方法:
没有模式检索,但您可以在 model.docvecs.offset2doctag 中访问所有已知(字符串)文档标签的列表。然后,您可以遍历该列表以查找所有匹配项,并单独检索每个匹配项。
此外,所有文档向量都在一个大数组 model.docvecs.doctag_syn0 并且,如果您只使用字符串文档标签,那么标签在 中的位置offset2doctag 将恰好是 doctag_syn0 中相应向量的索引。这将允许您使用 numpy 的“掩码索引”来获取向量的一个子集作为一个新数组,例如:
recipes_mask = [tag.startswith('recipe_') for tag in model.dacvecs.offset2doctag]
recipes_vectors = model.docvecs.doctag_syn0[recipes_mask]
当然,这个向量数组不再具有与原始位置相同的食谱,因此您需要额外的步骤来了解(例如)“recipe__11”向量在 recipes_vectors 中的位置。
