Word2Vec 介紹

Word2Vec 是一種用於生成詞嵌入(word embeddings)的模型,由 Google 的研究團隊於 2013 年提出。它能夠將詞彙映射到一個低維度的向量空間,使得相似的詞在向量空間中距離較近。

Word2Vec 的兩種主要模型

  1. Skip-Gram:給定一個詞,預測其上下文中的詞。適用於處理稀有詞。
  2. CBOW (Continuous Bag of Words):給定上下文中的詞,預測中心詞。適用於頻繁詞。

特點

  • 捕捉語義關係:Word2Vec 能夠捕捉到詞與詞之間的語義關係,例如“國王 - 男人 + 女人 = 女王”。
  • 高效性:使用負採樣和層次 Softmax 等技術,使得訓練速度快且內存佔用低。

代碼示例

以下是使用 Python 和 Gensim 庫實現 Word2Vec 的簡單示例。

安裝依賴

首先,確保安裝了 Gensim 庫:

pip install gensim

示例代碼

import gensim
from gensim.models import Word2Vec

# 示例語料,分詞後的句子列表
sentences = [
    ['我', '愛', '自然語言處理'],
    ['詞嵌入', '是', '一種', '有效', '的', '表示', '方法'],
    ['深度學習', '在', '自然語言處理', '中', '有', '廣泛', '的', '應用'],
    ['機器學習', '和', '深度學習', '是', '人工智能', '的', '重要', '組成部分']
]

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

# 獲取詞向量
word_vector = model.wv['自然語言處理']
print("自然語言處理的詞向量:", word_vector)

# 查找與某個詞相似的詞
similar_words = model.wv.most_similar('自然語言處理', topn=5)
print("與“自然語言處理”相似的詞:", similar_words)

# 保存模型
model.save("word2vec.model")

# 加載模型
loaded_model = Word2Vec.load("word2vec.model")

Find More

代碼解釋

  1. 語料準備:將文本數據分割成句子,並進一步分割成詞,形成一個列表。
  2. 訓練模型:使用 Word2Vec 類訓練模型,設置向量維度、窗口大小、最小詞頻和工作線程數。
  3. 獲取詞向量:通過 model.wv['詞'] 獲取指定詞的詞向量。
  4. 查找相似詞:使用 most_similar 方法查找與指定詞相似的詞。
  5. 保存和加載模型:可以將訓練好的模型保存到文件中,並在需要時加載。

總結

Word2Vec 是一種高效的詞嵌入生成方法,能夠有效捕捉詞彙之間的語義關係。通過使用 Gensim 庫,可以方便地訓練和使用 Word2Vec 模型,以應用於各種自然語言處理任務。