함수 'HangulAutomata' 오류?
안녕하세요. KoNLP 패키지를 잘 쓰고 있습니다. 함수 HangulAutomata를 사용하는 데 있어서 한가지 궁금한 게 있어서 도움을 구합니다.
함수 HangulAutomata를 이용해 한글 음절을 출력하고자 하는데 "ㅇㅗㅃㅏ" 의 ㅃ와 같이 받침으로는 불가능한 자음이 들어간 자모연쇄를 입력하면 Error가 납니다.
다른 함수들은 문제가 없으므로 패키지 설치나 java 설치 문제 등은 아닌 것으로 보이고, 일반적인 다른 자음연쇄 경우에는 문제가 없습니다.
HangulAutomata("ㅇㅗㅂㅂㅏ")
출력: "옵바"
HangulAutomata("ㅇㅗㅂㅏ")
출력: "오바"
HangulAutomata("ㅇㅗㅃㅏ")
Error in .jcall(KoHangulAuto, "S", "convert", input) :
java.lang.NullPointerException
이러한 오류를 어떻게 해결하려면 어떻게 해야할까요
제보 감사드립니다.
제가 시스템에 자바 환경이 설정이 되어 있지 않아 원인을 파악하는데 시간이 좀 걸릴거 같습니다.
KoJamoAutomata.java 파일에 있는 feed함수에서 chosung 1, jungsung1, jongsung 0 조건 일 때, KoHangul.getJongsungIdx(ch) 가 -1인지 체크하는 조건문이 있는데, KoHangul클래스의 getJongsungIdx 부분을 보면 HashMap값을 리턴하는 것으로 되어있습니다. 'ㅃ'이 종성으로 구분되어있지 않기에 HashMap.get이 null을 리턴하는데, feed함수에서는 -1과 비교 하려고하여 오류가 나는 듯 합니다. Java 8 기준으로 살펴봤습니다.
else if (jongSung == 0) { // chosung 1 jungsung 1 jongsung 0
if (KoHangul.getJongsungIdx(ch) == -1) {
//if (KoHangul.getJongsungIdx(ch) != null) {
pushcomp();
choSung = ch;
} else {
jongSung = ch;
}
} else { // full
public static Integer getJongsungIdx(char ch) {
return jongsungIdx_.get(ch);
}
private static final HashMap<Character, Integer> jongsungIdx_ = new HashMap<Character, Integer>() {
{
put((char) 0, 0);
put((char) 0x3131, 1);
put((char) 0x3132, 2);
put((char) 0x3133, 3);
put((char) 0x3134, 4);
put((char) 0x3135, 5);
put((char) 0x3136, 6);
put((char) 0x3137, 7);
put((char) 0x3139, 8);
put((char) 0x313a, 9);
put((char) 0x313b, 10);
put((char) 0x313c, 11);
put((char) 0x313d, 12);
put((char) 0x313e, 13);
put((char) 0x313f, 14);
put((char) 0x3140, 15);
put((char) 0x3141, 16);
put((char) 0x3142, 17);
put((char) 0x3144, 18);
put((char) 0x3145, 19);
put((char) 0x3146, 20);
put((char) 0x3147, 21);
put((char) 0x3148, 22);
put((char) 0x314a, 23);
put((char) 0x314b, 24);
put((char) 0x314c, 25);
put((char) 0x314d, 26);
put((char) 0x314e, 27);
}
};
해결이 된 것인가요? 해결 결과를 사용하려면 어떻게 해야하나요?? ㅠㅠㅠㅠㅠ
해결 결과를 사용하려면 어떻게 해야하나요?? 제발 알려주시기 바랍니다!
이 함수를 상시적으로 써야하는데 쓸때마다 수작업하는 게 너무 고됩니다. 어떻게 해야 하는지 좀 알려주세요. 해결이 안되는 건가요???