kenlm语言模型介绍

语言模型

计算 P ( w 1 , w 2 , … , w n ) 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 ( w 1 , w 2 , … , w n ) = P ( w 1 ) P ( w 2 ∣ w 1 ) … P ( w n ∣ w 1 , … , w n − 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 ( w 1 n ) =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值