如何加快word2vec相似度计算?

问题描述 投票:0回答:1

[我使用Gensim训练了Word2Vec模型,并且我有两套单词:

S1 = {'','','' ...}
S2 = {'','','' ...}

对于S1中的每个单词w1,我想找到与w1最相似的前5个单词。我目前正在这样做:

model = w2v_model
 word_similarities = {}
 for w1 in S1:
    similarities = {}
    for w2 in S2:
       if w1 in model.wv and w2 in model.wv:
           similarity = model.similarity(w1, w2)
           similarities[w2] = similarity
    word_similarties[w1] = similarities

然后对于word_similarities中的每个单词,我可以从其dict值中获得前N个。如果S1和S2大,则速度会非常慢。

是否有更快的方法可以在Word2Vec中以基因学或张量流计算大型单词对?

tensorflow gensim
1个回答
0
投票

[取决于模型的相对大小S1S2,您可能要使用gensim的各种单词向量类的most_similar()方法-它将使用大量优化的向量比较操作来检查模型中的all向量–然后过滤到S2中的结果。

或者,如果S2model.wv的完整大小小得多,尤其是如果您将多次重复使用相同的S2字向量集,则可以考虑创建自己的[带有just KeyedVectors个单词的C0]实例,方法是:首先创建一个空的S2,然后将所有KeyedVectors个单词添加到其中,然后使用S2

© www.soinside.com 2019 - 2024. All rights reserved.