word2vec的使用参数解释和应用场景

来源:互联网 发布:python的print不换行 编辑:程序博客网 时间:2024/06/08 08:54

搭建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 rehtml='<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如何应用在广告推荐中

说明

现在word2vec已经集成到了tensorflow中
使用tensorflow下的word2vec模型
官网中给的例子:

Word2Vec Tutorial

To download the example text and evaluation data:

wget http://mattmahoney.net/dc/text8.zip -O text8.zipunzip text8.zipwget https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/word2vec/source-archive.zipunzip -p source-archive.zip  word2vec/trunk/questions-words.txt > questions-words.txtrm 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/embeddingpython 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文件夹中也生成了几个文件,但是完全不知道怎么用。。。。。

参考

Windows下使用Word2vec继续词向量训练

利用word2vec对关键词进行聚类

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/models/embedding

深度学习word2vec笔记之应用篇

0 0