텍스트 정제 실습
텍스트 정제(Text Cleaning)는 원시 텍스트에서 노이즈를 제거하고 일관된 형태로 변환하는 과정입니다. 이 문서에서는 실무에서 자주 마주하는 정제 작업을 Python 코드와 함께 단계별로 실습합니다.유니코드 정규화
같은 글자가 다른 유니코드 코드 포인트를 가질 수 있습니다. 유니코드 정규화(Unicode Normalization)는 이런 불일치를 해결하는 첫 번째 단계입니다.왜 필요한가: “가”라는 글자는 유니코드에서 두 가지 방식으로 표현됩니다. NFC(조합형)는 하나의 코드 포인트로, NFD(분해형)는 초성+중성+종성으로 분해된 형태입니다. 이 두 표현은 눈에는 동일하지만 문자열 비교에서 다르게 취급됩니다.
불용어 제거
불용어(Stop Words)는 분석에 큰 도움이 되지 않는 고빈도 단어입니다. “은”, “는”, “이”, “가” 같은 조사와 “하다”, “있다” 같은 일반적인 동사가 해당합니다.
정제 순서가 중요한가요?
정제 순서가 중요한가요?
네, 일반적으로 유니코드 정규화 → HTML 제거 → 특수문자 처리 → 정규화 순서를 따릅니다. HTML 엔티티(
&)를 먼저 디코딩해야 이후 단계에서 올바른 문자를 처리할 수 있습니다. 불용어 제거는 토큰화 이후에 적용합니다.Transformer 모델을 사용해도 정제가 필요한가요?
Transformer 모델을 사용해도 정제가 필요한가요?
Transformer의 토크나이저는 특수문자와 노이즈를 어느 정도 처리할 수 있지만, HTML 태그, 불필요한 코드, 인코딩 오류 등 명백한 노이즈는 제거하는 것이 좋습니다. 다만, 불용어 제거나 형태소 분석 같은 언어학적 전처리는 Transformer 모델에서는 생략해도 되는 경우가 많습니다.
정규 표현식이 익숙하지 않은데 어떻게 하나요?
정규 표현식이 익숙하지 않은데 어떻게 하나요?
기본적인 패턴만 알면 대부분의 정제 작업을 수행할 수 있습니다.
.(아무 문자), *(0회 이상), +(1회 이상), [](문자 클래스), \s(공백), \d(숫자), \w(단어 문자)만 익히면 됩니다. Python의 re 모듈 공식 문서를 참고하세요.대용량 데이터 정제 시 성능을 높이려면?
대용량 데이터 정제 시 성능을 높이려면?
정규 표현식을 미리 컴파일(
re.compile())하고, 리스트 컴프리헨션 대신 제너레이터를 활용하세요. 데이터가 매우 크다면 multiprocessing이나 pandas의 apply()를 사용한 병렬 처리를 고려하세요. 정제 결과를 캐싱하면 반복 작업을 줄일 수 있습니다.
