Word2Vec的安装与使用


本案例在win10系统中,使用Python 3.6.5,Word2Vec 0.11.1【word2vec版本不同,使用上有一些差异,尤其在给方法、类传递参数时】。建议能用新的尽量都用新包。

Word2Vec介绍

我们看一下官网怎么说吧:

Python interface to Google word2vec.
Training is done using the original C code, other functionality is pure Python with numpy
在这里插入图片描述

Word2Vec诞生于2013年,由Google开源问世。
是一款计算词向量的工具。在这里我们需要辨析的是:Word2Vec不是一个算法,而是计算词向量的工具。
因此,就有了一种简单理解:Word2Vec工具其实是基于CBoW模型和Skip-gram模型的计算词向量的工具。
那么没有接触过自然语言处理的童鞋一定会好奇:“词向量又是什么呢?”
在这里用一个例子尝试说明:

问题:西安 - 陕西 + 江苏 = ?
简单从人的角度出发来看,西安是陕西的省会,“西安”减去“陕西”等于“省会”,“省会”加上“江苏”大概率指的就是“南京”了。
但是机器很难分析出“南京”这个结果,为了帮助机器理解文字,需要想办法将文字以数学的形式表达出来。
因此我们引入的向量的概念,因为向量是可以进行加减的,所以会将文字转化为词语,再转化为向量,由此而来了一种可以分析文字的方法。

说了这么多,再来看对Word2Vec的简单定义:**Word2Vec工具其实是基于CBoW模型和Skip-gram模型的计算词向量的工具。**是不是就更清楚了嘞?

Word2Vec安装

方法1. 可以安装gensim,应为gensim是一个工具箱,里面包含了Word2Vex:
pip install gensim
方法2. 也可以直接安装Word2Vex。需要注意的是安装word2vec需要gcc依赖,如果没有gcc的话,会安装失败。
pip install Word2Vex

注意,安装Word2Vex前需要安装:

  • 1.安装gcc。不然报错:error:could not build wheels for word2vec, which is required to install pyproject.toml-based project
  • 2.Microsoft Visual C++ 14.0。不然报错:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“: h
  • 3.安装numpy、scipy,使用pip install即可

Word2Vec使用

  1. 在本次Word2Vec 0.11.1版本中使用:
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
import numpy as np

# sentence = LineSentence("content.txt")  #如果语料是文件,可以使用LineSentence准备训练语料
sentence = [["小明", "今天", "要", "去", '少年宫', "游泳"]]  # 准备训练预料
model = Word2Vec(sentences = sentence, vector_size=5, window=5, min_count=1, workers=4) # 生成模型
word_vectors = model.wv['小明'] # 输出词语的向量映射
print(word_vectors) # [-0.06810732 -0.01892805  0.11537147 -0.15043278 -0.0787221 ]
moresentence = [["小明", "和", "小明", "哥哥", "不要", "去", '少年宫', "游泳"]] # 准备训练预料
model.train(corpus_iterable = moresentence, epochs = 1, total_words = 1) # 训练模型
model.save('train_demo.model') # 保存模型
model = Word2Vec.load('train_demo.model')  # 加载模型
# 使用模型
result = model.wv.most_similar(positive=['今天', '游泳'], negative=['少年宫'], topn=2) # 使用模型找出相近的10个词,'今天', '游泳'对相似性有正面贡献,'少年宫'有负面贡献
print(result) # [('去', 0.714894711971283), ('要', -0.5734316110610962)]
distance = model.wv.distance("少年宫", "小明") # 两个单词的距离
print(distance) # 0.22581267356872559
  1. 在之前的Word2Vec版本中使用
from gensim.models import Word2Vec
sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
model = Word2Vec(sentences, size=100, window=5, min_count=1, workers=4)
#model.build_vocab(sentences, update=True)  # prepare the model vocabulary
model.train(sentences, total_examples=model.corpus_count, epochs=model.iter)  # train word vectors
model.save('test2.model')
model = Word2Vec.load('test2.model') #加载语料

最终的使用方法以源码为主,源码中有备注案例,大家可以查看。

  1. 注意:
    • 建立模型分解步骤:model = Word2Vec(sentence, vector_size=300, window=5, min_count=1, workers=4) # 生成训练模型
      # 该步骤也可分解为以下三步(但没必要):
      model=gensim.model.Word2Vec() 建立一个空的模型对象
      model.build_vocab(sentences) 遍历一次语料库建立词典
      model.train(sentences) 第二次遍历语料库建立神经网络模型
      
    • 建立模型具体参数:可以看源码
      class Word2Vec(utils.SaveLoad):
            def __init__(
                    self, sentences=None, corpus_file=None, vector_size=100, alpha=0.025, window=5, min_count=5,
                    max_vocab_size=None, sample=1e-3, seed=1, workers=3, min_alpha=0.0001,
                    sg=0, hs=0, negative=5, ns_exponent=0.75, cbow_mean=1, hashfxn=hash, epochs=5, null_word=0,
                    trim_rule=None, sorted_vocab=1, batch_words=MAX_WORDS_IN_BATCH, compute_loss=False, callbacks=(),
                    comment=None, max_final_vocab=None, shrink_windows=True,
                ):
      

安装过程遇到问题

1. error:could not build wheels for word2vec, which is required to install pyproject.toml-based project:

解决办法见此链接

2.error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“: h:

解决办法见此链接

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值