konlpy / konlpy

Python package for Korean natural language processing.
http://konlpy.org
Other
1.42k stars 333 forks source link

Komoran 사용시, TypeError: iter() returned non-iterator of type 'java.util.ArrayList$Itr' 오류 발생 경우 임시 해결방안 #239

Open Hyeongjoon opened 5 years ago

Hyeongjoon commented 5 years ago

먼저 제 사용환경은 아래와 같습니다.

OS : 윈도우 10

JAVA : java 10.0.1 2018-04-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)

Python : Python 3.7.2

Jpype1 : (0.6.3)

Konlpy : (0.5.1)

_komoran.py 파일 안에 pos 함수안에

result = [(token.getMorph(), token.getPos()) for token in result]

위의 부분에서 자꾸 TypeError: iter() returned non-iterator of type 'java.util.ArrayList$Itr'

의 오류를 뱉어내어 임시로 코드를 수정해본 결과 처리 실행이 되어 혹시 같은 문제를 겪고있는

분들이 있을까봐 임시 해결방안을 공유하고자 올립니다.

_komoran.py 파일 안에 pos 함수안에

    for sentence in sentences:
        result = self.jki.analyze(sentence).getTokenList()
        result = [(token.getMorph(), token.getPos()) for token in result]

이 부분을

    for sentence in sentences:
        result = self.jki.analyze(sentence).getTokenList()
        temp=[]
        for i in range(0,len(result)):
            temp.append((result[i].getMorph(),result[i].getPos()))
        result = temp

아래와 같이 수정을 하니 처리가 됩니다. 원인은 모르겠으나 ㅠㅠㅠ 임시방편임으로 참고만 하시길 바랍니다.

minhoryang commented 5 years ago

@Hyeongjoon 안녕하세요. 혹시 문제가 되었던 sentence를 확보할 수 있을까요? 제 환경에서 재현이 안되어 찾고 있습니다. 혹시 같은 문제가 발생하는 다른 분이 있으시다면 이 이슈에 댓글 달아주시면 감사하겠습니다.

minhoryang commented 5 years ago

JPype쪽 문제로 보이지만, JPype의 저장소에 이것과 관련하여 보고된 이슈가 없어 조금 더 지켜봐야할 것 같습니다.

Hyeongjoon commented 5 years ago

안녕하세요! 답변이 늦어 죄송합니다.

제가 입력했던 sentence는 아래와 같습니다.

[긍정을 배우다] 어렸을 때부터 저는 오기가 한 번 생기면 그것을 해결할 때까지 물고 늘어지는 아이였습니다. 달리기가 느려 계주 때 마다 3등 안에 들지 못해 매일 아침 연습하여 3등을 기록하는가 하면, 동네에서 가장 빠른 미니카를 만들기 위해 공업사에 직접 찾아가 모터를 개조하기도 했습니다. 하지만 이런 성격과 엄한 가정교육 때문인지 저는 어렸을 때 말수가 없었고 다소 '여유'가 없는 아이였습니다. 늘 무언가에 쫓겨 어린애다운 웃음을 보기 힘들었다고 어머니는 회상하십니다.


저작권 이슈가 있을 수 있어 전문은 못 보내드리는점 양해 부탁드립니다.

minhoryang commented 5 years ago

@Hyeongjoon 안녕하세요! 데이터를 보내주셔서 감사합니다. 해당 문장을 엔터를 기준으로 쪼개서 Komoran().pos()에 넣어보았는데 저에게는 재현이 되지 않았습니다.

아마 #201 (빈 문장이 들어올 경우 NullPointerException) 문제일 것으로 보이는데요. 이 PR은 다음주에 출시할 v0.5.2에 포함되어 있기에, 다음주에 다시 설치하여 시도해보시면 잘 될 수 있을 것 같습니다.