2013-05-30 8 views
2

파일에서 형태소 분석을하고 싶습니다. 터미널에서 사용할 때 제대로 작동하지만 텍스트 파일에 적용하면 작동하지 않습니다. 터미널 코드 :파일에서 파이썬 스템밍 단어

print PorterStemmer().stem_word('complications') 

기능 코드 :

def stemming_text_1(): 
    with open('test.txt', 'r') as f: 
     text = f.read() 
     print text 
     singles = []  

     stemmer = PorterStemmer() #problem from HERE 
     for plural in text: 
      singles.append(stemmer.stem(plural)) 
     print singles 

입력 어떤 제안

126211 crashes bookmarks runs error logged debug core bookmarks 
126262 manual change crashes bookmarks propagated ion view bookmarks 

원하는/예상 출력

126211 crash bookmark runs error logged debug core bookmark 
126262 manual change crash bookmark propagated ion view bookmark 

있는 test.txt 크게 감사 할 것이다 d, thanks :)

+0

작동하지 않는 정의 – njzk2

+0

@ njzk2 PorterStemmer(). stem_word ('bookmarks')를하면 북마크가되지만 test.txt 파일에서 읽을 때 출력이 변경되지 않고 북마크가됩니다. 루프에 문제가 있다고 가정합니다. 감사. –

+0

귀하의 질문을 편집했습니다. –

답변

1

형태소 분석기가 작동하려면 단어를 분할해야합니다. 현재 변수 text은 전체 파일을 하나의 큰 문자열로 포함합니다. 루프 for plural in text:text의 각 문자를 plural에 할당합니다.

for plural in text.split():을 대신 시도하십시오.

[편집] 원하는 형식으로 출력을 얻으려면, 당신은 한 번에 모든 것을 읽는 대신 라인으로 파일 라인을 읽을 필요가 :

def stemming_text_1(): 
    with open('test.txt', 'r') as f: 
     for line in f: 
      print line 
      singles = [] 

      stemmer = PorterStemmer() #problem from HERE 
      for plural in line.split(): 
       singles.append(stemmer.stem(plural)) 
      print ' '.join(singles) 
+0

네, 각 단어의 형태소 분석을 볼 수 있습니다. 그러나 질문에서 언급 한 출력을 인쇄하려면 어떻게해야합니까? –

+0

나는이 인쇄물을 좋아하지 않았다. (단식). 단선은 분리되어 있지 않다 .. –

+0

고맙다. 지금 나는 그것을 얻는다. :) –