한국어 형태소 분석
Python에서 한국어 토큰화 방법
- konlpy: hannanum, kkma, okt, komoran 등 Java 기반
- mecab-ko: 일본어 형태소 분석기인 mecab을 한국어에 맞게 수정
- kiwi: C++로 개발된 형태소 분석기
- spaCy: 딥러닝 기반 형태소 분석기. 의존 구문 분석도 제공.
kiwi 사용법
- 설치
!pip install kiwipiepy
- 불러오기
from kiwipiepy import Kiwi
kiwi = Kiwi()
kiwi 형태소 분석
- 형태소 분석
text = '오늘은 자연어 처리를 배우기 좋은 날이다.'
result = kiwi.tokenize(text)
result
kiwi 품사 태그
| 분류 | 태그 | 설명 |
|---|---|---|
| 체언(N) | NNG | 일반 명사 |
| NNP | 고유 명사 | |
| NNB | 의존 명사(것, 수) | |
| NR | 수사 | |
| NP | 대명사(이것, 저것) | |
| 용언(V) | VV | 동사(가다) |
| VA | 형용사(아름답다) | |
| VX | 보조 용언(주다) | |
| VCP | 긍정 지시사(이다) | |
| VCN | 부정 지시사(아니다) | |
| 수식언(M) | MM | 관형사(어느, 한) |
| MAG | 일반 부사(매우) | |
| MAJ | 접속 부사(그리고) | |
| 독립언(I) | IC | 감탄사(와!) |
| 조사(J) | JKS | 주격 조사(이, 가) |
| JKC | 보격 조사(이, 가) | |
| JKG | 관형격 조사(의) | |
| JKO | 목적격 조사(을, 를) | |
| JKB | 부사격 조사(로) | |
| JKV | 호격 조사(야) | |
| JKQ | 인용격 조사(라고) | |
| JX | 보조사(은, 는) | |
| JC | 접속 조사(와, 과) | |
| 어미(E) | EP | 선어말 어미(-었-) |
| EF | 종결 어미(-다) | |
| EC | 연결 어미(-고) | |
| ETN | 명사형 전성 어미(-기) | |
| ETM | 관형형 전성 어미(-는) | |
| 어근(XR) | XR | 어근(훌륭) |
| 접사(X) | XPN | 체언 접두사(맨-) |
| XSN | 명사 파생 접미사(들) | |
| XSV | 동사 파생 접미사(되다) | |
| XSA | 형용사 파생 접미사(롭다) | |
| 부호(S) | SF | 종결 부호(. ! ?) |
| SP | 구분 부호(, / : ;) | |
| SS | 인용 부호 및 괄호(' ") | |
| SE | 줄임표(...) | |
| SO | 붙임표(-) | |
| SW | 기타 특수 문자 | |
| SL | 알파벳(A-Z a-z) | |
| SH | 한자 | |
| SN | 숫자(0-9) | |
| 기타(W, U) | W_URL | URL 주소 |
| W_EMAIL | 이메일 주소 | |
| W_HASHTAG | 해시태그(#abcd) | |
| W_MENTION | 멘션(@abcd) | |
| UN | 분석 불능 |
일반적으로 많이 사용하는 품사 태그
- NNG 일반 명사
- NNP 고유 명사
- VV 동사
- VA 형용사
- XR 어근
kiwi 명사 추출 함수
def extract_nouns(text):
result = kiwi.tokenize(text)
for token in result:
if token.tag in ['NNG', 'NNP']:
yield token.form
# 사용 예시
list(extract_nouns('어제는 홍차를 마시고, 오늘은 커피를 마셨다.'))
한국어 문서 단어 행렬 만들기
# 데이터
import pandas as pd
df = pd.read_csv('news_ai.csv')
# 고유 명사 추가
kiwi.add_user_word('인공지능', 'NNP')
from sklearn.feature_extraction.text import CountVectorizer
# extract_nouns 함수로 토큰화하여 문서단어행렬 만들기
cv = CountVectorizer(max_features=100, tokenizer=extract_nouns)
dtm = cv.fit_transform(df['본문'])
퀴즈
한국어 텍스트 분석에서 주로 사용하는 품사 태그를 모두 고르세요
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.