21. Gensim 模組

柯頌竹
Programming with Data
Jan 19, 2021

Gensim(generate similarity)是一個有名的 NLP 函式庫,本文即是在介紹其基本概念、特色及程式碼

基本概念

Gensim 模組是從以下三個概念展開:語料庫(corpus)、向量(vector)、模型(model)。

  • 語料庫(Corpus):一組原始文本的集合,用於訓練文本主題的隱含結構。語料中不需要人工標注的附加信息。我們可以載入需要的語料庫,如果沒有適合的語料庫,也可以考慮下載維基百科的資料
  • 向量(Vector):由一組文本特徵構成的列表,會形成什麼特徵,是依照您所選定的模型決定。是一段文本在Gensim中的內部表達
  • 模型(Model):是一個抽象的術語。定義了兩個向量空間的變換(即從文本的一種向量表達變換為另一種向量表達)

特色

  • Memory independence:不需要一次性將整個訓練語料讀入記憶體,Gensim 充分利用了Python 內置的生成器(generator)和迭代器(iterator)用於串流式數據處理,記憶體效率是 Gensim 設計目標之一
  • Memory sharing:訓練好的模型可以保存到硬碟,和重載到記憶體中。多個執行序之間可以共享相同的數據,減少了記憶體消耗
  • 多種向量空間算法的高效實現:包括 Word2Vec,Doc2Vec,FastText,TF-IDF,LSA,LDA,隨機映射等
  • 支持多種數據結構
  • 基於語義表示的文檔相似度查詢

程式碼

安裝指令:

pip install --upgrade gensim

若要尋找最相近的詞彙,方法如下:

step 1:

安裝 gensim 套件,下載 text8 語料庫 並將之解壓縮在需要執行的 .ipynb 檔同目錄下

step 2:

載入 gensim 與其 word2vec 模型

step 3:

訓練並儲存 word2vec 模型,這裡的 word2vec 模型參數的含意是 :

  1. size : 詞向量的維度
  2. min_count 指一個詞出現的次數若小於 min_count,則拋棄不參與訓練
  3. window:訓練窗格大小,白話來說,一個詞在看上下文關係時,上下應該各看幾個字的意思

補充:儲存與載入 word2vec 模型的寫法

step 4:

執行並觀察詞向量訓練的結果

--

--

柯頌竹
Programming with Data

熱愛自由行、參觀各種形式的展覽,踏上過20個國家的領土。歡迎詢問各種在歐洲自由行的問題。偶爾分享一下資料分析的讀書筆記。