之前面试被面到了,加上一直不是很理解词嵌入的工作方式,所以这段时间找了不少相关的资料想把这玩意儿搞明白。理解还是有限,就不自不量力自己写一篇了(就算写也是把已有的文章揉一揉,不敢说是自己的理解),把看过觉得比较有用的材料整理出来,作为一则记录。
一篇英文的博客也做了类似的整理(http://textprocessing.org/getting-started-with-word2vec)。
本篇则主要记录中文的资料和必要的英文资料。
理解 Word2Vec 主要是理解一些概念和实践技巧:
概念包括词的分布式表示、词嵌入、神经网络的语言模型,这些内容网上解析 W2V 的几乎都涉及到了,找个靠谱的看一遍即可;Word2Vec 的主要贡献不在算法,而在于对以上方法做了一定的简化和速度上的改进,就像原文中说的现在单机可在一天内训练亿级语料,这就是 CBOW 和 Skip-Gram、Hierarchical Softmax、Negative Sampling 等等内容了。
1.作者的论文:
https://arxiv.org/pdf/1301.3781.pdf
https://arxiv.org/pdf/1310.4546.pdf
源码下载:
https://code.google.com/archive/p/word2vec/
2.[NLP] 秒懂词向量Word2vec的本质
适合对重要概念建立一点印象。
https://zhuanlan.zhihu.com/p/26306795
口气很大,但写得着实不错。文中整理的材料我也会在下方重复。也推荐自己挑选阅读。
我觉得作为博文而非论文来说,最重要的甚至不是“不出错”,而是“说人话”。只看学术论文,很多关键细节都淹没在公式里了,但对于一些问题来说,重要的可能不是这些公式。深度学习领域的“let data talk”尤其体现了这一点。
3.Rong Xin 的工作
讲解视频:https://www.youtube.com/watch?v=D-ekE-Wlcds
文章:word2vec Parameter Learning Explained(https://arxiv.org/abs/1411.2738)
PPT:https://docs.google.com/presentation/d/1yQWN1CDWLzxGeIAvnGgDsIJr5xmy4dB0VmHFKkLiibo/edit#slide=id.ge79682746_0_438
Demo:https://ronxin.github.io/wevi/
推荐先看视频,然后把论文理解一遍。
4.有道的 Deep Learning Word2Vec 笔记
这篇可能更适合开发人员学习,我看得比较费劲……
5.来斯为的博客和博士论文
http://licstar.net/archives/category/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86
6.计算所某直博大佬的博文,源码解析
http://www.cnblogs.com/neopenx/p/4571996.html
7.词向量的来龙去脉
http://ruder.io/word-embeddings-1/
Ruder 的系列博文,非常清晰。
有了比较充足的认识以后,接下来可以看看代码或者自己用一下 Tensorflow 或 Gensim 的训练版本了。
实践方面,可参考来斯为的博士论文。
魔鬼在细节中,果然不假。尤其是[6]指出的皮果提文章中的问题,我反复读源码才稍微有了点体会,依然不敢说看懂。所以代码才是硬道理啊……