kss
kss copied to clipboard
'해', VV+EF` 글자가 사라지는 이슈
problem
QA task를 풀던 중 error 발생.
from kss import split_sentences
text = '감소한 반면에 해・공군의 점유율이 상대적으로 상승하였다. 해, 공 군 및 연구개발 분야의'
# split_sentences(text, backend="mecab") # backend mecab에서도 동일한 문제 발생
split_sentences(text, backend="pynori")
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
1 from kss import split_sentences
2 text = '감소한 반면에 해・공군의 점유율이 상대적으로 상승하였다. 해, 공 군 및 연구개발 분야의'
----> 3 split_sentences(text)
186
187 if isinstance(text, str):
--> 188 return results[0]
189 else:
190 return results
IndexError: list index out of range
최근에 commit된 3.4.3
에서는 disable_mp_post_process
옵션으로 위 에러가 발생하지는 않으나 여전히 해
라는 단어가 사라지는 현상이 발생합니다.
>>> Original text
'감소한 반면에 해・공군의 점유율이 상대적으로 상승하였다. 해, 공 군 및 연구개발 분야의'
<<< Apply split_sentences func
'감소한 반면에 해・공군의 점유율이 상대적으로 상승하였다. , 공 군 및 연구개발 분야의'
tokenized results (pynori)
[('감', NNG), ('소', NNG), ('한', XSV+ETM), (' ', SP), ('반', NNG), ('면', NNG), ('에', JKB), (' ', SP), ('해', VV+EC),
('・', SY), ('공', NNG), ('군', NNG), ('의', JKG), (' ', SP), ('점', NNG), ('유', NNG), ('율', XSN), ('이', JKS), (' ', SP),
('상', NNG), ('대', NNG), ('적', XSN), ('으', JKB), ('로', JKB), (' ', SP), ('상', NNG), ('승', NNG), ('하', XSV),
('였', EP), ('다', EF), ('.', SF), (' ', SP),
('해', VV+EF), # <-- 이 토큰이 사라짐
(',', SC), (' ', SP), ('공', NR), (' ', SP), ('군', NNBC), (' ', SP), ('및', MAJ), (' ', SP), ('연', NNG), ('구', NNG),
('개', NNG), ('발', NNG), (' ', SP), ('분', NNG), ('야', NNG), ('의', NNG)]
- backend
pynori
,mecab
둘 다 동일하게 이슈 발생합니다.
원인?
https://github.com/hyunwoongko/kss/blob/c488bfad8047a972a29c3818463bf41ff8445ca4/kss/kss.py#L527-L528
위 코드에서 cur_stat
은 Stats.DA_MORPH
이라 False
이며 not Table[cur_stat][eojeol.eojeol] & ID.NEXT1
또한 False로 (8
이 나옴) ('해', VV+EF)
토큰이 사라지는데요, 해당 부분이 필요한 이유가 궁금합니다! (input text와 output text가 다른 경우가 많이 존재하는데 이쪽에서 이슈가 발생하는 것 같아서 질문드립니다.)
version
$ pip freeze | grep kss
$ python -V
kss==3.4.2
Python 3.8.12
해당 이슈와 연관있을까요?
- https://github.com/hyunwoongko/kss/issues/16
3.6.4에서 해결되었습니다.