word2vec的安装与使用(linux python版本)

word2vec介绍

word2vec是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
除了google自己的word2vec工具,感兴趣的牛人们也相继编写了各自不同的版本,下面列举一下目前出现的版本以及相对应的地址,供大家选择。如下表:
版本 地址:
C | http://word2vec.googlecode.com/svn/trunk/ |
python | http://radimrehurek.com/gensim/ |
Java | https://github.com/ansjsun/Word2VEC_java |
C++ | https://github.com/jdeng/word2vec |

word2vec的安装

本文介绍Ubuntu linux环境下安装python版本的word2vec。
1.先安装cython:

sudo pip install Cython

  1. 安装 word2vec: sudo pip install word2vec

sudo pip install word2vec

word2vec的使用

准备python环境,安装pycharm

PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
1官网选择Free,open-source的pycharm的linux版本的安装包下载。
2.解压

tar zxvf pycharm-community-2017.2.4.tar.gz


3.打开bin文件,打开终端,输入./pycharm.sh,回车之后就可以运行该软件了,之后软件会自动在启动器添加快捷方式。
4.打开pycharm,创建project->word2vec



5.新建test.py文件



接着就可以在test.py中编写测试word2vec的相关代码了。

准备语料库

http://mattmahoney.net/dc/text8.zip 下载text8.zip文件,并解压到/usr/bin/python2.7/word2vec下面(text8是一个将近100M的文本文件)


语料库text8内容如下:

使用word2vec训练词向量

1.先导入word2vec包

import word2vec
word2vec.word2vec('text8','text8.txt',size=100,binary=0,verbose=True)

训练得到的词向量为:


word2vec(train, output, size=100, window=5, sample='1e-3', hs=0,
negative=5, threads=12, iter_=5, min_count=5, alpha=0.025,
debug=2, binary=1, cbow=1, save_vocab=None, read_vocab=None,
verbose=False)
word2vec的常用参数介绍:
train:要训练的文件;
output:输出的词向量文件;
size:词向量维度大小;
window=5:训练的窗口,训练的窗口为5就是考虑一个词的前5个词和后5个词(实际代码中还有一个随机选窗口的过程,窗口大小<=5) ;
sample:采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就会被采样;
hs:如果为1则会采用hierarchica·softmax技巧。如果设置为0,则negative sampling会被使用;
negative:如果>0,则会采用negativesamp·ing,用于设置多少个noise words;
min_count:可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5;
binary:表示输出的结果文件是否采用二进制存储,0表示不使用(即普通的文本存储,可以打开查看),1表示使用,即vectors.bin的存储类型;
cbow:是否使用cbow模型,0表示使用skip-gram模型,1表示使用cbow模型,默认情况下是skip-gram模型,cbow模型快一些,skip-gram模型效果好一些 ;
save_vocab:词汇表保存到文件;
read_vocab:词汇表从文件中读取,不从训练数据中读取。

2.下面介绍一些有关word2vec的使用

word2vec.word2vec('text8','text8.bin',size=100,verbose=True)

通过训练预料生成bin二进制模型,模型生成后下次执行可以不用再调用该语句,直接用下面的方法加载即可。

model = word2vec.load("text8.bin")

查看词向量的大小

model.vectors.shape


查看词向量内容

model.vectors


查看'dog'的词向量内容

model['dog'].shape
model['dog'][:10]


查找与词'socks'余弦相似度大的词

indexes, metrics = model.cosine('socks')
model.generate_response(indexes, metrics)

其他的使用可参考:
http://nbviewer.jupyter.org/github/danielfrg/word2vec/blob/master/examples/word2vec.ipynb

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前面的文章主要从理论的角度介绍了自然语言人机对话系统所可能涉及到的多个领域的经典模型和基础知识。这篇文章,甚至之后...
    我偏笑_NSNirvana阅读 14,105评论 2 64
  • 1.NLP当前热点方向 词法/句法分析 词嵌入(word embedding) 命名实体识别(Name Entit...
    __Aragorn阅读 6,096评论 1 9
  • 我们考虑到孩子以后上学要搬家,不会长期居住,所以当初装修一切从简,不过也足够我们一家三口使用。 以前每隔二三天,我...
    周周妹阅读 619评论 0 0
  • 去年,因为一次管理论坛,我结识了杨在涛先生,因为一篇连夜赶起的总结稿,杨在涛先生结识了我。他是个很有意思的人,不似...
    禾月heyue阅读 1,010评论 0 0
  • 文|中药味的吧啦啦 列车缓缓的行驶在夜幕中,林夏躺在硬卧上翻来覆去,车厢里一直有人在叽叽喳喳的说些故事,那些失望的...
    河恩呐阅读 627评论 4 9