初识word2vec

2016-5-27 14:49| 发布者: For数据| 查看: 5130| 评论: 0

摘要: word2vec是google在2013年推出的做词嵌入(word embedding)的开源工具。简单的说,它在给定的语料库上训练一个模型,然后会输出所有出现在语料库上的单词的向量表示,这个向量称为"word embedding"。基于这个向量表 ...
       word2vec是google在2013年推出的做词嵌入(word embedding)的开源工具。简单的说,它在给定的语料库上训练一个模型,然后会输出所有出现在语料库上的单词的向量表示,这个向量称为"word embedding"。基于这个向量表示,可以计算词与词之间的关系,例如相似性(同义词等),语义关联性(中国-北京=英国-伦敦)等。

       NLP(自然语言处理)中传统的词表示方法是one-hot representation,即把每个单词表示成dim维的稀疏向量,dim等于词汇量的大小。这个稀疏向量只有一个维度(该单词的index)上是1,其余全是0。这个表示方法使得单词之间是孤立的。Word embedding则是把单词的表示降维到n维的稠密向量,n<
       
       除了google自己的word2vec工具,各位对词向量感兴趣的牛人们也相继编写了各自不同的版本.包括:
  • C 版本             http://word2vec.googlecode.com/svn/trunk/
  • python版本    http://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

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

最新评论

GMT+8, 2024-4-19 15:17