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 学习手札相关推荐

  1. word2vec学习+使用介绍

    word2vec是google的开源工具,很值得学习使用,推荐大家使用!代码已跑通顺利运行. word2vec是一个将单词转换成向量形式的工具.可以把对文本内容的处理简化为向量空间中的向量运算,计算出 ...

  2. 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架

    小编说  时间过的好快啊,小伙伴们是不是都快进入寒假啦?但是学习可不要落下哦!  本期教材  本期为大家发放的教材为:<Python机器学习实践指南>.<Tensorflow 实战G ...

  3. 窗口消息——Windows核心编程学习手札之二十六

    窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...

  4. 未处理异常和C++异常——Windows核心编程学习手札之二十五

    未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...

  5. 异常处理程序和软件异常——Windows核心编程学习手札之二十四

    异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...

  6. 结束处理程序——Windows核心编程学习手札之二十三

    结束处理程序 --Windows核心编程学习手札之二十三 使用SEH可以只关注程序要完成任务,而运行中发生的错误,系统将会发现并通知.Windows引入SHE是为了便于操作系统的开发,使用SHE所造成 ...

  7. 插入DLL和挂接API——Windows核心编程学习手札之二十二

    插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...

  8. 线程本地存储器——Windows核心编程学习手札之二十一

    线程本地存储器 --Windows核心编程学习手札之二十一 C/C++运行期库使用线程本地存储器,运行期库是在多线程应用程序出现前设计的,因此运行期库里的大多数函数是用于单线程应用程序的.函数strt ...

  9. DLL的高级操作技术——Windows核心编程学习手札之二十

    DLL的高级操作技术 --Windows核心编程学习手札之二十 显示加载DLL模块: HINSTANCE LoadLibrary(PCTSTR pszDLLPathName); HINSTANCE L ...

最新文章

  1. 网站栏目页要如何进行优化呢?
  2. android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)...
  3. vs2003打开项目错误
  4. 公司重金求数据分析师:为什么90%的公司都需要它?
  5. 一个请求多个响应_一个TCP连接到底可以发多少个HTTP请求?
  6. 基于Java+jsp+servlet的养老院管理系统设计和实现《收藏版》
  7. 微信公众帐号开发教程第12篇-符号表情的发送(下)
  8. [spring]用IEDA创建spring boot项目
  9. 【springssm加载applicationContext.xml文件的一个坑】
  10. contos7改分辨率_Centos 7 修改系统屏幕分辨率
  11. 风车IM即时通讯聊天系统源码
  12. c语言把文件看作是一个字符序列,C语言对文件的操作
  13. QCC3040一拖二发射器(aptXLL)replace CSR8670
  14. 惠普541笔记本更换内存条_惠普541笔记本如何样啊?有什么缺点和优点?, 真心不会...
  15. 成功解决 ARP项添加失败:请求的操作需要提升
  16. Python数据分析与可视化案例解析
  17. API接口怎么使用(教你使用api接口获取数据)
  18. 2.3、云计算FusionCompute存储虚拟化
  19. 线上数码商城小程序开发,尽享购物乐趣
  20. 云计算技术与应用赛项赛题库

热门文章

  1. 学习记录582@判断从JSONObject数据中取出的数据是JSONObject类型还是JSONArray类型
  2. win10 字体修改美化
  3. 如何解析json并展示到html页面中,js解析json并生成html页面
  4. CSS 实现背景渐变透明
  5. 【java+selenium】网易云音乐刷累计听歌数
  6. UiPath认证考试
  7. java 生成带网络头像的二维码
  8. python的实现原理_python爬虫实现原理
  9. 《崔庆才Python3网络爬虫开发实战教程》学习笔记(4):解析库Xpath的使用方法总结
  10. 华为、小米OV折叠屏市场再厮杀