本文介紹如何使用gensim.models.KeyedVectors類來加載和操作詞向量模型(gensim的版本是4.0.0)
我們可以從 Tencent AI Lab Embedding Corpus for Chinese Words and Phrases 下載一個訓練好的詞向量模型——Tencent_AILab_ChineseEmbedding.tar.gz,解壓得到Tencent_AILab_ChineseEmbedding.txt,接着我們用KeyedVectors讀取這個txt文件,並進行各種操作。
首先先查看一下這個文件,由於文件巨大,無法直接用記事本打開,於是我們使用python進行讀取
f = open(r'./Tencent_AILab_ChineseEmbedding.txt', 'r', encoding='UTF-8')
for i in range(10):
a = f.readline()
print(a)
f.close()
文件的第一行表示該文件中共包含8824330個詞向量,每個詞向量是200維的,接下來的每一行就是詞以及對應的向量
接着我們來讀取模型
from gensim.models import KeyedVectors
# 讀取詞向量模型
tc_wv_model = KeyedVectors.load_word2vec_format(r'./Tencent_AILab_ChineseEmbedding.txt', binary=False)
上面所示的方式是將模型中的全部數據讀入,由於模型中包含的詞的數量十分龐大,因此這種方式非常耗費時間和內存空間,可以通過設置參數limit來限制讀入的詞向量,這樣就會按序從頭讀取規定數量的詞向量,一般而言,在這個詞模型中,使用越頻繁的詞就會越靠前。
# 讀取詞向量模型(限定前10000個詞)
tc_wv_model = KeyedVectors.load_word2vec_format(r'./Tencent_AILab_ChineseEmbedding.txt', binary=False, limit=10000)
# 獲取“詞-索引”字典
tc_wv_model.key_to_index
# 查詢詞語“地球”對應的詞向量
tc_wv_model.word_vec('地球')
# 查詢與“郭靖”最相近的詞
tc_wv_model.most_similar('郭靖')
參考文獻:
騰訊詞向量介紹