word2vec词向量

Efficient Estimation of Word Representations in Vector Space

向量空间中单词表示的有效估计

这篇论文非常重要,是自然语言词向量的奠基之作,这篇论文虽然不是第一个提出词向量的,但是从这篇论文开始,在大规模语料库上训练词向量成为了现实,要学习自然语言处理,必须先学习词向量,word2vec是大规模语料库词向量的开始。

1. 先导知识

要学习这篇论文,先需要具备一些先导知识:

1.1 语言模型

语言模型:计算一个句子中是正确句子,没有语义和语法错误的概率。

例如:马云后悔创办阿里     0.8

          马云后悔创办腾讯      0.00001

          马云不喜欢钱             0.000000001

语言模型的作用就是去判断上述句子是不是病句,是否符合事实依据。

下面来介绍语言模型的历史:

1.基于专家语法规则的语言模型:

由语言学家总结出一套通用的规则
这种基于语法规则的语言模型尽管有一定的作用,但是随着时代的发展逐步淘汰你能,例如:丑拒、笑skr人,过去它不是一个词,你能说它有语法错误吗。

2.统计语言模型:通过概率计算来刻画语言模型

P(s) = P(w_{1},w_{2},...,w_{n}) = P(w_{1})*P(w_{2}|w_{1})*P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{1}w_{2}...w_{n-2}w_{n-1})

举个例子:p(一个亿 是 小目标) = p(一个亿) *p(是 | 一个亿)*p(小目标 | 一个亿,是)

但是各个概率怎么求呢?学术界分为两种学派:

频率派和贝叶斯学派

暂时只介绍一下频率的计算方法:

例如: P(w_{i}) = \frac{count(w_{i})}{n}          n为语料库单词总个数, count(wi)为wi在语料库中出现的次数。

公式的求解为:频率加条件概率。

例如某个条件概率:P(w_{i}|w_{i-1}) = \frac{P(w_{i-1},w_{i})}{P(w_{i-1})} = \frac{count(w_{i-1},w_{i})}{count(w_{i-1})}

现在,统计语言模型不难对每个句子求出概率了,但是这种计算方法存在一个大问题,如果一个句子是真实存在,没有任何问题的,但是句子中有一个词在语料库中并不存在,那么这样求出的概率便是0了。语料库中不存在不代表真实情况下不存在,我们不想出现这样的情况,于是开始有了下面一种方法:

laplace smoothing: 给那些没有在语料库中出现过的词或词组一个很小的概率,每个词在原来出现次数的基础上依次加一,比如我们有三个词a,b,c;

没有平滑之前:p(a) = 0/1000

                         p(b) = 990/1000

                         p(c) = 10/1000

平滑之后:

                         p(a) = 0/1003

                         p(b) = 990/1003

                         p(c) = 10/1003

尽管平滑解决了语料库中不存在概率就为0的错误现象,但是还存在问题:如果一个句子过长,那么概率因式就非常的长,不利于计算,并且里面还存在许多小概率的形式,最后导致计算出来的概率非常小(稀疏)。

于是有人提出了马尔科夫假设:

一个词的出现仅依赖于前面的一个词或几个词

原式:

P(s) = P(w_{1},w_{2},...,w_{n}) = P(w_{1})*P(w_{2}|w_{1})*P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{1}w_{2}...w_{n-2}w_{n-1})

马尔科夫假设:细分为下面这几种假设

unigram:一个词的出现仅仅与自己有关

P(s) = P(w_{1},w_{2},...,w_{n}) = P(w_{1})*P(w_{2})*P(w_{3})...P(w_{n})

bigram:一个词的出现仅跟前面一个词有关

P(s) = P(w_{1},w_{2},...,w_{n}) = P(w_{1})*P(w_{2}|w_{1})*P(w_{3}|w_{2})...P(w_{n}|w_{n-1})

trigram:一个词的出现仅跟前面两个词有关

P(s) = P(w_{1},w_{2},...,w_{n}) = P(w_{1})*P(w_{2}|w_{1})*P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{n-2}w_{n-1})

k-gram:一个词的出现仅跟前面k个词有关

P(s) = P(w_{1},w_{2},...,w_{n}) = P(w_{1})*P(w_{2}|w_{1})*P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{n-k}...w_{n-2}w_{n-1})

这种假设可以根据个人的需要选择不同的类型,大大简化了计算需求。

既然有不同的语言模型,那用什么来评价语言模型的好坏呢?

学术界提出了一个困惑度的概念

PP(s) = P(s)^{-\frac{1}{n}}     n代表句子单词个数,s代表句子

  2. 论文内容


待续

 

 

 

 

 

 

 

 

 

 

 

         

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值