Моя идея будет такой:
- У вас будет большой набор данных, содержащий слова с ошибками и соответствующие им правильные версии. Мы ищем
P(correct|wrong)
. - . Для каждого из них вы затем вычислите
P(wrong|correct)
(помните, что нам нужно это для байесовского значения), что означает вероятность того, что слово будет неверным при правильном. Например: «сыр» может быть написан с ошибкой как «лист» или «лист», причем первый вариант более вероятен и встречается в 75% случаев, а другой - только в 25% случаев. Итак: P(sheese|cheese) = 0.75
, P(shees|chesse) = 0.25
. - Вы также вычисляете общее количество вхождений каждого правильного слова в данном дикте. Значение:
P(cheese) = 0.7
, P(chess) = 0.3
. Это будет наша P(correct)
- Теперь вы получаете неверное слово в качестве входных данных и можете использовать теорему Байеса для вычисления каждой вероятности.
P(correct|wrong) = P(wrong|correct) * P(correct) / P(wrong)
P(wrong)
будет одинаковым для всех возможных правильных слов, поэтому мы можем просто пока проигнорировать это. Нам осталось:
P(correct|wrong) = P(wrong|correct) * P(correct)
(Предполагая P(sheese|chess) =0.25
) Теперь, учитывая слово "sheese"
, мы можем вычислить P(cheese|sheese) = 0.7*0.75 = 0.525
и P(chees|sheese) = 0.3*0.25 = 0.075
, классифицируя слово как "cheese"