windows环境下使用word2vector进行词向量训练的方法

      word2vec,是google在2013年提出的开源项目,它实际上是一个Deep Learning模型,可以将词(word)表征成实数值向量,采用CBOW(Continuous Bag-Of-Words Model,连续词袋模型)和Skip-Gram(Continuous Skip-GramModel)两种模型。

    在windows下使用word2vec训练词向量,需要以下几个步骤:

    1.在windows下安装linux环境模拟器:因为word2vec需要linux环境,所有首先需要在windows下安装linux环境模拟器。推荐cygwin(下载地址:http://www.cygwin.com/install.html),在安装时注意:因为默认安装下没有安装make命令工具(后面要用到),所以在安装时,选择package时,需要选择Devel模块中的以下几个软件包。

  • gcc-core:C 编译器
  • gcc-g++:C++ 编译器
  • gdb:GNU 调试器
  • make:"make" 实用程序的 GNU 版本
   2.源码下载:我用的是word2vec的源码 http://word2vec.googlecode.com/svn/trunk/.将文件夹word2vec放到cygwin的一个文件夹下面。

   3.训练数据的准备:将语料库进行分词并去掉停用词(我的下载里面有中英文常用的停用词),所有的词以空格键或tab键隔开写入一个文件中,如all_words中,并将该文件拷贝到word2vec目录中

   4.启动cygwin:使用cd命令进入word2vec文件夹下,输入make命令,报如下错误

gcc word2vec.c -o word2vec -lm -pthread -O3 -march=native -Wall -funroll-loops -Wno-unused-result
gcc: 错误:unrecognized command line option ‘-pthread’
makefile:8: recipe for target 'word2vec' failed
make: *** [word2vec] Error 1

说明cygwin中的gcc不支持pthread多线程命令,解决方法是将word2vec目录下的makefile文件打开,添加“#”注释掉下面一行:

CFLAGS = -lm -pthread -O3 -march=native -Wall -funroll-loops -Wno-unused-result
效果如下图所示,

   5.将你自己的数据(可以打包成压缩文件),放入word2vec目录下,修改demo-word.sh文件:

   demo-word.sh文件的内容如下所示:


  6.训练数据:输入行命令sh demo-word.sh,等待训练完成。模型训练完成之后,得到了vectors.bin这个词向量文件,文件的存储类型由binary参数,如果为0,便可以直接用编辑器进行查看。

  7.问题:生成的英文语料可以计算向量之间的相似程度,但中文文本下相似距离计算出现下面的结果:

知乎上说是二进制文件参数的问题,但是试过了不可以,求大神知道




你可能感兴趣的:(NLP)