Word2Vec 介紹
Word2Vec 是一種用於生成詞嵌入(word embeddings)的模型,由 Google 的研究團隊於 2013 年提出。它能夠將詞彙映射到一個低維度的向量空間,使得相似的詞在向量空間中距離較近。
Word2Vec 的兩種主要模型
- Skip-Gram:給定一個詞,預測其上下文中的詞。適用於處理稀有詞。
- 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
代碼解釋
- 語料準備:將文本數據分割成句子,並進一步分割成詞,形成一個列表。
- 訓練模型:使用
Word2Vec類訓練模型,設置向量維度、窗口大小、最小詞頻和工作線程數。 - 獲取詞向量:通過
model.wv['詞']獲取指定詞的詞向量。 - 查找相似詞:使用
most_similar方法查找與指定詞相似的詞。 - 保存和加載模型:可以將訓練好的模型保存到文件中,並在需要時加載。
總結
Word2Vec 是一種高效的詞嵌入生成方法,能夠有效捕捉詞彙之間的語義關係。通過使用 Gensim 庫,可以方便地訓練和使用 Word2Vec 模型,以應用於各種自然語言處理任務。