训练模型
利用gensim.models.Word2Vec(sentences)建立词向量模型
该构造函数执行了三个步骤:建立一个空的模型对象,遍历一次语料库建立词典,第二次遍历语料库建立神经网络模型可以通过分别执行model=gensim.models.Word2Vec(),model.build_vocab(sentences),model.train(sentences)来实现
训练时可以指定以下参数
min_count指定了需要训练词语的最小出现次数,默认为5
size指定了训练时词向量维度,默认为100
worker指定了完成训练过程的线程数,默认为1不使用多线程。只有注意安装Cython的前提下该参数设置才有意义
查询查询查询查询查询查询结果训练可以通过model.save('fname')或model.save_word2vec_format(fname)来保存为文件,使用再model.load(fname)或model.load_word2vec_format(fname,encoding='utf-8')读取查询结果

例如:

from gensim.models.word2vec import Word2Vec

sentences = [['A1','A2'],[],[],....]
model= Word2Vec()
model.build_vocab(sentences)
model.train(sentences,total_examples = model.corpus_count,epochs = model.iter)

保存:
model.save('/tmp/MyModel')
#model.save_word2vec_format('/tmp/mymodel.txt',binary = False)
#model.save_word2vec_format('/tmp/mymodel.bin.gz',binary = True)

前一组方法保存的文件不能利用文本编辑器查看但是保存了训练的全部信息,可以在读取后追加训练
后一组方法保存为word2vec文本格式但是保存时丢失了词汇树等部分信息,不能追加训练

追加加训练:
model = gensim.models.Word2Vec.load('/tmp/mymodel')
model.train(more_sentences)
加载:
model = gensim.models.Word2Vec.load('/tmp/mymodel')

#model = gensim.models.KeyedVectors.load_word2vec_format('/tmp/vectors.txt',binary = False)
#model = gensim.models.KeyedVectors。load_word2vec_format('/tmp/vectors.bin',binary = True)
##使用gzipped / bz2输入也可以,不需要解压:
#model = gensim.models.KeyedVectors.load_word2vec_format('/tmp/vectors.bin.gz',binary=True)

模型使用:

获取词向量
print(model ['man'])
print(type(model ['man']))
输出:
[0.14116223 0.05663395 0.01500377 -0.03592452 ...]
numpy.ndarray
计算一个词的最近似的词,倒排序
model.most_similar(['男人'])

输出:
[('女',0.7664012908935547),
( '男孩',0.6824870109558105),
( '青少年',0.6586930155754089),
( '女孩',0.5921714305877686),
( '强盗',0.5585119128227234),
( '男',0.5489763021469116),
('人',0.5420035719871521),
( '人',0.5342026352882385),
( '绅士',0.5337990522384644),
( '摩托车手',0.5336882472038269)]

计算两词之间的余弦相似度
word2vec一个很大的亮点:支持词语的加减运算(实际中可能只有少数例子比较符合)
model.most_similar(positive = ['woman','king'],negative = ['man'],topn = 2)
输出:
[('王后',0.7118192911148071),('君主',0.6189675331115723)]
---
model.similarity('女人', '男人')
输出:
0.7664012234410319

计算两个集合之间的余弦似度
当出现某个词语不在这个训练集合中的时候,会报错!
list1 = ['我','走','我','学校']
list2 = ['我','去','家']
list_sim1 = model.n_similarity(list1,list2)
print(list_sim1)

输出:
0.772446878519
选出集合中不同类的词语
model.doesnt_match('breakfast cereal dinner lunch'.split())
输出:
'谷类'

gensim Word2Vec 训练和使用(Model一定要加载到内存中,节省时间!!!)的更多相关文章

  1. C# DataGridVie利用model特性动态加载列

    今天闲来无事看到ORm的特性映射sql语句.我就想到datagridview也可以用这个来动态添加列.这样就不用每次都去界面上点开界面填列了. 代码简漏希望有人看到了能指点一二. 先定义好Datagr ...

  2. [Tensorflow] 使用 model.save_weights() 保存 / 加载 Keras Subclassed Model

    在 parameters.py 中,定义了各类参数. # training data directory TRAINING_DATA_DIR = './data/' # checkpoint dire ...

  3. pytorch GPU训练好的模型使用CPU加载

    torch.load('tensors.pt') # 把所有的张量加载到CPU中 torch.load('tensors.pt', map_location=lambda storage, loc: ...

  4. 使用word2vec训练中文词向量

    https://www.jianshu.com/p/87798bccee48 一.文本处理流程 通常我们文本处理流程如下: 1 对文本数据进行预处理:数据预处理,包括简繁体转换,去除xml符号,将单词 ...

  5. pytorch 加载训练好的模型做inference

    前提: 模型参数和结构是分别保存的 1. 构建模型(# load model graph) model = MODEL() 2.加载模型参数(# load model state_dict) mode ...

  6. 学习笔记TF016:CNN实现、数据集、TFRecord、加载图像、模型、训练、调试

    AlexNet(Alex Krizhevsky,ILSVRC2012冠军)适合做图像分类.层自左向右.自上向下读取,关联层分为一组,高度.宽度减小,深度增加.深度增加减少网络计算量. 训练模型数据集 ...

  7. [深度学习] Pytorch(三)—— 多/单GPU、CPU,训练保存、加载模型参数问题

    [深度学习] Pytorch(三)-- 多/单GPU.CPU,训练保存.加载预测模型问题 上一篇实践学习中,遇到了在多/单个GPU.GPU与CPU的不同环境下训练保存.加载使用使用模型的问题,如果保存 ...

  8. 利用python中的gensim模块训练和测试word2vec

    word2vec的基础知识介绍参考上一篇博客和列举的参考资料. 首先利用安装gensim模块,相关依赖如下,注意版本要一致: Python >= 2.7 (tested with version ...

  9. 解决在使用gensim.models.word2vec.LineSentence加载语料库时报错 UnicodeDecodeError: 'utf-8' codec can't decode byte......的问题

    在window下使用gemsim.models.word2vec.LineSentence加载中文维基百科语料库(已分词)时报如下错误: UnicodeDecodeError: 'utf-8' cod ...

随机推荐

  1. Linux 内存机制【转载】

    原文地址:http://blog.csdn.net/tianlesoftware/article/details/5463790 一. 内存使用说明 Free 命令相对于top 提供了更简洁的查看系统 ...

  2. C#-MVC开发微信应用(6)--用户分组信息管理

    让我们继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发.本篇继续上一篇的介绍,主要介绍分组管理方面的开发应用,这篇的内容和上一篇,作为一个完整的用户信息和分组信息管理的组合. 1. ...

  3. 基于Tcp协议的简单Socket通信实例(JAVA)

    好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...

  4. A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets(中英双语)

    文章标题 A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets 且谈Apache Spark的API三剑客:RDD.Dat ...

  5. linux每日命令(21):find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. 一. exec参数说明: -exec 参数后面跟的是com ...

  6. Android Launcher分析和修改12——Widget列表信息收集

    很久没写Launcher分析的文章,最近实在太忙.今天七夕本来是想陪女朋友逛街 ,碰巧打台风呆在家里,就继续写一篇文章.今天主要是讲一下Launcher里面的Widget列表,这方面信息比较多,今天重 ...

  7. JVM 内部原理(七)— Java 字节码基础之二

    JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...

  8. Android美丽的对话框项目sweet-alert-dialog

    美丽的对话框 sweet-alert-dialog 项目地址: https://github.com/pedant/sweet-alert-dialog android原生的dialog太生硬了,之前 ...

  9. spring mvc中获取请求URL

    String baseUrl=request.getScheme()+"://"+request.getServerName()+":"+request.get ...

  10. 【转】详解在visual studio中使用git版本系统(图文)

    http://blog.csdn.net/wojilu/article/details/6976230 很多人已经在使用git(或正在转移到git上),在github.com上,也看到不少国内同学的开 ...