22. Natural Language Processing
Chapter 06. Natural Language Processing
1. 형태소 분석
형태소란?
언어의 최소 의미 단위
KoNLPy?
KoNLPy는 다음의 설계 철학을 바탕으로 개발됨.
1. 쉽고 간단한 사용법
- 직관적인 함수명을 사용함. 매누얼을 따로 읽는데 많은 시간을 보내지 않아도 설치를 받자마자 바로 실행해서 결과를볼 수 있게 함.
- 확장 가능성
- 형태소 분석기 뿐 아니라 다양한 자연어 처리 기능과 말뭉치를포괄하는 것을 목표로 하며, 따라서 말뭉치, 메소드 등이 추가되는 것을 감안하여 개발을 진행함. NLTK가 다양한 스테머(stemmer)를 지원하는 것과 마찬가지로, 여러 형태소 분석기 중에서 목적과 취향에 맞는 것을 쉽게 선택할 수 있도록 함.
- 친절하고 상세한 문서
- 패키지에서 중요도가 다소 저평가될 수 있는 부분이 문서화인데, 사실 상세한 문서와 풍부한 예제는 초심자에게 가장 큰 도움이 되는 부분이기도 함.
- 특시 NLTK, Gensim[10] 등 다른 파이썬 패키지들과 함께 사용할 때, 어떻게 응용하여 사용할 수 있는지 보여주는 것도 중요함.
- 개방과 공유
- 패키지는 사용 환경이 계속 변할 수 있기 때문에 지속가능성(sustainability)을 유지할 수 있는지가 중요함.
- 또한, 실질적인 사용자의 니즈(needs)를 파악하기 위해서는 누구나 개발에 참여를 할 수 있게 하는 것도 중요함.
- 따라서 본 패키지의 소스는 온라인에 공개하여 참여를 독려하고 있음.
개요
- NLTK 덕에 파이썬으로 자연어 처리를 하는 것이 편리해졌음.
- 단, 한국어만 분석하려 하지 않는다면, 파이썬으로 한국어를 분석할 수 없을까?
- 국문, 영문, 중문 등 다양한 문자가 섞여 있는 문서를 어떻게 분석할 수 있을까?
- 이 발표에서는 자연어처리의 기초적인 개념을 다룬 후, NLTK 등의 자연어처리 라이브러리와 한국어 분석을 위해 개발중인 KoNLPy를 소개함.
- 또, 파이썬으로 한국어로 분석할 때 유용한 몇 가지 트릭을 공유함.
KoNLP, for R
- 한나눔 형태소 분석기 R interface
- 세종계획(한구겅 코퍼스, 사전 등을 마련한 10년 계획 정부사업)의 확장적 사요
- 그 외 NLP를 편리하게 하는 각종 함수 구현
- 많은 down-to-earth 예제를 담은 documentation
- "Python으로도 이런게 있으면 좋겠다!"
NLTK, for Python
- Proter, snowball, Lancaster 등 다양한 stemming 알고리즘 포함
- 그 외 chunking, NER, classification 알고리즘 포함
- 50개가 넘는 (주로 영어지만 다양한 언어의) 코퍼스 포함
- 역시 풍부한 문서
- (Natural) language free, platform free, and free
- "한국어만 지원되면 정말 좋겠다!"
KoNLPy, for Python
- "Standing on the shoulders of gaints"
- 2014년 7월, 한나눔 형태소 분석기만 담아 첫 릴리즈
- 2014년 8월, 꼬꼬마, MeCab-ko 형태소 분석기도 포함하여 v0.3.0 릴리즈
- 국회 의안 등 재사용/재배포가 가능한 공문서 위주로 toying data 추가
- 그 외 각종 튜토리얼, konlpy.utils.pprint 등 편리한 함수 추가
- Github을 통해 누구나 논의와 개발에 참여할 수 있음!