本人还没有做过自然语言处理,但是基于Deep Learning 的关注,自然也了解了一些Word2vec的强大。
Word2vec 是google 在2013年提供的一款将词表征为实数值向量的高效工具。而Word2vec输出的词向量可用于做NLP 相关的工作,比如聚类、找同义词、词性分析等。Word2vec 大受欢迎的一个原因是其高效性, Tomas Mikolov 在[1] 中指出一个优化的单机版本一天可以训练上千亿词(汗!)。
关于词的概念,这里的词可以并不一定真的就是单词,完全可以是具有一定意义的单元块,比如国外音乐网站就用word2vec来训练用户的听歌记录,这里的单元块就是歌曲编号,如果用户对音乐类型的喜好是一致的,那么训练后就能找到与某个歌曲相似的歌曲,这样就能给用户进行推荐了,相信类似这样的例子还有很多。(关于这点思考:词可以使一个标号或者理解为一个类的对象!)
先上图:
个人感觉这个讲解的很详细~
注意:1, 输入为一个窗口的待预测上下文
2. 输入层Wj 是维度为K的列向量,(syn0 编码?)如有 N个输入词,则输入大小为k*N
3. 隐层 Tk 是输入层Wj 的加权,隐层大小为N*k
4. 输出层的叶节点是语料里的词,如红楼梦分词后的独立词
5. 叶节点有唯一的编码,从根节点开始算第一层(二叉树构建算法 Huffman树)
理解很浅显~
以后持续更新~
参考:
[1]Distributed Representations of Words and Phrases and their Compositionality (经典论文)
[2] Felven----再谈word2vec (Felven word2vec 系列很实践)
[3] Felven----关键词聚类
[5] word2vec傻瓜剖析 (个人觉得还是先看看Felven的实验后,再看这个比较有感觉点!)
[6] 有道的word2vec 讲解 (非常详细!几个DL大牛的关系图很有意思!)
原文:http://blog.csdn.net/hanzihan123/article/details/41078835