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

How to obtain document vectors in doc2vec in gensim

我知道使用 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 'mask indexing' 来获取向量的一个子集作为一个新数组,例如:

recipes_mask = [tag.startswith('recipe_') for tag in model.dacvecs.offset2doctag]
recipes_vectors = model.docvecs.doctag_syn0[recipes_mask]

当然,这个向量数组不再有与原始相同位置的食谱,因此您需要额外的步骤才能知道(例如)'recipe__11' 向量的位置recipes_vectors