1.ubuntu下安装gensim

refer to: ubuntu 14.04 安装gensim

为了保证安装成功,首先升级一下easy_install工具。

sudo easy_install -U setuptools

之后使用easy_install进行安装,使用apt-get安装会遇到编码出错,不知为什么,使用easy_install安装成功就行了。

sudo easy_install --upgrade gensim

结果在import gensim 中还出现了点小错误,缺少了平pattern模块,所以直接pip 安装。

sudo pip install pattern

2.训练生成模型

安装完成之后,就来训练模型。
refer:中英文维基百科语料上的word2vec实验

模型的训练如下:

# ################# 例1 #########################
# import modules & set up logging
import gensim, logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)sentences = [['first', 'sentence'], ['second', 'sentence']]
# train word2vec on the two sentences
model = gensim.models.Word2Vec(sentences, min_count=1)

在本次的实验中,我们的数据是保存在txt文件中的。每一行对应一个句子(已经分词,以空格隔开),我们可以直接用LineSentence把txt文件转为所需要的格式。

# ################# 例2 #########################
from gensim import Word2Vec
from gensim.Word2Vec import LineSentence# inp为输入语料
inp = 'wiki.zh.text.jian.seg.txt'
# outp1 为输出模型
outp1 = 'wiki.zh.text.model'
# outp2为原始c版本word2vec的vector格式的模型
outp2 = 'wiki.zh.text.vector'
model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())
model.save(outp1)
model.save_word2vec_format(outp2, binary=False)

关于Word2Vec(…) 模型的参数说明(refer to: gensim实现python对word2vec的训练和计算和word2vec使用说明):

**LineSentence(inp):**应该是把word2vec训练模型的磁盘存储文件(model在内存中总是不踏实)转换成所需要的格式;对应的格式是参考上面的例1。
**size:**是每个词的向量维度;
**window:**是词向量训练时的上下文扫描窗口大小,窗口为5就是考虑前5个词和后5个词;
**min-count:**设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃;
**workers:**是训练的进程数(需要更精准的解释,请指正),默认是当前运行机器的处理器核数。这些参数先记住就可以了。

说明一下输入语料,输入的是文本文件的格式,其中没一行表示一个文章,而且是经过分词处理的。词与词之间用空格隔开就行了。分词的工具有很多,我一般用的是结巴分词(不知道大家以后没有好的分词工具推荐)。一般来说,训练集越大,结果的泛化性越好,对于专业领域的话,最好能使用专业领域的语料来进行训练。

class LineSentence(object):"""Iterate over a file that contains sentences: one line = one sentence.Words must be already preprocessed and separated by whitespace."""def __init__(self, source, max_sentence_length=MAX_WORDS_IN_BATCH, limit=None):"""Parameters----------source : string or a file-like objectPath to the file on disk, or an already-open file object (must support `seek(0)`).limit : int or NoneClip the file to the first `limit` lines. Do no clipping if `limit is None` (the default).Examples--------.. sourcecode:: pycon>>> from gensim.test.utils import datapath>>> sentences = LineSentence(datapath('lee_background.cor'))>>> for sentence in sentences:...     pass"""self.source = sourceself.max_sentence_length = max_sentence_lengthself.limit = limitdef __iter__(self):"""Iterate through the lines in the source."""try:# Assume it is a file-like object and try treating it as such# Things that don't have seek will trigger an exceptionself.source.seek(0)for line in itertools.islice(self.source, self.limit):line = utils.to_unicode(line).split()i = 0while i < len(line):yield line[i: i + self.max_sentence_length]i += self.max_sentence_lengthexcept AttributeError:# If it didn't work like a file, use it as a string filenamewith utils.open(self.source, 'rb') as fin:for line in itertools.islice(fin, self.limit):line = utils.to_unicode(line).split()i = 0while i < len(line):yield line[i: i + self.max_sentence_length]i += self.max_sentence_length

3.导入模型

# -*- coding: utf-8 -*-
# <nbformat>3.0</nbformat>import gensim
# 导入模型
model = gensim.models.Word2Vec.load("wiki.zh.text.model")

4. 模型使用

可以参照官网上的指导迅速了解model的各种功能方法。

4.0 获取词向量

     print model[u'汽车']type(model[u'汽车'])
# 结果
[  3.74845356e-01   1.86477005e+00   1.28353190e+00   8.04618478e-01 ... ]
numpy.ndarray

4.1 计算一个词的最近似的词,倒排序

result = model.most_similar(u'足球')
for each in result:print each[0] , each[1]
国际足球 0.556692957878
足球运动 0.530436098576
篮球 0.518306851387
国家足球队 0.516140639782
足球队 0.513238489628
足球联赛 0.500901579857
football 0.500162124634
体育 0.499264538288
足球比赛 0.488131582737
冰球 0.48725092411

4.2 计算两词之间的余弦相似度

word2vec一个很大的亮点:支持词语的加减运算。(实际中可能只有少数例子比较符合)

>>> model.most_similar(positive=['woman', 'king'], negative=['man'])
[('queen', 0.50882536), ...]
sim1 = model.similarity(u'勇敢', u'战斗')
sim2 = model.similarity(u'勇敢', u'胆小')
sim3 = model.similarity(u'高兴', u'开心')
sim4 = model.similarity(u'伤心', u'开心')
print sim1
print sim2
print sim3
print sim4
0.254622852224
0.38974887559
0.423695453969
0.376244588456

##4.3 计算两个集合之间的余弦似度
当出现某个词语不在这个训练集合中的时候,会报错!!!。

list1 = [u'今天', u'我', u'很', u'开心']
list2 = [u'空气',u'清新', u'善良', u'开心']
list3 = [u'国家电网', u'再次', u'宣告', u'破产', u'重新']
list_sim1 =  model.n_similarity(list1, list2)
print list_sim1
list_sim2 = model.n_similarity(list1, list3)
print list_sim2
0.541874230659
0.13056320154

4.4 选出集合中不同类的词语

list = [u'纽约', u'北京', u'上海', u'西安']
print model.doesnt_match(list)
list = [u'纽约', u'北京', u'上海', u'西瓜']
print model.doesnt_match(list)
纽约
西瓜

python 下的 word2vec 学习笔记相关推荐

  1. Python实现Word2vec学习笔记

    Python实现Word2vec学习笔记 参考: 中文word2vec的python实现 python初步实现word2vec 中英文维基百科语料上的Word2Vec实验 GitHub代码地址 1 文 ...

  2. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  3. Python第三方库pygame学习笔记(一)

    Pygame Python最经典的2D游戏开发第三方库,也支持3D游戏开发 Pygame适合用于游戏逻辑验证.游戏入门及系统演示验证 Pygame是一种游戏开发引擎,基本逻辑具有参考价值 pygame ...

  4. python气象数据可视化学习笔记6——利用python地图库cnmaps绘制地图填色图并白化

    文章目录 1. 效果图 2. cnmaps简介及安装 2.1 写在前面 2.2 cnmaps简介和安装 3. 导入库 4. 定义绘图函数 4.1 使用get_adm_maps返回地图边界 4.2 ax ...

  5. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)

    全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...

  6. Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)

    全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...

  7. word2vec实例详解python_在python下实现word2vec词向量训练与加载实例

    项目中要对短文本进行相似度估计,word2vec是一个很火的工具.本文就word2vec的训练以及加载进行了总结. word2vec的原理就不描述了,word2vec词向量工具是由google开发的, ...

  8. Python中索引的学习笔记

    1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...

  9. Python地理做图——学习笔记

    Python地理做图--学习笔记 GMT 绘制海岸线 绘制地形并叠加海岸线 地理信息数据格式在线转换网址 适用OSGEO4w可以实现tif转nc,转grd 绘制grd和nc 除了投影方式-X, gmt ...

最新文章

  1. Noticaition 1.0 正式发布了
  2. python 网关控制家居_在树莓派上搭建智能家居网关
  3. 统计一下你写过多少代码
  4. 计算机视觉知识基础_我见你:计算机视觉基础知识
  5. Android Studio 安装配置问题总结
  6. python半圆代码_趣味项目:用Python代码做个月饼送给你!
  7. 「代码随想录」322. 零钱兑换 【动态规划】力扣详解!
  8. Python -day 7
  9. 人机对弈黑白棋游戏用Python tkinter的Canvas实现图形界面
  10. C# 消息盒子 右下角显示窗体
  11. C语言中short和unsigned short的取值问题和计算机组成原理
  12. PHPMyWind5.4存储XSS(CVE-2017-12984)
  13. 项目难做,程序员难当,软件开发中的 9 大难题
  14. 未能连接重庆农村商业银行服务器,急重庆农村商业银行usbkey驱动程序安装...
  15. linux下subline怎么打开终端,mac使用sublime text3打开当前文件夹的终端
  16. java购物商城_基于javaweb实现的简单购物商城
  17. Excel导出功能超时解决方案 -- 异步处理
  18. Netty —— Netty 模型
  19. 【新闻推荐系统】(task2)mysql和pymysql使用
  20. php两张图片动态合成thinkphp实现二维码及文字水印合并拼接到背景图上

热门文章

  1. 大学小说男主计算机,一部小说,男女主是大学校友,男主比较高冷,一次聚会上认识,男主对女主一见钟情,然后带去出租屋里睡了...
  2. 电脑回收站的东西删了怎么恢复?60%的人都用过这2个方法
  3. 计算机病毒相关试题,计算机病毒类考试题目以及参考答案
  4. ATV 开发 二 、内置gtvs
  5. math-常见导数公式
  6. ubuntu20.04安装PX4固件错误总结
  7. android 7.0 iso下载地址,iOS 7.0固件 全系列官方正式版下载地址
  8. 考研英语六附双语阅读:适得其反的加班文化
  9. STM32低功耗总结——转载
  10. 计算机算法——进入计算机世界