可以從斯坦福大學的官方網站下載下傳訓練好的Glove Vector。網址如下:
斯坦福大學Glove網址:https://nlp.stanford.edu/projects/glove/
檔案很大。最小的也有822M。
拿到檔案後,不能直接用在gensim中。還需要增加一行。比如glove.6B.50d.txt 就需要增加 “400000 50”。表示有400000個詞,次元是50。(有部落格說增加400001是錯誤的。我的程式會報錯)
可以使用下面的代碼修改:
out_file=open("g.50.txt","w+",encoding="utf-8")
out_file.write("40000 50\n")
with open("glove.6B.50d.txt","r",encoding="utf-8") as f:
s=f.readlines()
for x in s:
out_file.write(x)
out_file.close()
修改完成後,就可以直接用gensim的子產品來使用glove的向量了。代碼如下:
import gensim
model = gensim.models.KeyedVectors.load_word2vec_format("g.50.txt")
for key in model.similar_by_word(r'brother', topn=10):
print(key)
結果如下:
('son', 0.944932758808136)
('cousin', 0.9340510368347168)
('father', 0.9322627782821655)
('nephew', 0.9301477670669556)
('uncle', 0.9147958755493164)
('friend', 0.8713178634643555)
('elder', 0.8581332564353943)
('grandson', 0.8516241312026978)
('sons', 0.8418697118759155)
('grandfather', 0.8392235040664673)
後面會寫一篇使用Mittens總結出的中文向量文本。看看是否正确。