如何使用NLTK词干提取

1 投票
1 回答
5274 浏览
提问于 2025-04-17 17:58

这有点傻,但我就是无法访问NLTK中的stem函数。

我调用了

import nltk
nltk.stem.porter.step1ab()

但是系统告诉我这个对象没有step1ab这个属性。我想我可能没有正确调用它,但我不太确定应该怎么做才能真正使用它。

1 个回答

8

step1ab()PorterStemmer 类中的一个方法,这个类位于 nltk.stem.porter 模块里。所以你可以这样调用它:

myPorterStemmer = nltk.stem.porter.PorterStemmer()
...
myPorterStemmer.step1ab()

不过,这个方法其实并不是为了直接调用而设计的。通常情况下,你会调用 myPorterStemmer.stem(word),这个调用会让 step1ab() 来完成一部分工作。

如果你真的想单独使用 step1ab,你需要先设置一堆变量,然后你会得到类似这样的结果:

>>> word = "countries"
>>> myStemmer = nltk.stem.porter.PorterStemmer()
>>> myStemmer.b = word
>>> myStemmer.k = len(word) - 1
>>> myStemmer.k0 = 0
>>> myStemmer.step1ab()
>>> myStemmer.b[myStemmer.k0:myStemmer.k+1]
'countri'

撰写回答