word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感。一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟。

第一次接触 word2vec 是 2013 年的 10 月份,当时读了复旦大学郑骁庆老师发表的论文[7],其主要工作是将 SENNA 的那套算法([8])搬到中文场景。觉得挺有意思,于是做了一个实现(可参见[20]),但苦于其中字向量的训练时间太长,便选择使用 word2vec 来提供字向量,没想到中文分词效果还不错,立马对 word2vec 刮目相看了一把,好奇心也随之增长。

后来,陆陆续续看到了 word2vec 的一些具体应用,而 Tomas Mikolov 团队本身也将其推广到了句子和文档([6]),因此觉得确实有必要对 word2vec 里的算法原理做个了解,以便对他们的后续研究进行追踪。于是,沉下心来,仔细读了一回代码,算是基本搞明白里面的做法了。第一个感觉就是,“明明是个很简单的浅层结构,为什么会被那么多人沸沸扬扬地说成是 Deep Learning 呢?”

解剖 word2vec 源代码的过程中,除了算法层面的收获,其实编程技巧方面的收获也颇多。既然花了功夫来读代码,还是把理解到的东西整理成文,给有需要的朋友提供点参考吧。

在整理本文的过程中, 和深度学习群的群友@北流浪子([15,16])进行了多次有益的讨论,在此表示感谢。另外,也参考了其他人的一些资料,都列在参考文献了,在此对他们的工作也一并表示感谢。

转载:http://blog.csdn.net/itplus/article/details/37969519

word2vec简单通俗易懂相关推荐

  1. OKR简单通俗易懂的介绍,1分钟了解什么是OKR工作法

    OKR简单通俗易懂的介绍,1分钟了解什么是OKR工作法

  2. NLP笔记:word2vec简单考察

    NLP笔记:word2vec简单考察 1. 简介 2. word2vec原理介绍 3. gensim实现 4. tensorflow实现 1. cbow方式 2. skip gram方式 3. 直接生 ...

  3. Word2vec简单整理

    参考:https://zhuanlan.zhihu.com/p/22477976 http://yobobobo001.github.io/2016/05/26/%E6%88%91%E6%89%80% ...

  4. 简单通俗易懂 汽车入门知识图解大集合

    很多车主都想了解更多的汽车知识,以加深对爱车的了解,只是无奈汽车结构之复杂,机械知识之乏味,都一一放弃了.现在这些都不是问题!下面给大家准备了一系列的图解汽车文章,结合高清大图剖析汽车内部结构,让复杂 ...

  5. R语言︱文本挖掘——jiabaR包与分词向量化的simhash算法(与word2vec简单比较)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- <数据挖掘之道>摘录话语:虽然我比 ...

  6. Git简单通俗易懂教程(包含常见问题与实战运用)

    1.版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件.目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术. 实现跨区域多 ...

  7. 互联网公司分布式集群架构图入门解析(简单通俗易懂,超详细)

    一.小型公司网络架构 狗子是某大学计算机专业本科应届毕业生,由于自己的技术不错,再加上互联网产业的巨大利润的驱使,狗子决定走上创业这条路,于是,狗子联合了同学二黑,鸡子,狗蛋等人花费了几个月的时间写出 ...

  8. 01背包问题 动态规划 java实现 简单通俗易懂

    ** 01背包问题 动态规划 ** 1.动态规划 什么是动态规划?动态规划就是将一个大问题不断向下拆分成小问题,直到拆分出的小问题可以求出其解,然后将小问题的解不断的向上合并,最终得到大问题的解决方案 ...

  9. zk-SNARKs详细原理介绍(简单通俗易懂)

    zk-SNARKs 什么是zk-SNARKs? 1. 引言 2. 为什么zk-SNARKs "应该"是很难实现的? 3. zk-SNARKs基础概念 3.1 polynomial ...

最新文章

  1. python强制可读吗_python 中的强制类型转换
  2. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第10章-二阶离散时间时延多智能体系统加权一致性
  3. 奇怪的匿名函数之争EventHandler
  4. python代码生成可执行程序_Python—脚本程序生成exe可执行程序(pyinstaller)
  5. ORACLE数据库触发器
  6. win10 uwp 让焦点在点击在页面空白处时回到textbox中
  7. (总结)HTTP常见错误返回代码
  8. 最大隶属度原则_【模糊数学课程笔记】六、模糊模型识别I(最大隶属度原则)...
  9. python多进程之间的通信:消息队列Queue
  10. sharepoint html 编辑器 ,使用 Web 部件自定义页面简介
  11. linux 关闭 vim配色方案,10 个你值得拥有的 Vim 配色方案
  12. Cannot open include file: 'unistd.h': No such file or directory的解决办法
  13. 花花省V5淘宝客APP源码无加密社交电商自营商城系统带抖音接口
  14. 如何用matlab进行多元函数偏导数计算
  15. 二极管工作原理讲解(转载)
  16. 如何设置需要密码才能访问的共享文件夹?
  17. (廿五)Python爬虫:抓取今日头条图片
  18. CAD2018安装计算机黑屏,简单几步解决cad2019在win10上打不开的问题
  19. 阿里云盘内测申请_阿里云网盘公测预约开始了,现在申请还送2个T的空间!
  20. 1.计算机技术在音乐作品中的使用,探讨计算机技术在音乐创作中的应用研究.doc...

热门文章

  1. Inno Setup 检测已安装的.NET Framework 版本
  2. 使用NPO依赖的一些类库文件介绍
  3. 接口测试文件上传(python+requests)
  4. mysql的十进位,MySQL十进制字段的正确默认值是什么?
  5. kafka python教程_由Flink与Kafka实践探究Kafka的两个问题
  6. 包教会一对一跟着CNS学单细胞测序(含空间转录组、chipseq、RNAseq、Atacseq 和外显子等)3月13日开始...
  7. Leanote使用mysql_搭建个人Leanote云笔记
  8. R语言实现混频数据分析实例----midas回归预测
  9. 学Web前端开发需要哪些基础?零基础小白该怎么入行?
  10. centos 日志切割_CentOS Linux使用logrotate分割管理日志