天天看點

斯坦福大學 Glove vector的用法

可以從斯坦福大學的官方網站下載下傳訓練好的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總結出的中文向量文本。看看是否正确。

繼續閱讀