在 nltk 语言模型中定义和使用新的平滑方法
Define and Use new smoothing method in nltk language models
我正在尝试为语言模型提供和测试新的平滑方法。我正在使用 nltk 工具,不想从头开始重新定义所有内容。那么有什么办法可以在nltk模型中定义和使用我自己的平滑方法吗?
编辑:
我正在尝试做这样的事情:
def my_smoothing_method(model) :
# some code using model (MLE) count
model = nltk.lm.MLE(n, smoothing_method=my_smoothing_method)
model.fit(train)
Here,可以看到MLE的定义。如您所见,没有平滑功能的选项(但同一个文件中还有其他功能,可能其中一些符合您的需求?)。
InterpolatedLanguageModel(参见上面的同一文件)确实接受平滑 classifier 需要实现 alpha_gamma(word, context) 和 unigram_score(word) 并且是一个子class 平滑度:
model = nltk.lm.InterpolatedLanguageModel(smoothing_cls=my_smoothing_method, order)
因此,如果您确实需要向 MLE 添加功能 class,您可以这样做,但我不确定这是否是个好主意:
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
我正在尝试为语言模型提供和测试新的平滑方法。我正在使用 nltk 工具,不想从头开始重新定义所有内容。那么有什么办法可以在nltk模型中定义和使用我自己的平滑方法吗?
编辑: 我正在尝试做这样的事情:
def my_smoothing_method(model) :
# some code using model (MLE) count
model = nltk.lm.MLE(n, smoothing_method=my_smoothing_method)
model.fit(train)
Here,可以看到MLE的定义。如您所见,没有平滑功能的选项(但同一个文件中还有其他功能,可能其中一些符合您的需求?)。
InterpolatedLanguageModel(参见上面的同一文件)确实接受平滑 classifier 需要实现 alpha_gamma(word, context) 和 unigram_score(word) 并且是一个子class 平滑度:
model = nltk.lm.InterpolatedLanguageModel(smoothing_cls=my_smoothing_method, order)
因此,如果您确实需要向 MLE 添加功能 class,您可以这样做,但我不确定这是否是个好主意:
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