使用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('郭靖')

参考文献:
腾讯词向量介绍

posted @ 2021-04-13 20:33  Bill_H  阅读(7298)  评论(0编辑  收藏  举报