Word2Vec

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28840013/article/details/89681499
这里,我们不讲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是训练所需预料,可通过该方式加载,此处训练集为英文文本或分好词的中文文本
1
2
3
4
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后才有效,否则只能使用单核
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Word2vec官方手册上还有很多参数说明:

我们并不需要全部了解,大部分参数都可以使用其默认值(不输入),而其中比较重要的有:

# min_count,是去除小于min_count的单词
# size,神经网络层数
# sg, 算法选择
# window, 句子中当前词与目标词之间的最大距离
# workers,线程数
1
2
3
4
5
5.模型操作:
在构建好模型model后:
1.保存模型:

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

.wv.save_word2vec_format保存的模型打开:

2.加载模型:

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

#对..wv.save_word2vec_format保存的模型的加载:
model = model.wv.load_word2vec_format('模型文件名')
1
2
3
4
5
3.模型追加训练:

model.train(more_sentences)

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

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

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

获取词向量(有了这个不就意味着可以进行相关词语的加减等运算,虽然我不是太懂):
model ['word']
1
2
3
4
5
6
7
8
结果(因为用于测试的文本数量不足,所得数据可能不太准确):

---------------------
版权声明:本文为CSDN博主「这是一个死肥宅」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_28840013/article/details/89681499

转载于:https://www.cnblogs.com/flymin/p/11352039.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值