假设我们使用超过100万个单词训练了一个模型。为了找到最相似的单词,我们需要计算测试单词的嵌入和100万个单词的嵌入之间的距离,然后找到最近的单词。看起来Gensim可以非常快速地计算结果。尽管如此,在我想计算最相似的单词时,我的函数非常慢。
def euclidean_most_similars (model, word, topn = 10):
distances = {}
vec1 = model[word]
for item in model.wv.vocab:
if item!= node:
vec2 = model[item]
dist = np.linalg.norm(vec1 - vec2)
distances[(node, item)] = dist
sorted_distances = sorted(distances.items(), key=operator.itemgetter(1))
我想了解Gensim是如何快速计算最接近的单词的,以及计算最相似单词的高效方法。