word2vec 粗略理解

2016年11月07日 14280点热度 1人点赞 0条评论
0. 引言

上周五在公司使用gensim的word2vec实验了一次“文档相似性”计算。匹配出来的结果惨不忍睹,可以用“天马行空”来形容。这就是对word2vec不了解的情况下做调包侠的下场。。。

下面是笔者对word2vec的一些初步了解与效果反思。

本文为原创。
转载需要注明出处:http://www.flyml.net/2016/11/07/word2vec-basic-understanding/

1. 为什么学习w2v?

简单的说,我们在声音与图像领域,深度学习都取得了令人瞩目的成就,其中一个重要的原因,就是DL在这些领域找到了一些“最基础的元素”。而文字、语言方面,可以认为词向量就是这“最基本的元素”。

同时w2v训练出来的词向量还能作为各种NN,比如CNN、RNN的输入。

注意:词向量并不是word2vec的首创,word2vec只是在训练模型的方法上进行了创新(使得需要更少的参数、更快的速度、更好的效果)。最原始的VSM(向量空间模型)可能是词向量的首创。

2. 关于vector的一些语义解释

借用来自TensorFlow官网的一幅介绍图片:

我一开始没有意识到这一个关键点:

在每一幅图里面,向量都相等或者接近相等。

并且需要注意前两幅图都有画出箭头。 这就代表了他们的语义。同时复习一下向量相减:

比如从king指向queen的向量:king --> queen = vector(queen) - vector(king)

可以这么来理解vector(queen) - vector(king) :

queen减去king的属性之后剩余的属性,跟woman减去man之后剩余的属性相等。

因此有等式: queen - king = woman - man (粗黑体表示向量)

下面是gensim加载了google训练的w2v模型之后的计算结果:

出一个小题目供大家思考:shorter - short + longer = ?

 

3. word2vec的适用场景
(1) 推理、问题回答(答案基本上是一个单词或者一个短语。)
(2) Pos Tagging / NER (TensorFlow 官网)
(3) 搜索的自动提示
(4) 各种NN的输入,cnn rnn 。。。
(5) item推荐
知乎上面一个腾讯员工的回答: app 推荐
思路:
将用户下载的app当成一个word序列,然后自动推测下一个app/word 是什么
小结: 这一点思想上跟贝叶斯有点类似, 但是有一个序列/上下文的关系在里面。
4. 上下文
word2vec 以及大多数其他NLP的一个假设:处于相同上下文的单词有相同的语义
比如:
the cats love fish
the kitten love fish
他们的上下文 the X love fish 是一样的。
w2v之中的上下文: 上面b个单词,下面window - b个单词。 window 上下文的长度。
5.那么多vector,全部搜索一遍?
ski-gram , 负采样
只会选取一小部分来计算。
具体没有完全弄清楚 ⊙﹏⊙b汗
6. 说点实际的: 为什么上次效果那么差?
1. 非典型应用场景
w2v 可以计算文档相似度,常用方法:
(1) 文档之中的每个单词计算出向量
(2) 然后把向量加权平均, 获得document vec
(3) 计算各个向量之间的距离
2. 语料库太小
至少需要1000本书
本文为原创文章,转载请注明出处
原文链接:http://www.flyml.net/2016/11/07/word2vec-basic-understanding/

RangerWolf

保持饥渴的专注,追求最佳的品质

文章评论