Python 實作 Text Embedding 的簡單範例

什麼是 Text Embedding?

Text Embedding 將文字轉換為數值向量,讓電腦能夠理解和處理文字。這些向量捕捉了文字的語義和語法資訊,讓我們可以進行各種自然語言處理任務,例如:

  • 相似度計算: 計算兩個文字之間的相似度
  • 分類: 將文字分為不同的類別
  • 聚類: 將相似的文字分組
  • 推薦系統: 基於用戶的歷史行為推薦相關內容

使用 Gensim 庫實作

Gensim 是一個非常流行的 Python 庫,專門用於主題建模和文件相似度分析。它提供了一個簡單的方法來訓練和使用 word embeddings。

Python

from gensim.models import Word2Vec

# Sample sentences
sentences = [['我', '喜歡', '吃', '蘋果'],
            ['蘋果', '是一種', '水果'],
            ['我', '也', '喜歡', '香蕉']]

# 訓練 Word2Vec 模型
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)

# 獲取一個詞的向量表示
print(model.wv['蘋果'])

# 計算兩個詞的相似度
print(model.wv.similarity('蘋果', '香蕉'))

# 找到與'蘋果'最相似的詞
print(model.wv.most_similar('蘋果'))

程式碼解說

  1. 導入 Gensim: 首先,我們導入 Gensim 庫。
  2. 準備資料: 我們準備了一些簡單的句子,作為訓練資料。
  3. 訓練模型:
    • vector_size: 每個詞的向量維度,可以調整。
    • window: 上下文窗口大小,即考慮多少個周圍詞來學習詞向量。
    • min_count: 忽略出現頻率少於該值的詞。
    • workers: 使用的 CPU 核心數。
  4. 獲取詞向量: 使用 model.wv['蘋果'] 可以得到 ‘蘋果’ 的向量表示。
  5. 計算相似度: model.wv.similarity 計算兩個詞的餘弦相似度。
  6. 尋找相似詞: model.wv.most_similar 找到與目標詞最相似的詞。

進一步探索

  • 其他模型: Gensim 還支持 GloVe、FastText 等其他 word embedding 模型。
  • 預訓練模型: 可以使用預訓練好的 word embedding 模型,例如 Google 的 Word2Vec 模型。
  • 句子向量: 可以對整個句子進行向量化,例如使用 Doc2Vec。
  • 深度學習模型: 可以使用深度學習模型,例如 BERT、GPT,來學習更複雜的文字表示。

注意事項

  • 資料量: 訓練一個好的 word embedding 模型需要大量的文本資料。
  • 超參數調優: 不同的任務和資料集需要調整不同的超參數。
  • 中文處理: 對於中文,需要先進行分詞,然後再訓練 word embedding 模型。

應用場景

  • 搜尋引擎: 提高搜尋結果的相關性
  • 推薦系統: 為用戶推薦相似的物品
  • 聊天機器人: 理解用戶的意圖
  • 文本分類: 將文本分為不同的類別
  • 情感分析: 分析文本的情感

這個例子只是入門級的演示。 在實際應用中,你需要根據具體的任務和資料選擇合適的模型和超參數。


Gensim 處理中文:你需要知道的事

Gensim 是一個強大的 Python 庫,主要用於主題建模和文件相似度分析。雖然它在英文文本處理上表現出色,但要處理中文,還需要一些額外的步驟。

Gensim 處理中文的挑戰與解決方案

  • 分詞: 中文不像英文有明顯的空格分隔單詞,因此需要先進行分詞。常用的中文分詞工具有 Jieba、HanLP 等。
  • 字元編碼: Gensim 預設處理的是 ASCII 編碼,對於中文,你需要確保