python調用word2vec工具包安裝和使用指南


python調用word2vec工具包安裝和使用指南

word2vec python-toolkit installation and use tutorial

本文選譯自英文版,代碼注釋均摘自本文,建議先閱讀skip-model相關知識再閱讀本指南
github倉庫地址

環境准備

  1. 安裝gcc, 安裝gcc坑比較多,這里建議使用codeblocks自帶的gcc編譯器,下載地址,這里注意,一定要點擊codeblocks-mingw版本,安裝完成后設置環境變量Path, INCLUDE, LIB
  2. 嘗試安裝:pip install word2vec, 觀察報錯情況,這里有幾種解決方法,我遇到的報錯是Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/ 解決方法是下載microsoft vc++下載指南, 還有其他可能的錯誤,鏈接如下:報錯列表,題外話:安裝python工具包時,先查閱pypi,可以避免一些錯誤

模型的訓練

​ 導入模型import word2vec

  1. 同義詞合並,例如michael jacson和 michael-jackson

    word2vec.word2phrase('./txt_file/text8', './txt_file/text8-phrases', verbose=True)
    
  2. 訓練skip-gram model, 得到word2vec詞向量表示,size為向量的維數

    word2vec.word2vec('/Users/drodriguez/Downloads/text8-phrases', '/Users/drodriguez/Downloads/text8.bin', size=100, verbose=True)
    
  3. 輸出text8.bin文件,包含二進制形式的詞向量組

  4. 詞向量的應用:單詞聚類,產生text8-clusters.txt包含所有單詞的聚類結果, 結果數目小於等於單詞表數目

    word2vec.word2clusters('/Users/drodriguez/Downloads/text8', '/Users/drodriguez/Downloads/text8-clusters.txt', 100, verbose=True)
    

model模型的使用

  1. 導入剛才產生的模型

    model = word2vec.load('/Users/drodriguez/Downloads/text8.bin')
    
  2. model的屬性 model.vocab, 得到單詞表的numpy.array格式,這里的單詞不是詞向量形式

  3. model.vectors是模型的矩陣,n為單詞數目,m為詞向量長度,vectors為n*m維

  4. 可以通過model['dog'].shape或者model['dog'][:10]來訪問某一個單詞的詞向量信息

  5. 計算幾個詞向量兩兩之間的距離:model.distance("dog", "cat", "fish")

  6. 得到某一個單詞的相似詞(基於余弦相似度):indexes, metrics = model.similar("dog"),第一個返回值為相似向量的下標,第二個為相似度,都為tuple格式,得到相應的單詞可使用model.vocab[indexes]

  7. 得到相似詞的統計信息:(詞,相似度)model.generate_response(indexes, metrics),還可以使用model.generate_response(indexes, metrics).tolist()來轉換得到python數據類型

  8. 詞向量直接加減運算:indexes, metrics = model.analogy(pos=['king', 'woman'], neg=['man']),返回值和generate_response method相同

cluster模型的使用

  1. 導入cluster模型

    clusters = word2vec.load_clusters('/Users/drodriguez/Downloads/text8-clusters.txt')
    
  2. 得到某一組結果clusters.get_words_on_cluster(90),結果為這一組的所有單詞

cluster和model的結合使用

  1. 將cluster添加到word2vec model中

    model.clusters = clusters
    
  2. 進行類似的加減分析:indexes, metrics = model.analogy(pos=["paris", "germany"], neg=["france"])

  3. 得到結果后,model.generate_response(indexes, metrics).tolist(),得到(單詞,相似程度,所屬組號)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM