我正在尝试不使用KNN函数来实现KNN。训练完Doc2vec模型后,是否有任何方法可以返回每个元组的列表(每种形式为(vector,tag)),因为我在训练期间已将标记设置为类?我这样做是为了为测试示例向量和训练集中的每个向量计算余弦相似度,并基于该向量进行排序,取k个最高值,并使用标记进行多数表决。
从我搜索的内容中,我可以得到一个单词的向量,而不是经过训练的向量的标签。而且,我使用了most_like方法,该方法会返回一些我需要的输出,但它使用的是数据,而我只希望训练集和测试数据示例中的向量之间的差异作为排序标准,同时还要提供标签。
答案 0 :(得分:0)
如果您有Doc2Vec
模型d2v_model
,则可以通过以下方式获得在训练中学习到的(字符串)标签的列表:
d2v_model.docvecs.index2entity
对于任何给定的标签,您可以通过以下方式获取其确切的矢量:
vec = d2v_model.docvecs[tag]
如果要查找向量接近某个目标向量的标记,则可以将most_similar()
方法与带有原始target_vec
作为其positive
参数的列表一起使用:
nearest = d2v_model.docvecs.most_similar(positive=[target_vec])
如果您还需要其他内容,请更加清楚培训数据的形式。 (例如,您的文档每个都只包含一个标识符ID,还是重复的类标签,或者两者都包含?)