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 sysreload(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
Google Word2vec 学习手札相关推荐
- word2vec学习+使用介绍
word2vec是google的开源工具,很值得学习使用,推荐大家使用!代码已跑通顺利运行. word2vec是一个将单词转换成向量形式的工具.可以把对文本内容的处理简化为向量空间中的向量运算,计算出 ...
- 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架
小编说 时间过的好快啊,小伙伴们是不是都快进入寒假啦?但是学习可不要落下哦! 本期教材 本期为大家发放的教材为:<Python机器学习实践指南>.<Tensorflow 实战G ...
- 窗口消息——Windows核心编程学习手札之二十六
窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...
- 未处理异常和C++异常——Windows核心编程学习手札之二十五
未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...
- 异常处理程序和软件异常——Windows核心编程学习手札之二十四
异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...
- 结束处理程序——Windows核心编程学习手札之二十三
结束处理程序 --Windows核心编程学习手札之二十三 使用SEH可以只关注程序要完成任务,而运行中发生的错误,系统将会发现并通知.Windows引入SHE是为了便于操作系统的开发,使用SHE所造成 ...
- 插入DLL和挂接API——Windows核心编程学习手札之二十二
插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...
- 线程本地存储器——Windows核心编程学习手札之二十一
线程本地存储器 --Windows核心编程学习手札之二十一 C/C++运行期库使用线程本地存储器,运行期库是在多线程应用程序出现前设计的,因此运行期库里的大多数函数是用于单线程应用程序的.函数strt ...
- DLL的高级操作技术——Windows核心编程学习手札之二十
DLL的高级操作技术 --Windows核心编程学习手札之二十 显示加载DLL模块: HINSTANCE LoadLibrary(PCTSTR pszDLLPathName); HINSTANCE L ...
最新文章
- 网站栏目页要如何进行优化呢?
- android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)...
- vs2003打开项目错误
- 公司重金求数据分析师:为什么90%的公司都需要它?
- 一个请求多个响应_一个TCP连接到底可以发多少个HTTP请求?
- 基于Java+jsp+servlet的养老院管理系统设计和实现《收藏版》
- 微信公众帐号开发教程第12篇-符号表情的发送(下)
- [spring]用IEDA创建spring boot项目
- 【springssm加载applicationContext.xml文件的一个坑】
- contos7改分辨率_Centos 7 修改系统屏幕分辨率
- 风车IM即时通讯聊天系统源码
- c语言把文件看作是一个字符序列,C语言对文件的操作
- QCC3040一拖二发射器(aptXLL)replace CSR8670
- 惠普541笔记本更换内存条_惠普541笔记本如何样啊?有什么缺点和优点?, 真心不会...
- 成功解决 ARP项添加失败:请求的操作需要提升
- Python数据分析与可视化案例解析
- API接口怎么使用(教你使用api接口获取数据)
- 2.3、云计算FusionCompute存储虚拟化
- 线上数码商城小程序开发,尽享购物乐趣
- 云计算技术与应用赛项赛题库