안녕하세요!
오늘은 한국어 데이터 분석을 위해 꼭 필요한 Konlpy(코엔엘파이) 라이브러리에 대해서 포스팅 하겠습니다.
- Konlpy 란?
한국어 자연어 처리를 위한 파이썬 라이브러리 입니다.
- Konlpy의 특징
Konlpy은 다양한 한국어 형태소 분석기를 지원하기 때문에 같은 문장을 다른 방식으로 분석을 하는 것이 가능합니다.
※ Konlpy는 설치 및 사용 환경을 설정하는 과정이 조금 복잡하기 때문에 따로 포스팅을 진행하도록 하겠습니다!
- Konlpy이 제공하는 형태소 분석기 종류
Konlpy은 아래 5가지 형태소 분석기를 제공합니다.
- Kkma
- Komoran
- Hannaum
- Okt (구 Twittrer)
- Mecab: 일본어 형태소 분석기를 한국어로 변경한 분석기로, 세종 말뭉치로 만들어진 CSV 형태의 사전 (Windows에서 잘 지원이 되지 않음)
Mecab은 Windows에서 잘 지원이 되지 않기 때문에 나머지 4개의 형태소 분석기만 비교를 해보도록 하겠습니다!
- Kkma
서울대 지능형 데이터 시스템 연구실에서 개발한 형태소 분석기 입니다.
비교적 정확한 품사를 구분하는 형태소 분석기로 띄어쓰기 오류에 강하고, 다의어 처리에 효과적이지만, 단어의 수가 증가할수록 분석을 진행하는 시간이 가장 크게 느려지는게 특징입니다.
Kkma는 4가지의 함수를 제공합니다.
아래는 4가지 함수와 코드 예시입니다.
from konlpy.tag import Kkma
kkma = Kkma()
text = "꼬꼬마 형태소 분석기를 사용해 봅시다."
- morphs: 문장을 형태소 단위로 추출
morphs_result = kkma.morphs(text)
Output: ['꼬꼬마', '형태소', '분석', '기', '를', '사용', '하', '어', '보', 'ㅂ시다', '.']
- nouns: 문장을 명사 단위로 추출
nouns_result = kkma.nouns(text)
Output: ['꼬꼬마', '형태소', '분석', '분석기']
- pos: 문장을 형태소 단위로 추출, 각 형태소의 품사와 함께 반환
pos_result = kkma.pos(text)
Output: [('꼬꼬마', 'NNG'), ('형태소', 'NNG'), ('분석', 'NNG'), ('기', 'NNG'), ('를', 'JKO'), ('사용', 'NNG'), ('하', 'XSV'), ('어', 'ECS'), ('보', 'VXV'), ('ㅂ시다', 'EFN'), ('.', 'SF')]
- sentences : 여러 문장으로 이루어진 텍스트를 문장 단위로 추출
text = "꼬꼬마 형태소 분석기를 사용해 봅시다. 이것은 간단한 예시입니다."
sentences_result = kkma.sentences(text)
Output: ['꼬꼬마 형태소 분석기를 사용해 봅시다.', '이것은 간단한 예시입니다.']
- Komoran
Shineware에서 개발한 형태소 분석기 입니다.
대용량 말뭉치를 학습하여 품사 태깅에 높은 정확도를 보이며, 빠른 분석 속도와 높은 성능을 보유하고 있습니다.
Komoran은 3가지의 함수를 제공합니다.
아래는 3가지 함수와 코드 예시입니다.
from konlpy.tag import Komoran
komoran = Komoran()
text = "코모란 형태소 분석기를 사용해 봅시다."
- morphs: 문장을 형태소 단위로 추출
morphs_result = komoran.morphs(text)
Output: ['코모란', '형태소', '분석', '기', '를', '사용', '하', '아', '보', 'ㅂ시다', '.']
- nouns: 문장을 명사 단위로 추출
nouns_result = komoran.nouns(text)
Output: ['코모란', '형태소', '분석', '기']
- pos: 문장을 형태소 단위로 추출, 각 형태소의 품사와 함께 반환
pos_result = komoran.pos(text)
Output: [('코모란', 'NNP'), ('형태소', 'NNG'), ('분석', 'NNG'), ('기', 'NNG'), ('를', 'JKO'), ('사용', 'NNG'), ('하', 'XSV'), ('아', 'EC'), ('보', 'VX'), ('ㅂ시다', 'EF'), ('.', 'SF')]
- Hannaum
국립 국어원에서 개발한 형태소 분석기 입니다.
복합 명사를 적절하게 처리하고, 복잡한 구조의 문장에서도 안정적으로 형태소 분석을 수행합니다.
Hannaum은 3가지의 함수를 제공합니다.
아래는 3가지 함수와 코드 예시입니다.
from konlpy.tag import Hannanum
hannanum = Hannanum()
text = "한나눔 형태소 분석기를 사용해 봅시다."
- morphs: 문장을 형태소 단위로 추출
morphs_result = hannanum.morphs(text)
Output: ['한나눔', '형태소', '분석', '기', '를', '사용', '하', '어', '보', 'ㅂ시다', '.']
- nouns: 문장을 명사 단위로 추출
nouns_result = hannanum.nouns(text)
Output: ['한나눔', '형태소', '분석', '기']
- pos: 문장을 형태소 단위로 추출, 각 형태소의 품사와 함께 반환
pos_result = hannanum.pos(text)
Output: [('한나눔', 'N'), ('형태소', 'N'), ('분석', 'N'), ('기', 'N'), ('를', 'J'), ('사용', 'N'), ('하', 'X'), ('어', 'E'), ('보', 'P'), ('ㅂ시다', 'E'), ('.', 'S')]
- Okt
Twitter에서 개발한 형태소 분석기 입니다.
복합 명사 분석에 우수하며, 속도가 빠르고 경량화된 형태로 제공되어 다양한 환경에서 사용할 수 있습니다.
Okt는 4가지의 함수를 제공합니다.
아래는 4가지 함수와 코드 예시입니다.
from konlpy.tag import Okt
okt = Okt()
text = "Okt 형태소 분석기를 사용해 봅시다."
- morphs: 문장을 형태소 단위로 추출
morphs_result = okt.morphs(text)
Output: ['Okt', '형태소', '분석기', '를', '사용', '해', '봅시다', '.']
- nouns: 문장을 명사 단위로 추출
nouns_result = okt.nouns(text)
Output: ['Okt', '형태소', '분석기']
- pos: 문장을 형태소 단위로 추출, 각 형태소의 품사와 함께 반환
pos_result = okt.pos(text)
Output: [('Okt', 'Alpha'), ('형태소', 'Noun'), ('분석기', 'Noun'), ('를', 'Josa'), ('사용', 'Noun'), ('해', 'Verb'), ('봅시다', 'Verb'), ('.', 'Punctuation')]
- phrases: 문장을 어구 단위로 추출
phrases_result = okt.phrases(text)
Output: ['Okt', 'Okt 형태소', '형태소', '분석기', '사용', 'Okt 형태소 분석기', '분석']
Konlpy를 활용하여 한국어 데이터 기반 워드 클라우드, 토픽 모델링 데이터 분석을 진행한 예시는 아래 페이지에서 확인하실 수 있습니다!
궁금한 부분이 있으신 분들은 댓글로 남겨주시면, 답변 드리도록 하겠습니다!
★읽어주셔서 감사합니★