[我使用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中以基因学或张量流计算大型单词对?
[取决于模型的相对大小S1
和S2
,您可能要使用gensim的各种单词向量类的most_similar()
方法-它将使用大量优化的向量比较操作来检查模型中的all向量–然后过滤到S2
中的结果。
或者,如果S2
比model.wv
的完整大小小得多,尤其是如果您将多次重复使用相同的S2
字向量集,则可以考虑创建自己的[带有just KeyedVectors
个单词的C0]实例,方法是:首先创建一个空的S2
,然后将所有KeyedVectors
个单词添加到其中,然后使用S2
。