kenlm python模块详解
1.导入模型
import kenlm
model= kenlm.LanguageModel("a.bin")
a.bin 是训练的统计语言模型
2.打分
1. ** model.score()函数**
score=model.score(sentence, bos=True, eos=True)
sentence:如果句子是汉语,那么需要将句子分词
bos,eos:句子的开头和结尾加上标记
model.score():是log(p(sentence)),p(sentence)是0-1之间的数值,取对数(底数是10)之后,为负数,p(sentence)越大越好,取对数之后仍是越大越好
2. ** model.full_scores()函数**
total=0.0
for score, _, _ in model.full_scores(sentence,bos=True, eos=True):
total+=score
total的结果和model.score()得分是相同的
total==model.score(sentence,bos=True, eos=True)
sentence:同上
bos,eos:同上
score:是每个预测值的对数概率,所有对数概率相加就是句子的概率
score=log(p(<s>/a0))...
total=log(p(a0a1a2a3))
p(a0a1a2a3)=p(<s>/a0)×p(<s>,a0/a1)×p(<s>,a0,a1/a2)×p(<s>,a0,a1,a2/a3)×p(<s>,a0,a1,a2,a3/</s>)
log(p(a0a1a2a3))=log(p(<s>/a0))+log(p(<s>,a0/a1))+log(p(<s>,a0,a1/a2))+log(p(<s>,a0,a1,a2/a3))+log(p(<s>,a0,a1,a2,a3/</s>))
3. ** model.perplexity()函数**
score=model.perplexity(sentence, bos = True, eos = Ture)
score:代表一个句子的困惑度
4. ** 三者之间的关系**
full_scores计算score
结果:
full_scores计算perplexity
方法1:
方法2