kenlm语言模型介绍

语言模型

计算P(w1,w2,…,wn)P\left(w_{1}, w_{2}, \dots, w_{n}\right)P(w1,w2,,wn)

利用链式法则:P(A,B,C)=P(A)P(B∣A)P(C∣A,B)P(A, B, C)=P(A) P(B | A) P(C | A, B)P(A,B,C)=P(A)P(BA)P(CA,B)

P(w1,w2,…,wn)=P(w1)P(w2∣w1)…P(wn∣w1,…,wn−1)P\left(w_{1}, w_{2}, \dots, w_{n}\right)=P\left(w_{1}\right) P\left(w_{2} | w_{1}\right) \dots P\left(w_{n} | w_{1}, \dots, w_{n-1}\right)P(w1,w2,,wn)=P(w1)P(w2w1)P(wnw1,,wn1)

常用的N-gram训练工具有SRILM、IRSTLM、BerkeleyLM和KenLM等。

kenlm语言模型介绍

kenlm是一个C++编写的语言模型工具,具有速度快、占用内存小的特点,也提供了Python接口。

步骤:

(1)增加< s>和< /s >标记符,表示句子的开头和结尾

(2)把每个词映射到唯一的数字id

(3)Counting(原始计数)。也就是把相同的字合并,然后排序

(4)Adjusting(调整计数)。其基本思想是对于那些lower-gram,我们不关心其出现的次数,而是关心其作为novel continuation(接续词)的可能性。比如“York”,其在语料中出现的次数一般会比较多,因为“New York”是很高频的词。但别的词把“york”作为接续词的可能性就较低,也就是说它前面的词只有“new”等少数几类词,所以应该给它较低的计数。

a(w1n)={ c(w1n), if n=N or w1=&lt;s&gt;∣v:c(vw1n)&gt;0∣, otherwise a\left(w_{1}^{n}\right)=\left\{\begin{array}{l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值