为什么kenlm模型返回相同的值?我也试过用4克的arpa文件。同样的问题。
import kenlm
model = kenlm.mode('lm/test.arpa') # unigram model.
print( [f'{x[0]:.2f}, {x[1]}, {x[2]}' for x in model.full_scores('this is a sentence', bos=False, eos=False)])
print( [f'{x[0]:.2f}, {x[1]}, {x[2]}' for x in model.full_scores('this is a sentence1', bos=False, eos=False)])
print( [f'{x[0]:.2f}, {x[1]}, {x[2]}' for x in model.full_scores('this is a devil', bos=False, eos=False)])
结果:
[-2.00, 1,真实,"-21.69、1、假","-1.59、1、假",' -2.69,1,真正的']
[-2.00, 1,真实,"-21.69、1、假","-1.59、1、假",' -2.69,1,真正的']
[-2.00, 1,真实,"-21.69、1、假","-1.59、1、假",' -2.69,1,真正的']
我自己想出来的。
输出中的True/False告诉您一个单词是否为OOV(超出词汇表)。KenLM模型为这些单词分配了一个固定的概率。在问题中的例句中,最后一个单词都是oov。