2013-03-05 3 views
1

바보 같지만 NLTK의 스템 기능에 액세스 할 수 없습니다.NLTK 스템 사용 방법

나는

import nltk 
nltk.stem.porter.step1ab() 

를 호출하지만이 오브젝트가 step1ab 속성이 없다고 말했다 얻을. 나는 어떻게 든 그것을 정확하게 부르지 않는다고 생각하지만 실제로 그것에 도달하는 방법을 확신 할 수는 없다.

+0

오와 'nltk.stem 수입 포터 에서을 porter.steb1ab()' 같은 결과가 나타납니다 – penguin

답변

8

step1ab()nltk.stem.porter 모듈 내의 클래스 PorterStemmer의 메소드입니다. 따라서 다음과 같이 호출 할 수 있습니다.

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' 
+0

감사합니다. 한 번 더 해답을 알고 있다면,'myPorterStemmer.step1ab()'을 호출하려고하면 TypeError가 발생합니다 : TypeError : step1ab()은 정확히 1 개의 인수 (주어진 2 개)를 취합니다. 그래서 그것은 [이] (http://stackoverflow.com/questions/4909585/interesting-takes-exactly-1-argument-2-given-python-error)와 유사하지만 실제로 어떻게 작동하게 하는지를 생각할 수는 없습니다. . 미안 해요 - 아직도 파이썬 n00b! – penguin

+0

@penguin : 'step1ab'호출 방법에 대한 답변을 업데이트했습니다. 그러나 실제로는 myStemmer.stem (word)를 대신 호출하는 것이 좋을 것입니다. 훨씬 쉽고 모든 단계가 한 번에 끝납니다. – Junuxx

+0

@ Junuxx- 완벽한 - 도와 주셔서 감사합니다! – penguin