Вы используете марковское приближение биграмной модели. В модели языка триграмм мы имеем дело с тройками токенов, а не пар. Другими словами, вероятность a cat sat on the mat
должна быть:
log(P(a cat sat on the mat)) =
log(P(a|<s>, <s>)) + log(P(cat|<s>, a)) + log(P(sat|a, cat)) +
log(P(on|cat, sat)) + log(P(the|sat, on)) + log(P(mat|on, the)) +
log(P(</s>|the, mat)) + log(P(</s>|mat, </s>))
Где <s>
используется для обозначения начала предложения и </s>
для обозначения конца предложения. Мы используем триграмму, поэтому в начале предложения и в конце должно быть два из этих двух символов.
И вероятность любой из вышеперечисленных триграмм можно вычислить так:
P(w3|w1, w2) = count(w1, w2, w3) / count(w2 w3)
Профессор Даниал Юрафски (Стэнфорд) может вернуться к этим двум видео, если вам нужно больше понимания: