logo

한국어 형태소 분석

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['본문'])

퀴즈

문제 1 / 3맞음: 0힌트: 0틀림: 0채점중: 0남음: 3

한국어 텍스트 분석에서 주로 사용하는 품사 태그를 모두 고르세요

  • NNG
  • NNP
  • VV
  • VA
  • XR

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
문장 구조 분석