word2vec的使用参数解释和应用场景
1. word2vec原生代码运行
搭建word2vec环境
安装Cywin
因为我用的服务器是windows sever,所以需要装了cywin
安装过程参考:
Windows下使用Word2vec继续词向量训练
下载word2vec
因为word2vec现在已经集成到了tensorflow中,所以官网上svn已经没法下到了
这里找到了别人在github的word2vec项目可以使用:地址
使用word2vec
用cywin切换到word2vec目录下,进入./src文件夹,然后输入make,回车,之后会在bin文件下出现很多exe执行文件
数据准备
搜狗的新闻数据,
来自若干新闻站点2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据,提供URL和正文信息。
大家可以下到,申请也不麻烦,就是数据有点老,有些新鲜词汇没有,另外,由于是新闻数据,所以,有些词汇也是没有的
数据整理和分词
首先,下载的数据是有html标签的,我们只需要content的内容:
数据整理和分词参考这篇博客
首先,取content标签下的数据
cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>" > corpus.txt
因为这些数据虽然去除了其他标签的数据,但是却把
我在这个网页上找到了一个python去标签的简单代码。但是没有实验过,不知效果怎么样:
这段代码可以用于去除文本里的字符串标签,不包括标签里面的内容
import re
html='<a href="http://www.jb51.net">脚本之家</a>,Python学习!'
dr = re.compile(r'<[^>]+>',re.S)
dd = dr.sub('',html)
print(dd)
运行结果如下:
脚本之家,Python学习!
实验
整理之后就可以在bin文件夹下运行程序了,图片和参数解释来自这里,代码如下:
time ./word2vec -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 0 -iter 15
-time 会在结果前输出实验用的时间,当然如果不需要的话,可以去掉
-train 训练数据
-output 结果输入文件,即每个词的向量,也可以output为txt文件,但是txt文件没有直接用./distance
-cbow 是否使用cbow模型,0表示使用skip-gram模型,1表示使用cbow模型,默认情况下是skip-gram模型,cbow模型快一些,skip-gram模型效果好一些(0的情况跑了2个小时,1的时候跑了50分钟)
-size 表示输出的词向量维数
-window 为训练的窗口大小,8表示每个词考虑前8个词与后8个词(实际代码中还有一个随机选窗口的过程,窗口大小<=5)
-negative 表示是否使用NEG方,0表示不使用,其它的值目前还不是很清楚
-hs 是否使用HS方法,0表示不使用,1表示使用
-sample 表示 采样的阈值,如果一个词在训练样本中出现的频率越大,那么就越会被采样
-binary 表示输出的结果文件是否采用二进制存储,0表示不使用(即普通的文本存储,可以打开查看),1表示使用,即vectors.bin的存储类型
-iter 迭代次数
除了上面所讲的参数,还有:
-alpha 表示 学习速率
-min-count 表示设置最低频率,默认为5,如果一个词语在文档中出现的次数小于该阈值,那么该词就会被舍弃
-classes 表示词聚类簇的个数,从相关源码中可以得出该聚类是采用k-means
跑完后,用下面的命令启动距离计算,然后输入文字
./distance vectors.bin
至于聚类,只需要另一个命令即可:
./word2vec -train resultbig.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500
按类别排序:
sort classes.txt -k 2 -n > classes.sorted.txt
应用
深度学习word2vec笔记之应用篇
这篇文章介绍了word2vec如何应用在广告推荐中
2. Tensorflow中的word2vec
现在word2vec已经集成到了tensorflow中
使用tensorflow下的word2vec模型
官网中给的例子:
Word2Vec Tutorial
To download the example text and evaluation data:
wget http://mattmahoney.net/dc/text8.zip -O text8.zip
unzip text8.zip
wget https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/word2vec/source-archive.zip
unzip -p source-archive.zip word2vec/trunk/questions-words.txt > questions-words.txt
rm source-archive.zip
Assuming you are using the pip package install and have cloned the git repository, navigate into this directory and run using:
cd tensorflow/models/embedding
python word2vec_optimized.py \
--train_data=text8 \
--eval_data=questions-words.txt \
--save_path=/tmp/
To run the code from sources using bazel:
bazel run -c opt tensorflow/models/embedding/word2vec_optimized -- \
--train_data=text8 \
--eval_data=questions-words.txt \
--save_path=/tmp/
我虽然跑通了程序,在tmp文件夹中也生成了几个文件,但是完全不知道怎么用。。。。。
3. gensim的word2vec
请参考这篇教程
http://blog.csdn.net/Star_Bob/article/details/47808499
参考
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/models/embedding
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
