Лаплас гладкий с триграммами - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть модель триграммы со сглаживанием Лапласа, мое тренировочное предложение A cat sat on the mat. A fat cat sat on the mat. A rat sat on the mat. The rat sat on the cat. A bat spat on the rat that sat on the cat on the mat.

Я хочу оценить тестовое предложение a cat sat on the mat (оценка означает вычисление вероятности). ответ является лог (вероятность) = -4.297. (ответ от моего проф). проблема в том, что я не могу понять расчет. я попробовал вот что: log(p(a))+log(cat|a)+log(sat|a cat)+log(on|cat sat)+log(the|sat on)+log(mat|on the)= -1.0492 + -0.9030 + -0.8129 + -0.845 + -0.452 + -0.5797 Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

1 Ответ

0 голосов
/ 10 ноября 2019

Вы используете марковское приближение биграмной модели. В модели языка триграмм мы имеем дело с тройками токенов, а не пар. Другими словами, вероятность 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)

Профессор Даниал Юрафски (Стэнфорд) может вернуться к этим двум видео, если вам нужно больше понимания:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...