Я хочу сравнить два метода сглаживания для модели биграмм:
- Сглаживание с доплатой
- Интерполированное абсолютное дисконтирование
Для первого методаЯ нашел несколько кодов.
def calculate_bigram_probabilty(self, previous_word, word):
bigram_word_probability_numerator = self.bigram_frequencies.get((previous_word, word), 0)
bigram_word_probability_denominator = self.unigram_frequencies.get(previous_word, 0)
if self.smoothing:
bigram_word_probability_numerator += 1
bigram_word_probability_denominator += self.unique__bigram_words
return 0.0 if bigram_word_probability_numerator == 0 or bigram_word_probability_denominator == 0 else float(
bigram_word_probability_numerator) / float(bigram_word_probability_denominator)
Однако я ничего не нашел для второго метода, за исключением некоторых ссылок на KneserNeyProbDist.Однако это для триграмм!
Как я могу изменить свой код выше, чтобы рассчитать его?Параметры этого метода должны быть оценены из набора разработки.