【python实现基于深度学习的文本情感分类(3)】——word2vec词向量训练

用到的模块:gensim, logging, os
原料:f.txt_cut.txt文件

word2vec代码

#encoding=utf-8
#定义模型训练函数
def model_train(train_file_name, save_model_file):  # model_file_name为训练语料的路径,save_model为保存模型名
    from gensim.models import word2vec
    import gensim
    import logging
    # 模型训练,生成词向量
    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
    sentences = word2vec.Text8Corpus(train_file_name)  # 加载语料
    model = gensim.models.Word2Vec(sentences, size=200)  # 训练skip-gram模型; 默认window=5
    model.save(save_model_file)
    model.wv.save_word2vec_format(save_model_name + ".bin", binary=True)   # 以二进制类型保存模型以便重用
    
from gensim.models import word2vec
import os
import gensim

cut_file = 'f.txt_cut.txt'
save_model_name = 'f.model'
if not os.path.exists(save_model_name):     # 判断文件是否存在
    model_train(cut_file, save_model_name)
else:
    print('此训练模型已经存在,不用再次训练')

还可以加载已训练好的词向量模型查看训练结果。

# 加载已训练好的模型
model_1 = word2vec.Word2Vec.load(save_model_name)
# 计算两个词的相似度/相关程度
y1 = model_1.wv.similarity("董明珠", "手游")
print(u"董明珠和手游的相似度为:", y1)
print("-------------------------------\n")

# 计算某个词的相关词列表
y2 = model_1.wv.most_similar("中国", topn=10)  # 10个最相关的
print(model_1.wv["中国"])
print(u"和中国最相关的词有:\n")
for item in y2:
    print(item[0], item[1])
print("-------------------------------\n")

输出结果为:
【python实现基于深度学习的文本情感分类(3)】——word2vec词向量训练_第1张图片

感觉还不错。

你可能感兴趣的:(Python)