在做NLP的一些深度学习任务中,需要从提前训练好的词向量中读取词的向量表示,若自己写代码读取文件,代码相对长一些
可以利用KeyedVectors 进行向量的读取
文件的内容如下:
代码如下所示:
#coding:utf-8 import gensim from gensim.models import KeyedVectors word2vec_model_path = './data/data_vec.txt' ##词向量文件的位置 word2vec_model = KeyedVectors.load_word2vec_format(word2vec_model_path, binary=False,unicode_errors='ignore') word2vec_dict = {} for word, vector in zip(word2vec_model.vocab, word2vec_model.vectors): if '.bin' not in word2vec_model_path: word2vec_dict[word] = vector else: word2vec_dict[word] = vector /np.linalg.norm(vector) for each in word2vec_dict: print (each,word2vec_dict[each])
运行的结果如下所示:
如果不用KeyedVectors,则需要文件的读取,以及一行一行的读取文件的内容,分别截取出词以及词所对应的向量,这样做起来比较麻烦,搞不好还会使后续的代码出现编码问题,尤其在python2编码问题会经常出现