Wordvec的使用实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuyanyanyanyanyu/article/details/52709229

参考网站(http://www.ithao123.cn/content-1442197.html)

Google的word2vec官网:https://code.google.com/p/word2vec/

1.下载下来的Demo源码文件共有如下几个:
word2vec – Revision 41: /trunk

LICENSE //Apache LICENSE
README.txt //工具使用说明
compute-accuracy.c
demo-analogy.sh  //
demo-classes.sh  //词聚类的示例脚本
demo-phrase-accuracy.sh
demo-phrases.sh  //
demo-train-big-model-v1.sh
demo-word-accuracy.sh
demo-word.sh

distance.c

makefile
questions-phrases.txt
questions-words.txt
word-analogy.c
word2phrase.c
word2vec.c

2.下载训练训练数据

下面提供一些网上能下载到的中文的好语料,供研究人员学习使用。

(1).中科院自动化所的中英文新闻语料库http://www.datatang.com/data/13484
中文新闻分类语料库从凤凰、新浪、网易、腾讯等版面搜集。英语新闻分类语料库为Reuters-21578ModApte版本。

(2).搜狗的中文新闻语料库http://www.sogou.com/labs/dl/c.html
包括搜狐的大量新闻语料与对应的分类信息。有不同大小的版本可以下载。
(3).
李荣陆老师的中文语料库http://www.datatang.com/data/11968
压缩后有240M大小
(4).
谭松波老师的中文文本分类语料http://www.datatang.com/data/11970
不仅包含大的分类,例如经济、运动等等,每个大类下面还包含具体的小类,例如运动包含篮球、足球等等。能够作为层次分类的语料库,非常实用。这个网址免积分(谭松波老师的主页)http://www.searchforum.org.cn/tansongbo/corpus1.php
(5).
网易分类文本数据http://www.datatang.com/data/11965
包含运动、汽车等六大类的4000条文本数据。
(6).
中文文本分类语料http://www.datatang.com/data/11963
包含ArtsLiterature等类别的语料文本。
(7).
更全的搜狗文本分类语料 http://www.sogou.com/labs/dl/c.html
搜狗实验室发布的文本分类语料,有不同大小的数据版本供免费下载
(8).2002
年中文网页分类训练集http://www.datatang.com/data/15021
2002
年秋天北京大学网络与分布式实验室天网小组通过动员不同专业的几十个学生,人工选取形成了一个全新的基于层次模型的大规模中文网页样本集。它包括11678个训练网页实例和3630个测试网页实例,分布在11个大类别中。

3.将预料库进行分词并去停用词,分词之后,所有的词以空格键或tab或,隔开写入一个文件中,如all_words中,并将该文件拷贝到word2vec目录中。

Windows中的文件上传到Linux中讲如下两种方法:

方法一:用SecureCRT6.5.0


方法二:使用pscp.exe软件,可能需要配置环境变量(参考网站:http://snailwarrior.blog.51cto.com/680306/141201


也可以用此软件将linux系统上的文件传到windows中去


上传到linux中后将文件解压到相应目录下:(http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html


 

5.使用cd命令进入Word2vec文件下,输入make命令。

将你自己的数据(可以打包成压缩文件),放入word2vec目录下,修改demo-word.sh文件,该文件默认情况下使用自带的text8数据进行训练,如果训练数据不存在,则会进行下载,因为需要使用自己的数据进行训练,所以可以将
if [ ! -e text8.zip ]; then
wget http://mattmahoney.net/dc/text8.zip -O text8.gz
gzip -d text8.gz -f
fi
进行注释(#),并将
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
./distance vectors.bin

中的text8更改成自己的训练数据名称all_words(将全部路径写下来),如果你的数据有后缀,记得带后缀。


参数解释
-train
训练数据
-output
结果输入文件,即每个词的向量
-cbow
是否使用cbow模型,0表示使用skip-gram模型,1表示使用cbow模型,默认情况下是skip-gram模型,cbow模型快一些,skip-gram模型效果好一些
-size
表示输出的词向量维数
-window
为训练的窗口大小,8表示每个词考虑前8个词与后8个词(实际代码中还有一个随机选窗口的过程,窗口大小<=5)
-negative
表示是否使用NEG方,0表示不使用,其它的值目前还不是很清楚
-hs
是否使用HS方法,0表示不使用,1表示使用
-sample
表示采样的阈值,如果一个词在训练样本中出现的频率越大,那么就越会被采样
-binary
表示输出的结果文件是否采用二进制存储,0表示不使用(即普通的文本存储,可以打开查看),1表示使用,即vectors.bin的存储类型
-------------------------------------

除了上面所讲的参数,还有:
-alpha
表示学习速率
-min-count
表示设置最低频率,默认为5,如果一个词语在文档中出现的次数小于该阈值,那么该词就会被舍弃
-classes
表示词聚类簇的个数,从相关源码中可以得出该聚类是采用k-means
5.
运行命令sh demo-word.sh,等待训练完成,如下图:


6.模型训练完成之后,得到了vectors.bin这个词向量文件,文件的存储类型由binary参数觉得,如果为0,便可以直接用编辑器打开,进行查看,向量维度由size参数决定。于是我们可以使用这个向量文件进一步进行自然语言处理了。比如求相似词,关键词聚类与分类等。其中word2vec中提供了distance求词的cosine相似度,并排序。也可以在训练时,设置-classes参数来指定聚类的簇个数,使用kmeans进行聚类。还可以继续别的操作,可以参见http://blog.csdn.net/zhaoxinfan/article/details/11640573


7.如果出现如下提示:make: 没有什么可以做的为`all'

解决方法:

没更新程序和makefile 就是什么都不干,make clean 一次,编译过程又有了

 

附加:

所用全部资料的下载地址:

http://download.csdn.net/detail/yuyanyanyanyanyu/9643637

 

猜你喜欢

转载自blog.csdn.net/yuyanyanyanyanyu/article/details/52709229