使用gensim之KeyedVectors操作词向量模型
本文介绍如何使用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('郭靖')
参考文献:
腾讯词向量介绍