首先准备符合规定输入的语料:

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词向量相关推荐

  1. NLP 利器 Gensim 来训练 word2vec 词向量模型的参数设置

    使用 Gensim 来训练 word2vec 词向量模型的参数设置 文章目录 一.最小频次 min_count 二.词向量维度 size 三.并行处理核心数 workers 我们可以使用一些参数设置来 ...

  2. 【NLP】维基百科中文数据训练word2vec词向量模型——基于gensim库

    前言   本篇主要是基于gensim 库中的 Word2Vec 模型,使用维基百科中文数据训练word2vec 词向量模型,大体步骤如下: 数据预处理 模型的训练 模型的测试 准备条件: Window ...

  3. 文本分布式表示(三):用gensim训练word2vec词向量

    今天参考网上的博客,用gensim训练了word2vec词向量.训练的语料是著名科幻小说<三体>,这部小说我一直没有看,所以这次拿来折腾一下. <三体>这本小说里有不少人名和一 ...

  4. 使用gensim框架及Word2Vec词向量模型获取相似词

    使用gensim框架及Word2Vec词向量模型获取相似词 预备知识 Word2Vec模型下载 加载词向量模型 预备知识 gensim框架 gensim是基于Python的一个框架,它不但将Pytho ...

  5. 【python gensim使用】word2vec词向量处理中文语料

    word2vec介绍 word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间 ...

  6. python训练Word2Vec词向量

    一.模型训练 1.安装gensim pip install gensim gensim中封装了包括word2vec.doc2vec等模型,word2vec采用了CBOW(Continuous Bag- ...

  7. 应用 - gensim如何得到word2vec词向量

    从三个方面去说明 word2vec词向量中文语料处理(python gensim word2vec总结) python训练work2vec词向量系列函数(python gensim) python训练 ...

  8. 维基百科简体中文语料训练word2vec词向量

    步骤: 1.下载维基百科中文语料 2.使用工具从压缩包中抽取正文文本 3.将繁体字转简体字 4.分词 5.训练模型 6.测试模型 1.下载维基百科中文语料 语料下载地址:https://dumps.w ...

  9. 【NLP】word2vec词向量模型训练——基于tensorflow

    前言   维基百科中文数据训练word2vec词向量模型--基于gensim库   上文我们使用了 gensim 库中的 Word2vec 模块训练词向量模型,本篇我们通过 tensorflow 自己 ...

最新文章

  1. mysql 主从复制 双主从复制原理   防止主键重复问题(必看)
  2. 随风摆动效果_扫盲贴!节目中的AR虚拟效果,使用物理引擎后有什么不同?
  3. 微软成功测试氢燃料电池,为数据中心连续供电 48 小时
  4. Scala中使用两种方式对单词进行次数统计(wordCount)
  5. 《自卑与超越》读书笔记(part5)--如果教育者把性格和智力的发展都归之于遗传,那么教育就没有什么意义了
  6. S/4HANA和CRM Fiori应用的搜索分页实现
  7. 项目架构开发:数据访问层之Cache
  8. input内容右对齐_向右打方向倒库过程中,如何判断后车距离?光线较暗车库倒库技巧...
  9. 免费mac虚拟机下载 快速安装win系统
  10. Android平板app图标,安卓手机应用图标显示为默认的机器人,平板显示正常
  11. 深度学习笔记_术语/缩写/基本概念
  12. 使用 Python 进行科学计算 使用 Python 进行科学计算
  13. NoSQL数据库的介绍、NoSQL的产品、NoSQL数据库的分类等;
  14. 潘多拉固件设置ipv6_OpenWRT IPv6配置
  15. 【EasyAR实战项目】图像识别+模型交互(全网首发,保姆级教程)
  16. 坤坤音效键盘(Python实现)
  17. idea 删除当一行或者选中行的快捷键
  18. [SDOI2013]项链
  19. 软件测试行业到底有没有前景和出路?(最全面)
  20. 详解Java 12新特性:switch表达式

热门文章

  1. [转载] 羽毛球——学打羽毛球 08 接发球 发球
  2. mac下配置android sdk环境 安装eclipse
  3. 2004-11-3 + 扩展Forms验证
  4. 面试官系统精讲Java源码及大厂真题 - 24 举一反三:队列在 Java 其它源码中的应用
  5. Oracle 12C DataGuard部署以及维护
  6. Docker for windows 容器内网通过独立IP直接访问的方法
  7. 止欲知足,为获得幸福生活的根本法则之一
  8. 牛逼哄哄的 MQ 到底有啥用?
  9. 【Java】while和do-while循环比较测试案例
  10. 【Python爬虫】信息组织与提取方法