# Issue & Exception

## &#x20;**이스케이프 문자**

영문 쪽 토크나이저들이나 ETRI API의 경우, 기본적으로 이런 처리를 다 해주지만, 코엔엘파이의 몇몇 모듈들은 이스케이프 문자가 들어갈 경우, 그냥 에러를 리턴해버려서 어느 정도의 전처리 과정이 필요하다.

```python
doc = "input_text"
doc = re.sub('\s'," ", doc)
# 모든 공백문자 제거
```

## 너무 길이가 긴 문서

코엔엘파이의 모듈들은 종종 너무나 긴 텍스트, 특히나 띄어쓰기가 전혀 안된 구문에서 뭔가 큰 문제가 존재하는 듯하다. 그래서 너무나 데이터가 긴 경우, 코엔엘파이가 수용할 수 있는 만큼 문자열을 잘라서 줄 필요가 있다.

```python
doc = "input_text"
length = 3_000  #3000 문자당 자르기
split_list = [doc[i:i+length] for i in range(0, len(doc), length)]
```

물론, 이 경우 정말 중요한 토큰이 3000번째 인덱스라서 중간에 잘려버릴 위험도 있기 때문에 적당히 해당 인덱스에서 예외처리를 해주는 것이 좋을 것같다.

## &#x20;**형태소 분석기 모듈 객체 생성**

Konlpy는 파이썬 라이브러리지만, 내부에서 사용되는 형태소 분석기는 이미 자바에서 만들어진 모듈이며, 이것을 파이썬으로 가져와 작동시키는 구조이다. &#x20;

**그러나 프로그램을 종료하더라도 자바 측에서 실행된 형태소 모듈이 자바 메모리 내에서 내려오지 않는다는 것**이다. 때문에 파이썬에서는 해당 분석기 객체에 접근할 수 없더라도 자바 쪽에서는 호출된 모듈들이 쌓여간다.

&#x20;**즉, 하나의 프로세스에서 반드시 하나의 konlpy 객체를 불러와야 한다.**&#x20;

```python
from konlpy.tag import Komoran
komoran = Komoran(max_heap_size= 1024 * 6) # 반드시 전역 변수에서 한번만 실행하자
def konlpy_morp_analy(text):
	try:
		result = komoran.pos(text)
	except Exception as e:
		return None
	return result
```

