如何通过Word2Vec准确性方法使用AnnoyIndexer

时间:2018-08-09 19:18:13

标签: python nlp gensim word2vec annoy

我已经用Word2Vec训练了一个模型,并通过完成具有不同相似性函数的类比(使用Google类比测试集)来计算其准确性。这是我正在使用的代码行(来自gensims WordEmbeddingsKeyedVectors类):

analogy_scores = vectors.accuracy(questions, 
                    most_similar=similarity_function, 
                    restrict_vocab=600000, 
                    case_insensitive=True) 

我已经成功地使用COSADD和COSMUL相似度函数计算了精度,现在正尝试使用一个烦恼的索引器将欧氏距离用作相似度度量。我已经将索引器做成这样:

indexer = AnnoyIndexer(model, 100)

WordEmbeddingsKeyedVectors中的most_like函数将索引器作为参数。在我的代码中,我重写了此函数,然后将其传递给烦人的索引器,然后尝试运行准确性方法,但所有分数均返回为0。但是,当我运行代码时:

print(most_similar(vectors, positive=['family', 'cars'], negative=['families']))

我得到正确的答案(汽车)。

是否有人在此之前使用烦人的索引器/知道我在做什么错?

0 个答案:

没有答案