我是NLTK的新手,并且在词干情况下使用词干功能。

我要处理一个简单的示例语句,即:“打开lightin”。我想看看NLTK提取器是否可以帮助我过滤错字“ lightin”。我已经用“照明”测试了词干分析器,并且snowBall词干分析器可以为我返回正确的单词“ light”,但是snowBall词干分析器在测试中返回“ lightin”。

我的词干过程非常简单:

tokens = "Turn on the lightin"
for token in tokens:
    print("SnowBall Lemmatizer: "+snowBallStemmer.stem(token))


根据NTLK的文档,snowBallStemmer可以用来阻止英语。我想知道为什么snowBallStemmer无法阻止“ lightin”,我该怎么做才能解决此问题。

最佳答案

阻止之前尝试运行拼写检查器(例如pyenchant):

>>> import enchant
>>> from nltk.stem import SnowballStemmer

>>> d = enchant.Dict("en_US")
>>> d.suggest('lightin')
['lighting', 'lighten', 'light in', 'light-in', 'lightning', 'lightering', 'sighting', 'light', 'flitting', 'Litton']

>>> snowball = SnowballStemmer('english')
>>> snowball.stem(d.suggest('lightin')[0])
u'light'

>>> sent = "Turn on the lightin".split()
>>> [snowball.stem(word if d.check(word) else d.suggest(word)[0]) for word in sent]
[u'turn', 'on', u'the', u'light']

10-04 21:28