二、(2)浅析Word2vec,用python实现

word2vec详细介绍可点击链接阅读,https://www.jianshu.com/p/471d9bfbd72f

本文主要想简单通过python来实现word2vec的基本用法。

直接上代码:

一、训练语料。

本文语料是一百条有关交通的新闻。
二、(2)浅析Word2vec,用python实现

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 23 18:53:04 2019

@author: sun
"""

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
import logging

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

    # Word2Vec第一个参数代表要训练的语料
    # sg=1 表示使用Skip-Gram模型进行训练
    # size 表示特征向量的维度,默认为100。大的size需要更多的训练数据,但是效果会更好. 推荐值为几十到几百。
    # window 表示当前词与预测词在一个句子中的最大距离是多少
    # min_count 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5
    # workers 表示训练的并行数
    #sample: 高频词汇的随机降采样的配置阈值,默认为1e-3,范围是(0,1e-5)

def A():
    #首先打开需要训练的文本
    shuju = open('./JT.txt', 'rb')
    #通过Word2vec进行训练
    model = Word2Vec(LineSentence(shuju), sg=1,size=100, window=10, min_count=5, workers=15,sample=1e-3)
    #保存训练好的模型
    model.save('JT2.word2vec')

    print('训练完成')

if __name__ == '__main__':
    A()

在上述代码中,“JT.txt” 是已经通过结巴分词后的,需要被训练的语料,"JT2.word2vec"是训练后保存的模型。在word2vec中还有其他一些参数,详细解释可点击链接阅读。https://blog.****.net/laobai1015/article/details/86540813

二、检验训练效果。

import gensim

#下载训练后的模型
model=gensim.models.Word2Vec.load('./JT2.word2vec')

#输出和汽车 最相关的10个词
sim_words = model.most_similar(positive=['汽车'],topn=10)
for word,similarity in sim_words:
    print(word,similarity)    
    
#输出车站在模型中的词向量   
print(model['车站'])  

和“汽车”相近的词:

二、(2)浅析Word2vec,用python实现

“车站”的词向量:

[ -3.99617478e-03 -8.42301130e-01 -1.91624373e-01 -2.57280141e-01
-1.99531883e-01 -9.99595001e-02 -4.36594814e-01 2.77595043e-01
-6.69971779e-02 2.22072661e-01 -4.33529951e-02 -2.75201708e-01
5.37148058e-01 -6.42490208e-01 8.26712400e-02 -3.42381001e-01
1.48432016e-01 -1.70811996e-01 5.46859145e-01 -1.29136771e-01
-4.91735518e-01 2.34507650e-01 -1.93046540e-01 -4.70029831e-01
-3.55265468e-01 -1.26235351e-01 -4.69821058e-02 -4.54914004e-01
-1.91622257e-01 3.98421109e-01 3.47891122e-01 3.35320830e-01
-3.48750442e-01 1.39239594e-01 6.77331761e-02 1.72758341e-01
-1.47676453e-01 -1.01529941e-01 -4.68272895e-01 -2.84336567e-01
-3.95052075e-01 2.82757729e-01 2.30331302e-01 3.27667892e-01
-5.98397434e-01 -1.65743843e-01 8.12771469e-02 2.25961670e-01
3.80508035e-01 -2.75910586e-01 -1.32021546e-01 8.55941102e-02
-5.63332319e-01 1.32398427e-01 1.07391514e-01 -2.96956360e-01
1.38347015e-01 8.86966824e-04 2.66584247e-01 9.41862687e-02
-1.66088656e-01 -1.04070380e-01 4.79509383e-01 2.38687277e-01
-1.97600022e-01 -5.88618368e-02 -3.59285735e-02 -2.13329375e-01
-4.68408987e-02 9.27845389e-02 -4.57490236e-02 -6.36305153e-01
-2.61739135e-01 -1.52758896e-01 1.41239852e-01 7.62244537e-02
1.26383543e-01 -5.52194081e-02 2.95691520e-01 -4.21892315e-01
-1.05874695e-01 -1.28889278e-01 3.01765203e-01 6.95611358e-01
-3.46034110e-01 2.48466190e-02 3.19861859e-01 -2.63475746e-01
4.36591417e-01 8.51064920e-02 5.28248608e-01 -3.40788126e-01
-1.57362387e-01 -3.76916707e-01 2.05832273e-01 2.17302427e-01
-6.60309374e-01 -2.29266912e-01 -8.40716297e-04 -5.13948262e-01]

搞定收工。

“☺☺☺ 若本篇文章对你有一丝丝帮助,请帮顶、评论点赞,谢谢。☺☺☺”

↓↓↓↓