如何在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
。
我知道使用 print(model.docvecs['recipe__11'])
.
我的文档向量是食谱(标签以 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
。