Почему модель Kenlm lm продолжает возвращать один и тот же балл для разных слов?

#lm #kenlm

Вопрос:

Почему модель 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, Правда’]

Ответ №1:

Понял это сам.

Значение True/False в выводе указывает, является ли слово OOV (вне словарного запаса) или нет. Модель KenLM присваивает этим словам фиксированную вероятность. В примерах в вопросах все последние слова-это OOV.