调用gensim库训练word2vec词向量
首先准备符合规定输入的语料:
import jieba
raw_text = ["你站在桥上看风景","看风景的人在楼上看你","明月装饰了你的窗子","你装饰了别人的梦"]
texts = [[word for word in jieba.cut(text,cut_all=True)] for text in raw_text]
经过运算,得到语料的输入格式如下所示:
[['你', '站', '在', '桥上', '看', '风景'],['看', '风景', '的', '人', '在', '楼上', '看', '你'],['明月', '装饰', '了', '你', '的', '窗子'],['你', '装饰', '了', '别人', '的', '梦']]
每一个语料句子以列表的形式表示在一个大列表中,句子经过jieba分词后按顺序表示在列表中,如上所示。
接着调用gensim模块中的word2vec功能,对上述语料进行训练:
from gensim.models import Word2Vec as wtv
model = wtv(texts,min_count=2,window=5,sg=1,size=5,iter=10)
这里简单对word2vec模块的重要参数进行简要介绍:
- sentences:用于训练词向量的语料,可以是一个列表,当数据量较大时也可以从文本中遍历读出;
- size:词向量的维度,默认值为100,这里的取值一般与语料大小相关,如果语料库较大,建议适当增大维度;
- window:即上下文窗口,默认值为5,可以根据实际的情况如训练速度要求、语料大小等进行动态调整;
- sg:即word2vec中两个模型的选择,默认为0,表示CBOW模型,更改为1则是skip-gram模型;
- negative:使用负采样时负样本的个数,取推荐值为5~20;
- min_count:需要计算词向量的词的最小词频,可以去掉一些很生僻的低频词,默认为5、如果是小语料,可以调低此值;
- iter:随机梯度下降法中迭代的最大次数,默认为5。对于大语料,可以增大这个值;
- alpha:在随机梯度下降法中迭代的初始步长,默认为0.25;
训练好模型后,为了能够持续使用,我们可以把上面训练好的模型进行保存,也就是保存上述模型的词向量参数:
from gensim.models import Word2Vec as wtv
model = wtv(texts,min_count=2,window=5,sg=1,size=5,iter=10) # 训练模型
model.save("C:/model/word2vec_model") # 保存模型
如果我们要加载上面保存的模型,可以使用下面的方法:
from gensim.models import Word2Vec as wtv
word_model = wtv.load("C:/model/word2vec_model") # 加载模型词向量参数
如果我们在训练得到word2vec模型之后,又获得更多的数据,当我们希望将新的数据放进已经训练好的模型时,可以使用下面的方法:
from gensim.models import Word2Vec as wtv
word_model = wtv.load("C:/model/word2vec_model") # 加载模型词向量参数
word_model.train([["我","爱","你","们"]], total_examples=1, epochs=10) #基于新语料更新词向量表示
这种方法可以对现有word2vec的词向量进行更新,在实操的时候,train函数中的训练数据如果出现新的词,并不会更新到现有的词向量矩阵中。
举个例子,已经训练好的word2vec词表有[“我”,“爱”,“你”]三个词,给定一个新语料[“我”,“喜”,“欢”,“你”],新语料只会调整原有词中的“我”“你”的词向量表示,而不会将“喜”“欢”添加到词库中。
训练得到一个word2vec词表后,如果我们想查询词表中某个词的向量表示,可以使用下面的方法:
import jieba
raw_text = ["你站在桥上看风景","看风景的人在楼上看你","明月装饰了你的窗子","你装饰了别人的梦"]
texts = [[word for word in jieba.cut(text,cut_all=True)] for text in raw_text]
from gensim.models import Word2Vec as wtv
model = wtv(texts,min_count=2,window=5,sg=1,size=5,iter=10)
model["你"] # 输入词“你”的词向量表示
通过list(model.wv.vocab)
可以观看model的词有哪些:
import jieba
raw_text = ["你站在桥上看风景","看风景的人在楼上看你","明月装饰了你的窗子","你装饰了别人的梦"]
texts = [[word for word in jieba.cut(text,cut_all=True)] for text in raw_text]
from gensim.models import Word2Vec as wtv
model = wtv(texts,min_count=2,window=5,sg=1,size=5,iter=10)
list(model.wv.vocab)
通过下面的方法可以将词和其对应的词向量保存为.txt文件:
import jieba
raw_text = ["你站在桥上看风景","看风景的人在楼上看你","明月装饰了你的窗子","你装饰了别人的梦"]
texts = [[word for word in jieba.cut(text,cut_all=True)] for text in raw_text]
from gensim.models import Word2Vec as wtv
model = wtv(texts,min_count=2,window=5,sg=1,size=5,iter=10)
model.wv.save_word2vec_format('F:/word.txt', binary=False)
不断更新。。。
调用gensim库训练word2vec词向量相关推荐
- NLP 利器 Gensim 来训练 word2vec 词向量模型的参数设置
使用 Gensim 来训练 word2vec 词向量模型的参数设置 文章目录 一.最小频次 min_count 二.词向量维度 size 三.并行处理核心数 workers 我们可以使用一些参数设置来 ...
- 【NLP】维基百科中文数据训练word2vec词向量模型——基于gensim库
前言 本篇主要是基于gensim 库中的 Word2Vec 模型,使用维基百科中文数据训练word2vec 词向量模型,大体步骤如下: 数据预处理 模型的训练 模型的测试 准备条件: Window ...
- 文本分布式表示(三):用gensim训练word2vec词向量
今天参考网上的博客,用gensim训练了word2vec词向量.训练的语料是著名科幻小说<三体>,这部小说我一直没有看,所以这次拿来折腾一下. <三体>这本小说里有不少人名和一 ...
- 使用gensim框架及Word2Vec词向量模型获取相似词
使用gensim框架及Word2Vec词向量模型获取相似词 预备知识 Word2Vec模型下载 加载词向量模型 预备知识 gensim框架 gensim是基于Python的一个框架,它不但将Pytho ...
- 【python gensim使用】word2vec词向量处理中文语料
word2vec介绍 word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间 ...
- python训练Word2Vec词向量
一.模型训练 1.安装gensim pip install gensim gensim中封装了包括word2vec.doc2vec等模型,word2vec采用了CBOW(Continuous Bag- ...
- 应用 - gensim如何得到word2vec词向量
从三个方面去说明 word2vec词向量中文语料处理(python gensim word2vec总结) python训练work2vec词向量系列函数(python gensim) python训练 ...
- 维基百科简体中文语料训练word2vec词向量
步骤: 1.下载维基百科中文语料 2.使用工具从压缩包中抽取正文文本 3.将繁体字转简体字 4.分词 5.训练模型 6.测试模型 1.下载维基百科中文语料 语料下载地址:https://dumps.w ...
- 【NLP】word2vec词向量模型训练——基于tensorflow
前言 维基百科中文数据训练word2vec词向量模型--基于gensim库 上文我们使用了 gensim 库中的 Word2vec 模块训练词向量模型,本篇我们通过 tensorflow 自己 ...
最新文章
- mysql 主从复制 双主从复制原理 防止主键重复问题(必看)
- 随风摆动效果_扫盲贴!节目中的AR虚拟效果,使用物理引擎后有什么不同?
- 微软成功测试氢燃料电池,为数据中心连续供电 48 小时
- Scala中使用两种方式对单词进行次数统计(wordCount)
- 《自卑与超越》读书笔记(part5)--如果教育者把性格和智力的发展都归之于遗传,那么教育就没有什么意义了
- S/4HANA和CRM Fiori应用的搜索分页实现
- 项目架构开发:数据访问层之Cache
- input内容右对齐_向右打方向倒库过程中,如何判断后车距离?光线较暗车库倒库技巧...
- 免费mac虚拟机下载 快速安装win系统
- Android平板app图标,安卓手机应用图标显示为默认的机器人,平板显示正常
- 深度学习笔记_术语/缩写/基本概念
- 使用 Python 进行科学计算 使用 Python 进行科学计算
- NoSQL数据库的介绍、NoSQL的产品、NoSQL数据库的分类等;
- 潘多拉固件设置ipv6_OpenWRT IPv6配置
- 【EasyAR实战项目】图像识别+模型交互(全网首发,保姆级教程)
- 坤坤音效键盘(Python实现)
- idea 删除当一行或者选中行的快捷键
- [SDOI2013]项链
- 软件测试行业到底有没有前景和出路?(最全面)
- 详解Java 12新特性:switch表达式