Python gensim库使用word2vec 加载和保存模型
1. 训练
读取训练数据并使用jieba分词,可以准备自己想要训练的语料,
import os import jieba # 读取训练数据 pos_file_list = os.listdir(data/pos) neg_file_list = os.listdir(data/neg) pos_file_list = [fdata/pos/{x} for x in pos_file_list] neg_file_list = [fdata/neg/{x} for x in neg_file_list] pos_neg_file_list = pos_file_list + neg_file_list # 分词 for file in pos_neg_file_list: with open(file, r, encoding=utf-8) as f: text = f.read().strip() # 去读文件,并去除空格 text_cut = jieba.cut(text) # 使用jieba进行分词 result = .join(text_cut) # 把分词结果用空格组成字符串 with open(test.txt, a, encoding=utf-8) as fw: fw.write(result) # 把分好的词写入到新的文件里面 pass pass pass
准备好分词后的文件,在一般的NLP处理中,会需要去停用词。由于word2vec的算法依赖于上下文文,而上下文有可能就是停用词。因此对于word2vec,我们可以不用去停用词
现在我们可以直接读分词后的文件到内存。这里使用了word2vec提供的LineSentence类来读文件,然后套用word2vec的模型
读取分好的词,进行训练
from gensim.models import word2vec sentences = word2vec.LineSentence(test.txt) model = word2vec.Word2Vec(sentences, hs=1, min_count=1, window=3, size=100)
2. 加载和保存模型
gensim生成的模型有三种: 第一种是 默认的model文件(可以继续 进行tuning) 第二种是bin文件(c风格) 第三种是 txt文件(比较大) from gensim.models import Word2Vec
# 第一种 model = Word2Vec.load(word2vec.model) model.save(word2vec.model) # 第二种 model = gensim.models.KeyedVectors.load_word2vec_format(word2vec.bin,binary=True) model.wv.save_word2vec_format(word2vec.bin) # 第三种 gensim.models.KeyedVectors.load_word2vec_format(word2vec.txt,binary=False) model.wv.save_word2vec_format(word2vec.txt)
3.使用
-
找出某一个词向量最相近的词集合 查看两个词的相近程度 找出不同类的词 查看某个词的向量
参考连接: