word2vec学习笔记[转]
来源:互联网 发布:淘宝店铺最多扣多少分 编辑:程序博客网 时间:2024/06/09 21:02
谷歌已经使用Deep Learning技术开发了许多新方法来解析语言,目前,谷歌开源了一款基于Deep Learning的学习工具——word2vec,这是首款面向大众的Deep Learning学习工具。
word2vec(word to vector)顾名思义,这是一个将单词转换成向量形式的工具。通过转换,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
word2vec为计算向量词提供了一种有效的连续词袋(bag-of-words)和skip-gram架构实现,word2vec遵循Apache License 2.0开源协议。
word2vec的官方地址:https://code.google.com/p/word2vec/
下面介绍下word2vec的具体使用
1首先要做的肯定是从官网上下载word2vec的源码:http://word2vec.googlecode.com/svn/trunk/
2 然后把其中makefile文件的.txt后缀去掉,在终端下执行make操作
3 接下来就是输入语料(如data.txt)进行分析了:
- ./word2vec -train data.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
5 下面再输入计算距离的命令即可计算与每个词最接近的词了:
- ./distance vectors.bin
我这里以word2vec官网中给的questions-words.txt为例,给出几个例子:
当然,如果在处理中文语料时,要进行分词操作
这里就是用了中科院的分词ICTCLAS,C++版本的,在linux下运行比较简单,分词的程序放到CSDN上,需要的可以直接下载,包括库,分词词典,还有二进制程序,分词工具,点此进入下载。ICTCLAS分词器相关资料可以查看http://hi.baidu.com/drkevinzhang/
一些中文训练语料的获取:
1 在搜狗试验室中获取一些新闻数据,尽管比较老但是将就着用,其实感觉微博的数据会好些,一是数据量大,二是信息含量比较高(新鲜东西比较多),新闻的语料可以在http://www.sogou.com/labs/dl/ca.html 上获取,只要简单的注册一下就可以,在windows下下载还是比较麻烦的,需要用ftp工具,实际上可以用windows自带的ftp.exe就可以下载。
2
[ 腾讯新闻 ]
原始数据 http://download.csdn.net/download/shmei_cool/4788802
怎么样,是不是觉得还挺靠谱的?补充一点,由于word2vec计算的是余弦值,距离范围为0-1之间,值越大代表这两个词关联度越高,所以越排在上面的词与输入的词越紧密。
至于聚类,只需要另一个命令即可:
- ./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
总结一下:
整体来看,效果没有TFIDF计算的效果好,但是还是有很大希望提高的, 在短时间内能够算出这样的语料已经不错 的,而且还是任意关键词的语料。
改进:
1. 加大新闻量,采用GPU加速计算。
2. 对于需要计算的关键词,收集只包含这批关键词的新闻页面。 避免多而泛的情况出现。 而且这样也可以做到多机分布式的MapReduce计算。 那么在单机情况下只需要解决好比如100个词的语料效果。 (单机维护局部关键词)
3. 对于文本来说,该模型还是适合海量数据计算的。
4. 与classification模块接合, 对比之前用TFIDF计算的一些类别词的准确率和召回率。
参考:
http://blog.csdn.net/zhaoxinfan/article/details/11069485
https://code.google.com/p/word2vec/
http://blog.csdn.net/wdxin1322/article/details/16887525
http://www.cnblogs.com/james1207/archive/2013/08/18/3266481.html
http://blog.csdn.net/kevinew/article/details/11585945
http://www.douban.com/note/298095260/(豆瓣上的学习笔记)
后记:如果想要了解word2vec的实现原理,应该读一读官网后面的三篇参考文献。显然,最主要的应该是这篇: Distributed Representations of Words and Phrases and their Compositionality
这篇文章的基础是 Natural Language Processing (almost) from Scratch 其中第四部分提到了把deep learning用在NLP上。
最后附上word2vec的python java c++实现版本地址:
Python:http://radimrehurek.com/gensim/models/word2vec.html
Java:https://github.com/ansjsun/Word2VEC_java
C++:https://github.com/jdeng/word2vec
注:本文章大部分为转载,后面的参考里有列出地址
- word2vec学习笔记[转]
- word2vec学习笔记[转]
- word2vec学习笔记
- word2vec学习笔记
- word2vec学习笔记2
- word2vec学习笔记
- Word2Vec学习笔记(一)
- Word2Vec学习笔记(二)
- word2vec学习笔记
- 学习笔记之word2vec
- Word2vec学习笔记
- 深度学习 word2vec 笔记
- Word2Vec学习笔记
- Word2Vec学习笔记(三)
- tensorflow学习笔记之word2vec
- 学习笔记TF034:实现Word2Vec
- word2vec中k-means学习笔记
- 深度学习word2vec笔记之基础篇
- 创建一个基于SOAPHeader的安全验证(CXF拦截器使用)
- 双缓冲技术绘图
- Macbook终端创建cocos2d-x项目
- ubuntu下切换中英文输入法
- IOS中UI学习小记setNeedsDisplay、setNeedsLayout(零基础学习)
- word2vec学习笔记[转]
- Java实现定时任务的三种方法
- linux命令后台运行
- python常用数据结构
- C++编程->容器及选用总结
- Leetcode_reverse-linked-list-ii
- ARM架构+网络解决方法。
- iOS 7 教程:定制iOS 7中的导航栏和状态栏
- 分析系统性能的常用指标