python-word2vec模块使用详解

这里,我们不讲word2vec的原理(其实是还了解不透彻,以后明白了再写,大家在阅读本文之前,可以先简单了解一下其推理过程),就只了解其参数和输入输出。网上还有对word2vec用tensorflow进行的实现,以后再说吧。

1.Word2vec作用:表达不同词之间的相似和类比关系

2.安装方法:pip install --upgrade gensim #因为Gensim开发了一套工具箱叫做gensim,里面继承了Word2vec方法。

3.输入参数格式:

import gensim
#sentences=[["a","b"],["b","c"] ... ]
sentences=word2vec.Text8Corpus("test.txt")  #text8为语料库文件名
#sentences是训练所需预料,可通过该方式加载,此处训练集为英文文本或分好词的中文文本

sentences是训练所需材料,可通过两种格式载入:
1.文本格式:
将每篇文章 分词去停用词后,用空格分割,将其存入txt文本中(每一行一篇文章)
在这里插入图片描述
这个格式文本处理后,便可通过 sentences=word2vec.Text8Corpus("test.txt") 将其读取为参数格式

2.list嵌套格式
将每篇文章 分词去停用词后,存入list中。
即[ [第一篇文章分词结果] , [第二篇文章分词结果], …]
在这里插入图片描述
4.模型构建参数详解:
在得到正确形式的sentences参数,便可将其带入生成模型的函数中,生成模型:

model=gensim.models.Word2Vec(sentences,sg=1,size=100,window=5,min_count=2,negative=3,sample=0.001,hs=1,workers=4)

#该步骤也可分解为以下三步(但没必要):
#model=gensim.model.Word2Vec() 建立一个空的模型对象
#model.build_vocab(sentences) 遍历一次语料库建立词典
#model.train(sentences) 第二次遍历语料库建立神经网络模型

#sg=1是skip—gram算法,对低频词敏感,默认sg=0为CBOW算法
#size是神经网络层数,值太大则会耗内存并使算法计算变慢,一般值取为100到200之间。
#window是句子中当前词与目标词之间的最大距离,3表示在目标词前看3-b个词,后面看b个词(b在0-3之间随机)
#min_count是对词进行过滤,频率小于min-count的单词则会被忽视,默认值为5。
#negative和sample可根据训练结果进行微调,sample表示更高频率的词被随机下采样到所设置的阈值,默认值为1e-3,
#negative: 如果>0,则会采用negativesamping,用于设置多少个noise words
#hs=1表示层级softmax将会被使用,默认hs=0且negative不为0,则负采样将会被选择使用。
#workers是线程数,此参数只有在安装了Cpython后才有效,否则只能使用单核

Word2vec官方手册上还有很多参数说明:
在这里插入图片描述
我们并不需要全部了解,大部分参数都可以使用其默认值(不输入),而其中比较重要的有:

# min_count,是去除小于min_count的单词
# size,神经网络层数
# sg, 算法选择
# window, 句子中当前词与目标词之间的最大距离
# workers,线程数

5.模型操作:
在构建好模型model后:
1.保存模型:

model.save("文本名")	#模型会保存到该 .py文件同级目录下,该模型打开为乱码
#model.wv.save_word2vec_format("文件名",binary = "Ture/False")  #通过该方式保存的模型,能通过文本格式打开,也能通过设置binary是否保存为二进制文件。但该模型在保存时丢弃了树的保存形式(详情参加word2vec构建过程,以类似哈夫曼树的形式保存词),所以在后续不能对模型进行追加训练

.save保存的模型打开:
在这里插入图片描述
.wv.save_word2vec_format保存的模型打开:
在这里插入图片描述
2.加载模型:

#对.sava保存的模型的加载:
gensim.models.Word2Vec.load("模型文件名")

#对..wv.save_word2vec_format保存的模型的加载:
model = model.wv.load_word2vec_format('模型文件名')

3.模型追加训练:

model.train(more_sentences)

如果对..wv.save_word2vec_format加载的模型进行追加训练,会报错:
AttributeError: 'Word2VecKeyedVectors' object has no attribute 'train'

6.输出:

计算一个词的最近似的词:
model.most_similar("word",topn=10)	#计算与该 词最近似的词,topn指定排名前n的词

计算两个词的相似度:
model.similarity("word1","word2")  

获取词向量(有了这个不就意味着可以进行相关词语的加减等运算,虽然我不是太懂):
model ['word']

结果(因为用于测试的文本数量不足,所得数据可能不太准确):
在这里插入图片描述

  • 60
    点赞
  • 308
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
Word2Vec是一种将单表示为向量的方法,它可以用于自然语言处理中的多项任务,如文本分类、情感分析、机器翻译等。在Python中,我们可以使用gensim库来实现Word2Vec。 首先,需要安装gensim库。可以使用以下命令进行安装: ``` pip install gensim ``` 接下来,导入gensim库,并加载数据集。这里以使用gensim自带的语料库text8作为示例。 ``` import gensim from gensim.models import Word2Vec from gensim.test.utils import common_texts, get_tmpfile # 加载text8数据集 path = get_tmpfile("text8") corpus_file = gensim.corpora.Text8Corpus('text8') ``` 接着,我们可以使用Word2Vec模型对数据进行训练。以下是一个简单的示例。 ``` # 训练模型 model = Word2Vec(corpus_file, size=100, window=5, min_count=5, workers=4) # 获取单的向量表示 vector = model.wv['dog'] ``` 在这个示例中,我们使用Word2Vec模型对text8数据集进行训练,设置向量维度为100,窗口大小为5,最小频为5,使用4个线程进行训练。然后,我们可以使用model.wv获取单的向量表示,例如获取单“dog”的向量表示。 除了获取单的向量表示之外,Word2Vec还提供了其他一些方法,如获取相似单、寻找不同之处等。以下是一些示例代码: ``` # 获取相似单 sim_words = model.wv.most_similar('dog', topn=10) # 寻找不同之处 diff = model.wv.doesnt_match(['dog', 'cat', 'tree', 'house']) ``` 以上是Word2Vec的一些基本用法,更多详细内容可以参考gensim官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值