塞进裤子ヾ(≧O≦)〃嗷~

0%

NLP基础-语言模型n-gram

语言模型:Unigrams, Bigrams…N-grams

unigram

Unigram:每个单词都是独立的

$$P(w_1,w_2,w_3,…,w_n) = P(w_1)P(w_2)P(w_3)…P(w_n)$$

exp:

$P(今天,是,春节,我们,休息)=P(今天)P(是)P(春节)P(我们)P(休息)$

$P(今天,春节,是,我们,休息)=P(今天)P(春节)P(是)P(我们)P(休息)$

Unigram的局限性:上述例子中后面这两句的概率是一样的,而显然最后一句的概率要低.

如何计算P(word)?

统计单词出现的次数/语料库单词的个数

: 针对没有出现的单词,结果是0,这样是不太合理的.为解决此问题,通常加入平滑项

bigram

一阶马尔科夫假设

  • $P(w_1,w_2,w_3,…w_n)$

    $=P(w_1)P(w_2|w_1)P(w_3|w_2)…P(w_n|w_{n-1})$

    $=P(w_1)\prod_{i=2}^nP(w_i|w_{i-1})$

exp:

  • $P(今天,是,春节,我们,休息)=P(今天)P(是|今天)P(春节|是)P(我们|春节)P(休息|我们)$

  • $P(今天,春节,是,我们,休息)=P(今天)P(春节|今天)P(是|春节)P(我们|是)P(休息|我们)$

$$P(上午|今天)= count(今天上午) / count(今天) $$

n-gram

N-grams是连续的n个token,如n=3

$$P(有|今天,上午)=count(今天上午有)/count(今天上午) $$

平滑项

1.add-one smoothing (laplace smoothing)

$P_{MLE}(w_i|w_{i-1}) = \frac{count(w_{i-1}, w_i)}{count(w_{i-1} )}$

$P_{Add-1}(w_i|w_{i-1}) = \frac{count(w_{i-1}, w_i)+1}{count(w_{i-1} )+V}$

V是词汇表大小,分母加v是保证概率为1

2.add-K smoothing (laplace smoothing)

$P_{Add-K}(w_i|w_{i-1}) = \frac{count(w_{i-1}, w_i)+k}{count(w_{i-1} )+k V}$

3.interpolation

核心思路是使用trigram时同时考虑1-gram,2-gram.3-gram三种加权平均

exp: 考虑如下训练数据

count(in the kitchen)=0 , count(the kitchen)=3, count(kitchen)=4 ,count(arboretum)=0
得到$P(kitchen|in,the)= 0$和$P(arboretum|in,the)= 0$

因为kitchen出现 了4次,arboretum出现了0次,
所以直觉上来说,in the kitchen的概率应大于in the arboretum


4.Good Turning smoothing

古德-图灵估计可以解决n元语法模型(n-gram)中的数据的稀疏问题。

主要的思想是用观察计数较高的 N-gram 数量来重新估计概率大小,并把它指派给那些具有零计数或较低计数的 N-gram。

例:假如你钓了18只鱼,10条鲤鱼,3条黑鱼,2条刀鱼,1条鲨鱼,1条草鱼,1条鳗鱼。

Q1:下一个钓到的鱼是鲨鱼的概率是多少?

Q2:下一条鱼是新鱼种(之前未出现过)概率是多少?

Q3:有新鱼种前提下,下一个钓到的鱼是鲨鱼的概率是多少?

对于Q1:1/18

对于Q2:一般情况下,使用Things seen once: (用已出现一次的事物的数量来帮助估计从来没有见过的事物的数量),即近似为3/18。

对于Q3:有新鱼的前提,掉到鲨鱼的概率是小于1/18的

Good tuning的缺陷及解决:

问题:由于GT方法计算出现i次的依赖于出现i+1次的,而出现i+1次的可能没有。

解决:通过一些算法拟合,估计出现i+1次的值,类似于missing value inputation

生成句子

使用语言模型生成句子
以Unigram和Bigram为例

Re:
贪心学院

if help:小手一抖点个广告 or 大手一挥资助一下