Traditional Language Model通常用于回答下述问题:
How likely is a string of English words good English ?
(p_{LM}()the house is small()ge p_{LM}() small the is house())
(p_{LM}()I am going home()ge p_{LM}()I am going house())
生成该句子 (W=w_1, w_2, w_3, w_4...w_n) 的概率为(p(W)) 如何计算?
我们可以使用 chain rule 将该句子分解(decompose):
[egin{split}p(w_1, w_2, w_3...w_n) &=p(w_1) * p(w_2|w_1)*p(w_3|w_1,w_2)cdots* p(w_n| w_1, w_2cdots w_{n-1})end{split}
]
我们发现 (p(w_n| w_1, w_2cdots w_{n-1}))需要很多前置项(w_1, w_2cdots w_{n-1}),在数据集中很难计算,十分稀疏(sparse)。
Markov 假设
- 当前词只和前面的词相关;
- 只和前面的(k)个单词相关
这样表示就相对简便。
uni-gram model
[P(w_i|w_0cdots w_{i−1})approx P(w_i)
]
Bi-gram model
[P(w_i|w_0cdots w_{i−1})approx P(w_i|w_{i-1})
]
Tri-gram model
[P(w_i|w_0cdots w_{i−1})approx P(w_i|w_{i-1},w_{i-2})
]
例如,2-gram的 language model:
[p(w_1, w_2, w_3,cdots w_n)approx p(w_1) * p(w_2|w_1) * p(w_3|w_2) cdots p(w_n|w_{n-1})
]
n-gram probability estimation
2-gram概率估计
[p(w_2|w_1)=frac{count(w_1,w_2)}{count(w_1)}
]
所以我们只需要找一个大词库,然后统计(w_1)出现的次数和(w_1,w_2)共同出现的次数,即可。
Linear interpolation
-
Bigram: (P(w_i∣w_{i−1})=lambda_2 P(w_i∣w_{i−1})+ (1−λ_2) P(w_i))
-
Unigram: (P(w_i)=lambda_1 P(w_i)+(1-lambda_1)frac{1}{N})