阅读202 返回首页    go gooseeker集搜客


初识word2vec

       word2vec是google在2013年推出的做词嵌入(word embedding)的开源工具。简单的说,它在给定的语料库上训练一个模型,然后会输出所有出现在语料库上的单词的向量表示,这个向量称为"word embedding"。基于这个向量表示,可以计算词与词之间的关系,例如相似性(同义词等),语义关联性(中国-北京=英国-伦敦)等。
       NLP(自然语言处理)中传统的词表示方法是one-hot representation,即把每个单词表示成dim维的稀疏向量,dim等于词汇量的大小。这个稀疏向量只有一个维度(该单词的index)上是1,其余全是0。这个表示方法使得单词之间是孤立的。Word embedding则是把单词的表示降维到n维的稠密向量,n<<><>< span=""><><>              除了google自己的word2vec工具,各位对词向量感兴趣的牛人们也相继编写了各自不同的版本.包括:
  • C 版本             https://word2vec.googlecode.com/svn/trunk/
  • python版本    https://radimrehurek.com/gensim/
  • JAVA版本       https://github.com/ansjsun/Word2VEC_java
  • C++版本         https://github.com/jdeng/word2vec
              最权威的当然是C语言版本,但是阅读起来比较困难一点。Python版本有优化处理,所以速度相对来说也不慢,但只是实现了分层softmax方法对skip-gram模型进行训练。Java版本分别实现了分层softmax方法对CBOW模型和skip-gram模型进行训练。C++版本代码可以在windows下编译运行,但需要编译器支持c++11。
       下面介绍word2vec的基本功能。
       1.    计算相似的词
       word2vec可以计算词与词之间的距离,把词看成向量空间上的一个点,distance看成向量空间上点与点的距离。如下图所示,通过对已有文本进行训练,可以计算出与钓鱼岛相似的词,原则上文本量越大,训练处的结果越准确。

             2.    潜在的语言学规律       在对demo-analogy.sh修改后得到下面几个例子:法国的首都是巴黎,英国的首都是伦敦, vector("法国") - vector("巴黎) + vector("英国") --> vector("伦敦")


       3.   词的聚类
       根据词与词之间的相关性进行聚类:如下图所示,摩托罗拉,诺基亚,苹果、三星等手机品牌都聚类到一起。


       4.   短语分析
       训练词语短语之间的关系,通过东北和地区两个词,就能找出与这些词相关的短语。


参考链接:

1. 利用word2vec对关键词进行聚类

2.  word2vec使用指导

3. 利用中文数据跑Google开源项目word2vec

最后更新:2017-01-09 14:08:09

  上一篇:go 为编写网络爬虫程序安装Python3.5
  下一篇:go Scrapy入门程序点评