5-word2vec架构分析及实践
来源:互联网 发布:linux打开大文件 编辑:程序博客网 时间:2024/04/28 05:47
顾名思义,word2vec就是将词语转换为向量,通过转换为向量,复杂的自然语言处理就可以转换为简单的向量代数运算。
word2vec技术基于神经网络模型,可以简单地将神经网络模型分为三层,分别为输入层、隐含层和输出层。
神经网络模型经历了很长时期的发展,以03年为分界点,03年Bengio等人提出了著名的NNLM模型(http://machinelearning.wustl.edu/mlpapers/paper_files/BengioDVJ03.pdf),算是总结了前面的研究工作,因此,03年之前的关于神经网络在自然语言处理中的研究论文拿来翻翻就可以了,不用细看。03年之后神经网络模型有了较大的改进和发展,发展出的技术千奇百怪,但是,总的而言,所有的改进和提高都紧紧围绕神经网络三层结构,分别在各层进行改进。
在输入层,有RNNLM模型,改进的思想是缓存上一次计算完毕之后的状态,这样计算当前词时就不需要重新计算已经输入的词,节省了计算量。具体可参考文献:http://www.fit.vutbr.cz/research/groups/speech/servite/2010/rnnlm_mikolov.pdf
在隐含层,有CBOW技术和Skip-gram技术。这也是神经网络模型核心架构方面的改进。CBOW技术很好理解,就是利用上下文预测当前词出现的概率;Skip-gram技术比较难理解,顾名思义,Skip-gram就是允许某些词被“跳过”,而不像CBOW那样按照顺序来。被跳过的结果就是语料更加丰富了,因为允许跳过的组合更多,变相增加了语料。有关Skip-gram技术可参考文献:http://www.cs.brandeis.edu/~marc/misc/proceedings/lrec-2006/pdf/357_pdf.pdf
在输出层,或者可以理解为在训练算法方面,有分层softmax技术和负采样技术。分层softmax技术使用二叉树(例如哈夫曼树)将词典里的词编码,这样使得访问每一个词语的平均步长缩短,大大加快了训练速度,分层softmax技术可以参考文献:http://arxiv.org/abs/1310.4546;负采样技术原理同NCE,NCE的原理本质是使用已知的概率密度函数估计未知的概率密度函数,设未知的概率密度函数位x,已知的为y,如果求的了x和y的关系,y又已知,那么x也就不难求出来了,有关负采样技术可参考:
http://dl.acm.org/citation.cfm?id=2188396
最后一点,在神经网络模型中,如”the”、”a”等频繁词会降低训练的速度以及损害训练结果准确性,为了解决这个问题,引入了欠采样技术,技术原理很简单,就是以某个随机的概率舍弃词典中的词,越频繁的词被舍弃的概率越大,因此,在不改变词频排列顺序的前提下,大大减小了频繁词与非频繁词的比例,从而突出了非频繁词,训练结果更加准确,训练的速度也更快。欠采样技术请参考文献: http://arxiv.org/abs/1310.4546
word2vec工具是上述技术的合集,分别学习了解上述技术就能够很好地理解word2vec工具的原理。
架构:skip-gram(慢、对罕见字有利)vs CBOW(快)
训练算法:分层softmax(对罕见字有利)vs 负采样(对常见词和低纬向量有利)
欠采样频繁词:可以提高结果的准确性和速度(适用范围1e-3到1e-5即10的-5次方)
文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
word2vec实践(技术贴原址附后)
1、有道技术人员写的word2vec综合分析 http://techblog.youdao.com/?p=915
2、word2vec实践及对关键词聚类 http://blog.csdn.net/wdxin1322/article/details/16887525
3、Deep Learning 在中文分词和词性标注任务中的应用http://blog.csdn.net/itplus/article/details/13616045
4、再谈word2vec http://blog.csdn.net/zhaoxinfan/article/details/27352659
5、word2vec傻瓜剖析 http://xiaoquanzi.net/
6、word2vec核心代码注释 http://blog.*.com.cn/s/blog_839cd44d0101flea.html *替换为sina
7、用word2vec 跑搜狗SogouCS语料 - 大小4G | 6.8 亿词长 | 57万词汇 http://blog.csdn.net/kevinew/article/details/11265469
8、word2vec原理及源码分析 http://blog.chinaunix.net/uid-20761674-id-4083995.html 和http://blog.chinaunix.net/uid-20761674-id-4063764.html
9、深度学习word2vec笔记之算法篇 http://blog.csdn.net/mytestmy/article/details/26969149
10、对word2vec源码最好的解释 http://nbviewer.ipython.org/github/dolaameng/tutorials/blob/master/word2vec-abc/poc/pyword2vec_anatomy.ipynb
11、NPL常用工具 http://blog.csdn.net/zhoubl668/article/details/8939789
12、斯坦福大学自然语言处理实验室整理的NLP资源 http://www-nlp.stanford.edu/links/statnlp.html
13、[word2vec各类源码for C] http://blog.csdn.net/jj12345jj198999/article/category/1596613
word2vec 下载地址如下
版本
地址
CBOW
Skip-Gram
C
http://word2vec.googlecode.com/svn/trunk/
HS
NEG
HS
NEG
python
http://radimrehurek.com/gensim/
HS
Java
https://github.com/ansjsun/Word2VEC_java
HS
HS
C++
https://github.com/jdeng/word2vec
未知
未知
未知
未知
利用word2vec的具体应用
1、通过词找到对应的文章类别
2、用word2vec 跑搜狗SogouCS语料 - 大小4G | 6.8 亿词长 | 57万词汇 http://blog.csdn.net/kevinew/article/details/11265469
- 5-word2vec架构分析及实践
- 文本分析之TFIDF/LDA/Word2vec实践
- word2vec实践及对关键词聚类
- word2vec 源码分析word2vec.c
- word2vec思路分析
- word2vec.c源码分析
- 基于 Gensim 的 Word2Vec 实践
- 基于 Gensim 的 Word2Vec 实践
- word2vec原理及实现
- word2vec 模型及推导
- OpenStack Rally分析及实践
- Word2Vec的使用及java版运行解释及错误分析
- 软件架构最佳实践和案例分析
- 软件架构案例分析和最佳实践
- Mycat开发实践---数据库中间件架构分析
- 大数据及人工智能基础复习5 Word2Vec
- 移动端无痕埋点的架构及实践
- ODPS技术架构及应用实践
- Java 集合工具类 Collections
- ISCC2014--pwn
- 一入python深似海--class
- 车牌定位--颜色分割
- 漂亮的树形菜单,可折叠,有动画
- 5-word2vec架构分析及实践
- DB2系统级命令及实例级命令
- UVA 10755 Garbage Heap
- 随笔---写在大三下
- Android Studio VS Eclipse (还在用Eclipse?你OUT了!)
- java 内存泄露
- 初探PowerShell OneGet(一)
- 整数逆置
- php session 读写锁