• 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    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) 第二次遍历语料库建立神经网络模型
        
        • 1
        • 2
        • 3
        • 4
      • 建立模型具体参数:可以看源码
        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
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8

    安装过程遇到问题

    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:

    解决办法见此链接

  • 相关阅读:
    PHY驱动开发算法详解
    在医疗影像领域,生成式模型可以做些什么?用什么平台快速实现?使用MONAI框架进行生成式模型开发
    灾难恢复站点类型
    Centos如何安装Mysql
    基于一种交互式的光伏组件特性曲线算法(Matlab代码实现)
    Java 泛型
    在ubuntu18.04上安装pangolin
    BIM系统平台建设及实施方案
    如何在PIL图像和PyTorch Tensor之间进行相互转换,使用pytorch进行PIL和tensor之间的数据转换
    一文详细讲解 io_uring
  • 原文地址:https://blog.csdn.net/Cao_Mary/article/details/126646038