快捷搜索: 王者荣耀 脱发

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.使用

    找出某一个词向量最相近的词集合 查看两个词的相近程度 找出不同类的词 查看某个词的向量

参考连接:

经验分享 程序员 微信小程序 职场和发展