Skip to main content
 首页 » 编程设计

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

2025年05月04日21zfyouxi

我知道使用 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 中的位置。