Google Word2vec 学习手札

1 前文

其实我自己也不太清楚我要用这个干什么,只是觉得可能有用,所以先装起来吧。

2 安装

这里我按照官方的步骤,并适当的增加相应内容
1、首先下载源代码(需要科学上网法):
https://code.google.com/archive/p/word2vec/source/default/source
这个代码如果有空,我会转存到国内
2、解压源代码,进入目录执行如下命令:

make

如果在mac上,可能会遭遇这个问题
error: malloc.h: No such file or directory
或相似的malloc.h的报错
解决方法是把源代码里出问题的源文件进行替换:

#include <malloc.h>
替换为
#include <sys/malloc.h>

编译完成后可以运行官方示例,分别执行:

./demo-word.sh
./demo-phrases.sh

./demo-word.sh 和./demo-phrases.sh会下载一些训练集,感觉速度还是比较慢的,在我电脑上我是没法下载的,挂了SS也不行

注意的是,在mac上如果没有安装wget需要先安装wget,推荐使用homebrew安装

brew install wget
sudo brew link wget

3 使用

鉴于Google提供的语料库我难以下载到,所以按照了[1]中的,使用了搜狗的数据这里也贴一下步骤:
1、到搜狗实验室官网下载语料库,下载完整版的,需要注册FTP:
http://www.sogou.com/labs/resource/ca.php
这里写图片描述
2、下载完成后将文件进行解压,在这里,我们只需要网页里面content 里面的内容,所以在终端中执行如下的命令:

cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>"  > corpus.txt  

3、之后需要对corpus里进行分词,与原博客[1]选用ANSJ(Java)进行分词不同,这里我算用PyNLPIR(Python)进行分词,关于PyNLPIR的一些基本信息,可以查看我之前的博客:
NLPIR 汉语分词系统 (PyNLPIR) 学习手札
这里我直接贴出相关的源代码(python 2.7),因为有分词,代码运行的速度还是比较慢(不对,是非常慢)的,大家可以趁机干一下其他事情

# coding:utf-8
#将搜狗全网新闻语料库进行分词


import pynlpir
import sys


reload(sys)
sys.setdefaultencoding( "utf-8" )
input = open('corpus.txt','r')
output = open('corpus-seg.txt','w+')
line = input.readline()
#pynlpir需要提前打开
pynlpir.open()
while line!=None and len(line) > 4:
    #去除头部和尾部的<content> </content>
    line = line[9:-11]
    segments = pynlpir.segment(line)
    result = ''
    for segment in segments:
        result  = result + segment[0] + ' '
    line = input.readline()
    if len(result) > 4:
        output.write(result + '\n')
print '处理完成'
pynlpir.close()


4、使用Word2vec 进行训练
之前我已经写了如何安装word2vec的内容,现在进入到已经编译好的word2vec目录,执行如下的命令进行训练,并且将训练结果输出到vectors.bin 中进行保存:


./word2vec -train corpus-seg.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1  

注意:把corpus-seg.txt改为你分词好以后的结果地址

这个训练同样也很慢,慢慢等吧~~

5、训练完成后,就可以使用刚刚我们输出的那个vectors.bin做一些有趣的工作了,在终端使用如下命令,既可以得到一个让你输入词语,自动输出语料库中相近词语的显示(这里的值越大,证明越相似)。

./distance vectors.bin  

这里写图片描述
这里写图片描述
这里写图片描述

6、其他,这些功能我还没有实现,因为速度太慢,就直接复制贴出来,注意文件名
聚类:

./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 

完~,如果之后有新的学习,再补充

参考资料

1、利用word2vec对关键词进行聚类:http://blog.csdn.net/zhaoxinfan/article/details/11069485
2、NLPIR 汉语分词系统 (PyNLPIR) 学习手札 http://blog.csdn.net/mebiuw/article/details/52232562

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

学术状态抽奖器

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值