Здравствуйте, я реализую сглаживание Stupid Backoff (стр. 2, уравнение 5). техника для проекта, над которым я работаю, и у меня есть вопрос по его реализации. Это алгоритм сглаживания, используемый в НЛП. Думаю, Гуд-Тьюринг является наиболее известным подобным алгоритмом.
Краткое описание алгоритма: при попытке найти вероятность появления слова в предложении он сначала ищет контекст для слова на уровне n-грамм, и если нет n-граммы такого размера, он возвращается к (n-1)-грамму и умножьте ее значение на 0,4. Рекурсия останавливается на униграммах.
Поэтому, если я хочу найти вероятность «дня» в контексте «солнечный день», я сначала посмотрю, существует ли в корпусе триграмма «солнечный день», если нет, я попытаюсь сделать то же самое с биграмму «солнечный день» и, наконец, просто получить частоту для «дня», деленную на размер корпуса (общее количество слов в обучающих данных).
Мой вопрос: умножаю ли я оценку на 0,4 каждый раз, когда я уменьшаю размер n-граммы?
Таким образом, в приведенном выше примере, если мы не сможем найти триграмму или биграмму, окончательный счет будет:
0,4 * 0,4 * частота (день) / размер_корпуса?
или я просто умножаю один раз на финальном уровне, поэтому, независимо от того, сколько откатов мне нужно сделать, я просто умножаю окончательный счет на 0,4?