shineware / PyKOMORAN

(Beta) PyKOMORAN is wrapped KOMORAN in Python using Py4J.
https://pydocs.komoran.kr
Apache License 2.0
42 stars 5 forks source link

Mac 환경에서 메소드들이 아무런 값도 반환하지 않는 문제 #58

Open gravityfalls0116 opened 3 years ago

gravityfalls0116 commented 3 years ago

문제 설명

안녕하세요 현재 데이터 분석을 공부하고 있는 학생입니다. 다름이 아니라 Mac 환경에서 Komoran 패키지에 있는 메소드를 사용할때 아무런 값도 출력되지 않는 문제가 있어서 이렇게 문의를 남깁니다.

재현 경로

현재 저는 Window 10과 Mac Catalina (10.15.7) 환경을 번갈아서 사용중입니다. 그런데 Window 10에서는 작동이 원활하게 되는 것을 확인했으나 Mac에서만 문제가 발생합니다. 밑에도 비슷한 이슈가 있었으나 저는 두 환경 모두 사용해야 하는 상황이여서 골치가 아프네요 ㅠ

테스트 코드는 PyKomoran 문서에 있는 소스코드를 그대로 사용했습니다.

스크린샷 2021-07-03 오후 7 04 58

하지만 결과는 get_plain_text 를 제외하면 아무것도 출력하지 못합니다.

스크린샷 2021-07-03 오후 7 08 09

기대 상황

정상적으로 메소드를 실행하면 의도한대로 문장의 품사를 반환해야 할텐데요... ㅠㅠ

환경 정보

어떤 환경에서 이 문제가 발생하였나요?

추가 정보

혹시나 JVM 문제일까 싶어서 현재 제 컴퓨터의 자바와 JVM 버전도 같이 올립니다.

스크린샷 2021-07-03 오후 7 13 15 스크린샷 2021-07-03 오후 7 14 26
9bow commented 3 years ago

안녕하세요, @gravityfalls0116 님. 상세한 리포팅 감사합니다. 혹시 보내주신 코드의 4번째 줄의 PyKOMORAN 객체 생성 부분을 아래 코드의 2번째 줄과 같이 바꿔서 테스트해주실 수 있으실까요?

>>> from PyKomoran import *
>>> komoran = Komoran("EXP") # <--- 객체 생성
>>> str_to_analyze = "① 대한민국은 민주공화국이다. ② 대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다."
>>> print(komoran.get_nouns(str_to_analyze))
['대한민국', '민주공화국', '대한민국', '주권', '국민', '권력', '국민']
>>> print(komoran.get_morphes_by_tags(str_to_analyze, tag_list=['NNP', 'NNG', 'SF']))
['대한민국', '민주공화국', '.', '대한민국', '주권', '국민', '권력', '국민', '.']
>>> print(komoran.get_plain_text(str_to_analyze))
①/SW 대한민국/NNP 은/JX 민주공화국/NNP 이/VCP 다/EF ./SF ②/SW 대한민국/NNP 의/JKG 주권/NNG 은/JX 국민/NNG 에게/JKB 있/VV 고/EC ,/SP 모든/MM 권력/NNG 은/JX 국민/NNG 으로부터/JKB 나오/VV ㄴ다/EF ./SF
>>> print(komoran.get_token_list(str_to_analyze))
[①/SW(0,1), 대한민국/NNP(2,6), 은/JX(6,7), 민주공화국/NNP(8,13), 이/VCP(13,14), 다/EF(14,15), ./SF(15,16), ②/SW(17,18), 대한민국/NNP(19,23), 의/JKG(23,24), 주권/NNG(25,27), 은/JX(27,28), 국민/NNG(29,31), 에게/JKB(31,33), 있/VV(34,35), 고/EC(35,36), ,/SP(36,37), 모든/MM(38,40), 권력/NNG(41,43), 은/JX(43,44), 국민/NNG(45,47), 으로부터/JKB(47,51), 나오/VV(52,54), ㄴ다/EF(53,55), ./SF(55,56)]
>>> print(komoran.get_token_list(str_to_analyze, flatten=False))
[[①/SW(0,1)], [대한민국/NNP(2,6), 은/JX(6,7)], [민주공화국/NNP(8,13), 이/VCP(13,14), 다/EF(14,15), ./SF(15,16)], [②/SW(17,18)], [대한민국/NNP(19,23), 의/JKG(23,24)], [주권/NNG(25,27), 은/JX(27,28)], [국민/NNG(29,31), 에게/JKB(31,33)], [있/VV(34,35), 고/EC(35,36), ,/SP(36,37)], [모든/MM(38,40)], [권력/NNG(41,43), 은/JX(43,44)], [국민/NNG(45,47), 으로부터/JKB(47,51)], [나오/VV(52,54), ㄴ다/EF(53,55), ./SF(55,56)]]
>>> print(komoran.get_token_list(str_to_analyze, use_pos_name=True))
[①/기타기호(논리수학기호,화폐기호)(0,1), 대한민국/고유 명사(2,6), 은/보조사(6,7), 민주공화국/고유 명사(8,13), 이/긍정 지정사(13,14), 다/종결 어미(14,15), ./마침표,물음표,느낌표(15,16), ②/기타기호(논리수학기호,화폐기호)(17,18), 대한민국/고유 명사(19,23), 의/관형격 조사(23,24), 주권/일반 명사(25,27), 은/보조사(27,28), 국민/일반 명사(29,31), 에게/부사격 조사(31,33), 있/동사(34,35), 고/연결 어미(35,36), ,/쉼표,가운뎃점,콜론,빗금(36,37), 모든/관형사(38,40), 권력/일반 명사(41,43), 은/보조사(43,44), 국민/일반 명사(45,47), 으로부터/부사격 조사(47,51), 나오/동사(52,54), ㄴ다/종결 어미(53,55), ./마침표,물음표,느낌표(55,56)]
>>> print(komoran.get_list(str_to_analyze))
[①/SW, 대한민국/NNP, 은/JX, 민주공화국/NNP, 이/VCP, 다/EF, ./SF, ②/SW, 대한민국/NNP, 의/JKG, 주권/NNG, 은/JX, 국민/NNG, 에게/JKB, 있/VV, 고/EC, ,/SP, 모든/MM, 권력/NNG, 은/JX, 국민/NNG, 으로부터/JKB, 나오/VV, ㄴ다/EF, ./SF]
>>>

객체 생성 부분에서 Komoran(DEFAULT['FULLL']) 대신 Komoran("FULL") 또는 Komoran("EXP")로 KOMORAN 객체 생성을 진행해봐주시기 바랍니다. 더불어 혹시 참고하셨던 문서 링크를 알려주실 수 있으실까요? 객체 생성 부분이 Java KOMORAN과 섞인 것 같은데요, 문서의 변경이 필요할 것 같습니다. ^^; 감사합니다.

9bow commented 3 years ago

앗, 덧글을 남기고 확인해보니 DEFAULT_MODEL dict를 기본 PyKomoran 패키지에 alias로 만들어뒀었네요. 다시 확인해보겠습니다. ( )

9bow commented 3 years ago

일단 제 환경(macOS Catalina 10.15.7 / PyKomoran 0.1.6.post1 / Python 3.7.7 / JDK 1.8)에서는 위와 같이 정상 동작을 하고 있어서, Python 버전을 올려보려고 했는데 제가 사용하는 pyenv에서는 3.9.4가 최신이긴 하네요. 일단 3.9.4에서도 정상동작하고 있어서 다른 방법들로 재현을 시도해보겠습니다. (Java 버전을 올리기 어려운 상황이라 다른 방법들을 먼저 좀 시도해보도록 하겠습니다.)

gravityfalls0116 commented 3 years ago

일단 제 환경(macOS Catalina 10.15.7 / PyKomoran 0.1.6.post1 / Python 3.7.7 / JDK 1.8)에서는 위와 같이 정상 동작을 하고 있어서, Python 버전을 올려보려고 했는데 제가 사용하는 pyenv에서는 3.9.4가 최신이긴 하네요. 일단 3.9.4에서도 정상동작하고 있어서 다른 방법들로 재현을 시도해보겠습니다. (Java 버전을 올리기 어려운 상황이라 다른 방법들을 먼저 좀 시도해보도록 하겠습니다.)

안녕하세요!! 늦은 시간인데도 꼼꼼하게 답변해주셔서 정말 감사드립니다 ㅠ

우선 제가 참조했던 문서 링크는 여기입니다 : https://komorandocs.readthedocs.io/ko/latest/pykomoran/tutorial.html

말씀해주신대로 komoran("EXP")komoran("FULL") 을 시도해봤는데요, FULL에서는 모델이 없다고 에러메세지가 뜨고 EXP에서는 여전히 출력값이 출력되지 않네요.. ㅠㅠ

정황상 환경의 문제라면 혹시 저의 개발환경에서 더 알려드려야 할 정보가 있을까요??

9bow commented 3 years ago

앗, 알려주셔서 감사합니다. readthedocs.io 상의 문서가 업데이트 안되고 있었네요. 곧 고치도록 하겠습니다.

KOMORAN에서 기본 제공하는 모델은 2종류로 각각 FULLLIGHT였으나, 모델 이름에 오해의 소지가 있어 각 모델 이름을 EXPSTABLE로 변경하였습니다. (즉, Komoran(DEFAULT_MODEL['FULL'])Komoran("EXP")는 동일 모델입니다.) get_plain_text()가 정상 동작하는 것을 보면 Java 또는 Py4J의 문제일 수도 있을 것 같은데, 제가 현재는 Java 버전을 올리기 어려운 상황이라 재현 테스트에 시간이 다소 걸릴 것 같습니다ㅠ 혹시 Windows 환경에서도 동일한 Java 버전을 사용 중이실까요?

gravityfalls0116 commented 3 years ago

현재 제가 사용하고 있는 Windows 10 자바 버전입니다

image

image

9bow commented 3 years ago

안녕하세요, @gravityfalls0116 님. 개인 사정으로 jdk 버전을 변경할 수 없어 확인이 늦었습니다. 확인 결과 동일한 환경에서 java 1.8에서는 정상 동작하지만, java 16.0.1 환경에서는 비정상 동작하는 것을 확인하였습니다. 문제 확인 및 해결을 위해서는 KOMORAN Core쪽의 확인이 필요할 것 같으며 시간이 다소 소요될 것 같습니다. 혹시 괜찮으시다면 macOS에서도 Java 1.8을 사용해주실 수 있으신지요? 번거롭게 해드려 죄송합니다.

9bow commented 3 years ago

@shin285 님, 아래와 같이 동일 환경에서 java version만 변경(1.8 -> 16.0)했을 때 이슈 재현이 되었습니다. KOMORAN Core쪽 이슈가 아닐까 싶은데요, 혹시 확인이 가능하실까요?

Java 1.8 Java 16.0
shin285 commented 3 years ago

해당 이슈는 KOMORAN이 현재 gradle 기반의 프로젝트로 되어 있는데 최신 버전의 gradle이 아니면 자바 16 버전을 지원하지 않는 것으로 확인되었습니다. 내부 사정으로 인해서 gradle 버전을 올릴 수 없는 상황이라 현재는 자바 버전을 낮추는 방법을 제안드릴 수 밖에 없을 것 같네요..ㅠ 죄송합니다.. 최대한 빠른 시일 내에 해결 할 수 있도록 노력하겠습니다.