Tensorflow 如何加速word2vec相似度计算?

Tensorflow 如何加速word2vec相似度计算?,tensorflow,gensim,Tensorflow,Gensim,我使用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.

我使用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
然后,对于单词中的每个单词的相似性,我可以从它的dict值中得到前N。如果S1和S2较大,则速度会非常慢


在genism或tensorflow中,有没有一种更快的方法来计算Word2Vec中的大型词对?

根据您的模型的相对大小,
S1
,&
S2
,您可能需要使用gensim各种词向量类的
最相似的()
方法-这将使用批量,优化了向量比较操作,以检查模型中的所有向量,然后在
S2
中筛选结果


<> p> >如果<代码> S2比Myto.Wv 的大小要小很多,特别是如果您将重复使用相同的<代码> S2< /Cord>多个单词向量集,您可以考虑创建自己的<代码>密钥向量实例,用<强> > <>强> >代码> S2< /代码>单词,首先创建一个空的
keyedVector
,然后将所有
S2
单词添加到其中,然后使用
S2。最相似的(正数=[target\u word\u vector],topn=5)

您能根据第二个建议编写解决方案吗?请参阅
keyedVector.add()
方法: