这款工具,5分钟阅读了120个文档

393 阅读3分钟

哈喽,大家好,免费福利资源合集(持续更新中...)

kdocs.cn/l/cjpO3moWcHNr

kdocs.cn/l/cjpO3moWcHNr

kdocs.cn/l/cjpO3moWcHNr

美好的一天结束啦~

程小南开心的收拾着桌面,下班啦!

刚起身,就看对面工位上大力的电脑屏散发着神 (jia ban)(gou)的光(ri)(chang)

走进一看,大力扒着Word2Vec文档,满脸“一言难尽”的表情。

问了问,原来这兄弟看到女神每天辛辛苦苦对比文章相似度,心疼不已。

所以大力这个JAVA大汉,这会儿就在拜读自然语言处理工具,小南是看不下去了,赶紧想办法让兄弟快速入门。

Word2Vec的由来

Word2Vec诞生于2013年,由Google开源问世。

是一款计算词向量的工具。在这里我们需要辨析的是:Word2Vec不是一个算法,而是计算词向量的工具。

因此,就有了一种简单理解:Word2Vec工具其实是基于CBoW模型和Skip-gram模型的计算词向量的工具。

那么没有接触过自然语言处理的童鞋一定会好奇:“词向量又是什么呢?”

小南视图将词向量简单的解释出来,以便理解。

小南在这里用一个例子尝试说明:

::: block-1

问题:西安 - 陕西 + 江苏 = ?

简单从人的角度出发来看,西安是陕西的省会,“西安”减去“陕西”等于“省会”,“省会”加上“江苏”大概率指的就是“南京”了。

但是机器很难分析出“南京”这个结果,为了帮助机器理解文字,需要想办法将文字以数学的形式表达出来。 因此我们引入的向量的概念,因为向量是可以进行加减的,所以会将文字转化为词语,再转化为向量,由此而来了一种可以分析文字的方法。 :::

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

Word2Vec的安装

接下来我们就看一下: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

  1. 安装Microsoft Visual C++ 14.0

不然报错:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“: h

  1. 安装numpy、scipy,使用pip install即可。

Word2Vec的使用

本案例安装的版本为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

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

  • 建立模型具体参数:可以看源码
	  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,
		        ):

我说

自然语言处理中,对于文本分析有很多的工具可以使用,小南经常喜欢做案例,并对模型进行训练,所以选取了最适合自己的。

大家有好用的训练工具、方法欢迎在评论区讨论哦。

好消息

免费福利资源合集(持续更新中...)

kdocs.cn/l/cjpO3moWcHNr

kdocs.cn/l/cjpO3moWcHNr

kdocs.cn/l/cjpO3moWcHNr