한국어 형태소 분석
학습 목표
- 한국어가 영어와 다른 언어적 특성(교착어, 띄어쓰기)이 NLP에 미치는 영향을 설명할 수 있습니다
- 형태소(Morpheme)의 개념과 한국어 형태소의 종류를 구분할 수 있습니다
- KoNLPy의 5가지 분석기(Mecab, Okt, Komoran, Hannanum, Kkma)의 특성을 비교하고 선택할 수 있습니다
- 한국어 형태소 분석 코드를 작성하고 결과를 해석할 수 있습니다
- 서브워드 토큰화와 형태소 분석의 관계를 이해할 수 있습니다
왜 중요한가
한국어는 **교착어(Agglutinative Language)**입니다. 어근에 조사, 어미, 접사가 붙어 다양한 형태를 만듭니다. “먹다”라는 단어 하나에서 “먹고”, “먹으며”, “먹었습니다”, “먹지 않겠습니까” 등 수백 가지 변형이 생깁니다. 영어에서 “I eat”을 단순히 공백으로 나누면["I", "eat"]으로 깔끔하게 토큰화됩니다. 하지만 한국어에서 “나는 밥을 먹습니다”를 공백으로 나누면 ["나는", "밥을", "먹습니다"]가 되고, “나”와 “는”, “밥”과 “을”이 분리되지 않아 의미 분석이 어렵습니다.
이 때문에 한국어 NLP에서는 형태소 분석(Morphological Analysis)이 핵심적인 전처리 단계입니다. 현대 서브워드 토크나이저(BPE, SentencePiece)가 이 문제를 어느 정도 완화하지만, 형태소 분석의 원리를 이해하는 것은 한국어 NLP의 기본입니다.
핵심 개념
한국어의 언어적 특성
교착어의 구조
한국어는 어근(Root)에 다양한 접사(Affix)가 결합하여 의미를 구성합니다.띄어쓰기 문제
한국어 띄어쓰기는 규칙이 복잡하고, 실제 텍스트에서 오류가 매우 빈번합니다.형태소란
형태소(Morpheme)는 의미를 가진 최소 단위입니다. 한국어 형태소는 크게 두 가지로 나뉩니다.| 유형 | 설명 | 예시 |
|---|---|---|
| 자립 형태소 | 단독으로 사용 가능한 형태소 | 명사(학교, 사과), 동사 어근(먹, 가), 부사(매우) |
| 의존 형태소 | 단독 사용 불가, 다른 형태소에 붙어 사용 | 조사(은, 는, 이, 가), 어미(다, 습니다), 접사(불, 적) |
KoNLPy 형태소 분석기
KoNLPy(Korean NLP in Python)는 한국어 형태소 분석을 위한 파이썬 패키지입니다. 5가지 형태소 분석기를 통합 인터페이스로 제공합니다.분석기 비교표
| 분석기 | 개발 | 속도 | 정확도 | 사용자 사전 | 특징 |
|---|---|---|---|---|---|
| Mecab | 일본어 MeCab 기반 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 지원 | 가장 빠름, 설치가 까다로울 수 있음 |
| Okt | Twitter 한국어팀 | ⭐⭐⭐ | ⭐⭐⭐ | 미지원 | 정규화, 구어체에 강함 |
| Komoran | Shineware | ⭐⭐⭐ | ⭐⭐⭐⭐ | 지원 | 공백 오류에 강건, Java 기반 |
| Hannanum | KAIST | ⭐⭐ | ⭐⭐⭐ | 지원 | 학술적 정확도, 속도 느림 |
| Kkma | 서울대 IDS | ⭐ | ⭐⭐⭐⭐⭐ | 미지원 | 가장 정확하지만 가장 느림 |
설치 및 기본 사용법
분석기 선택 가이드
영어 토큰화와의 비교
형태소 분석과 서브워드 토큰화의 관계
현대 Transformer 모델은 서브워드 토크나이저를 사용하므로, 형태소 분석기를 직접 사용할 일이 줄었습니다. 하지만 형태소 분석은 여전히 유용합니다.| 접근법 | 장점 | 단점 | 사용 시점 |
|---|---|---|---|
| 서브워드만 | 간단, End-to-End | 띄어쓰기 오류에 약함 | 잘 정제된 데이터 |
| 형태소 + 서브워드 | 정확한 분석 | 파이프라인 복잡 | 비정형 데이터, 소셜 미디어 |
| 형태소만 | 언어학적 분석 | 어휘 크기 큼 | 전통적 ML, 특수 목적 |
AI/ML에서의 활용
- 검색 시스템: 형태소 분석을 통해 “먹었습니다”로 검색해도 “먹다” 관련 문서를 찾을 수 있습니다
- 감성 분석: 조사와 어미를 분리하면 핵심 의미 단어에 집중할 수 있습니다
- 키워드 추출: 명사만 추출하여 문서의 핵심 주제를 파악합니다
- 데이터 증강: 형태소 단위로 분리한 후 동의어 치환 등의 증강이 가능합니다
- RAG 전처리: 한국어 문서의 청크 분할 시 형태소 경계를 고려하면 품질이 향상됩니다
Mecab 설치가 어렵습니다. 대안이 있나요?
Mecab 설치가 어렵습니다. 대안이 있나요?
Mecab은 C++ 기반이라 설치가 까다로울 수 있습니다. 대안으로 Okt나 Komoran을 사용할 수 있습니다. 둘 다 Java 기반이므로 JDK가 필요하지만, pip만으로 설치가 가능합니다. 최근에는
python-mecab-ko 패키지가 설치를 크게 간소화했습니다.Transformer 시대에도 형태소 분석이 필요한가요?
Transformer 시대에도 형태소 분석이 필요한가요?
필수는 아닙니다. 한국어에 특화된 서브워드 토크나이저(예: KLUE BERT의 토크나이저)는 형태소 분석 없이도 합리적인 토큰화를 수행합니다. 하지만 띄어쓰기가 부정확한 텍스트(소셜 미디어, OCR 결과 등)에서는 형태소 분석 전처리가 여전히 도움이 됩니다.
품사 태그(POS Tag)는 어떻게 읽나요?
품사 태그(POS Tag)는 어떻게 읽나요?
KoNLPy에서 사용하는 주요 품사 태그입니다. NNG(일반 명사), NNP(고유 명사), VV(동사), VA(형용사), JKS(주격 조사), JKO(목적격 조사), EF(종결 어미), EP(선어말 어미). 세종 품사 태그 체계를 기반으로 하며, 분석기마다 약간의 차이가 있습니다.
체크리스트
- 교착어의 특성이 토큰화에 미치는 영향을 설명할 수 있다
- 형태소의 정의와 자립/의존 형태소의 차이를 이해한다
- KoNLPy의 5가지 분석기 특성을 비교하고 용도에 맞게 선택할 수 있다
-
morphs(),pos(),nouns()메서드를 활용할 수 있다 - 영어와 한국어의 토큰화 차이를 설명할 수 있다
- 형태소 분석과 서브워드 토큰화의 관계를 이해한다

