word2vec学习笔记

转载 2013年12月02日 12:52:55

谷歌已经使用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  
4 这里我们指定输出为vectors.bin文件,显然输出到文件便于以后重复利用,省得每次都要计算一遍
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 

顺便分享一下分词后的数据:  http://yunpan.cn/QXh8MyWGXzLYY    (所有新闻分词后拼接为一行了, 以空格分割,可以直接作为本次的输入)


怎么样,是不是觉得还挺靠谱的?补充一点,由于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笔记之基础篇
  • mytestmy
  • mytestmy
  • 2014年05月25日 16:00
  • 66079

深度学习word2vec笔记之算法篇

深度学习word2vec笔记之算法篇
  • mytestmy
  • mytestmy
  • 2014年05月25日 20:03
  • 33233

秒懂词向量Word2vec的本质

[NLP] 秒懂词向量Word2vec的本质 穆文 4 个月前 转自我的公众号: 『数据挖掘机养成记』 1. 引子 大家好 我叫数据挖掘机 皇家布鲁斯特大学肄业 我喝最烈的果粒橙,钻最深的...
  • Real_Myth
  • Real_Myth
  • 2017年08月02日 17:37
  • 3023

TensorFlow 学习笔记(二)word2vec(1)

python语言使用tensorflow 框架实现word2vec算法 今天,学习了使用tensorflow 的自然语言处理方向的word2vec。通过深度学习算法,把语料库中的词转化成为向...
  • zcxadsqew1020
  • zcxadsqew1020
  • 2017年06月17日 12:34
  • 326

Word2Vec学习笔记(一)

目录 Word2Vec基本数学内容 语言模型 Hierarchical Softmax 模型 Negative Sampling 模型 一、Word2Vec基本数学内容1. Sigmod 函数&abs...
  • chunyun0716
  • chunyun0716
  • 2016年06月12日 11:39
  • 487

学习笔记TF034:实现Word2Vec

卷积神经网络发展趋势。Perceptron(感知机),1957年,Frank Resenblatt提出,始祖。Neocognitron(神经认知机),多层级神经网络,日本科学家Kunihiko fuk...
  • weixin_38776853
  • weixin_38776853
  • 2017年07月30日 09:46
  • 343

深度学习(四十二)word2vec词向量学习笔记

一、使用原版word2vec工具训练 1、到官网到下载,然后选择export 到github 2、编译:make 3、下载测试数据http://mattmahoney.net/dc/text8.zip...
  • hjimce
  • hjimce
  • 2016年06月02日 10:57
  • 5272

word2vec中k-means学习笔记

一、k-means算法 算法描述 输入:簇的数目k;包含n个对象的数据集D。 输出:k个簇的集合。 方法: 从D中任意选择k个对象作为初始簇中心;repeat;根据簇...
  • zhoubl668
  • zhoubl668
  • 2014年04月22日 17:49
  • 4678

Word2Vec学习笔记(三)

三、Hierarchical Softmax模型3.1 词向量    词向量目前常用的有2种表示方法,One-hot representation 和 distributed representati...
  • chunyun0716
  • chunyun0716
  • 2016年06月13日 16:44
  • 804

Word2vec学习笔记

主要内容: 1、什么是Word2vec?为什么要Word2vec? 2、常规的做法有哪些及一些简单的介绍? 3、NNLM的Word2vec原理及问题解决方案(原论文《Distributed Repre...
  • l18930738887
  • l18930738887
  • 2017年01月07日 20:55
  • 938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:word2vec学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)