Здесь , вы можете увидеть определение MLE. Как видите, функции сглаживания не существует (но в этом же файле есть и другие, возможно, некоторые из них соответствуют вашим потребностям?).
InterpolatedLanguageModel (см. Тот же файл выше) принимает классификатор сглаживания, который должен реализовывать alpha_gamma (слово, контекст) и unigram_score (слово) и быть подклассом сглаживания:
model = nltk.lm.InterpolatedLanguageModel(smoothing_cls=my_smoothing_method, order)
Так что если вам действительно нужно добавить функциональность в класс MLE, вы можете сделать что-то так, но я не уверен, что это хорошая идея:
class MLE_with_smoothing(LanguageModel):
"""Class for providing MLE ngram model scores.
Inherits initialization from BaseNgramModel.
"""
def unmasked_score(self, word, context=None):
"""Returns the MLE score for a word given a context.
Args:
- word is expcected to be a string
- context is expected to be something reasonably convertible to a tuple
"""
freq = self.context_counts(context).freq(word)
#Do some smothing
return