通過gensim,加載預訓練詞向量,獲取embedding_matrix

使用預訓練的詞向量

1. 加載詞向量

# 加載訓練好的詞向量模型

import gensim

Word2VecModel = gensim.models.Word2Vec.load(詞向量模型所在路徑) # 讀取詞向量

2. 構造包含所有詞語的 list,以及初始化 “詞語-索引”字典 和 “詞向量”矩陣

# 獲取某一個詞的向量表示

In[1]: Word2VecModel.wv['申請'].shape

Out[1]: (300,)

構造{詞語:索引}字典

#  2 構造包含所有詞語的 list,以及初始化 “詞語-序號”字典 和 “詞向量”矩陣

import numpy as np

vocab_list = [word for word, Vocab in Word2VecModel.wv.vocab.items()]# 存儲 所有的 詞語

word_index = {" ": 0} # 初始化 `[word : token]` ,後期 tokenize 語料庫就是用該詞典。使用前必須添加一個索引0.
word_vector = {} # 初始化`[word : vector]`字典

# 初始化存儲所有向量的大矩陣,留意其中多一位(首行),詞向量全爲 0,用於 padding補零。
# 行數 爲 所有單詞數+1 比如 10000+1 ; 列數爲 詞向量“維度”比如100。
embedding_matrix = np.zeros((len(vocab_list) + 1, Word2VecModel.vector_size))

詞向量中不重複詞語個數

len(vocab_list)

3. 填充初始化 “詞語-索引”字典 和 “詞向量”矩陣

## 3 填充 上述 的字典 和 大矩陣

for i in range(len(vocab_list)):
    # print(i)
    word = vocab_list[i]  # 每個詞語
    word_index[word] = i + 1 # 詞語:索引
    word_vector[word] = Word2VecModel.wv[word] # 詞語:詞向量
    embedding_matrix[i + 1] = Word2VecModel.wv[word]  # 詞向量矩陣

查看embedding_matrix的信息

In[1]: embedding_matrix.shape
Out[1]: (42236, 300)
  • 前一個數表示tokenize 語料庫中詞語大小(因爲有空值,需要減去1,故該詞向量中不重複詞語個數爲42235)
  • 後一個數表示詞向量維度

值此,我們獲取了embedding_matrix,這也是使用詞向量的目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章