logo

[text-mining] 토큰화

 

토큰화 tokenization

  • 문장을 토큰(분석의 단위)으로 쪼개는 것
  • 영어의 경우 흔히 단어 단위로 토큰화
    • 단어: 홀로 쓰일 수 있는 단위
    • The apple went bad → the, apple, went, bad
  • 한국어의 경우 흔히 형태소 단위로 토큰화
    • 형태소: 의미가 있는 가장 작은 단위
    • 사과가 상했다 → 사과/N, 가/J, 상하/V, ㅆ/E, 다/E
  • 단어 분리(word segmentation): 띄어쓰기를 하지 않는 중국어, 일본어 등
 

형태소 분석 / 품사 태깅 Part-of-Speech tagging

  • 형태소 분석기를 사용
  • 규칙에 기반한 형태소 분석
    • 규칙에 맞지 않는 사례들 (예: 했었었다, 사겼다 등)
  • 통계(머신 러닝)에 기반한 형태소 분석
 

영어 자연어 처리 라이브러리

  • NLTK: Python의 가장 오래되고 유명한 라이브러리. 한국어 미지원.
  • CoreNLP: 스탠포드 대학에서 개발. 다국어 지원. Java 기반
  • stanza: 딥러닝 기반(pytorch). 한국어 지원
  • spaCy: 딥러닝 기반. 다양한 기능. 다국어 지원
 

SpaCy 설치

!pip install spacy
  • 영어 모형 다운로드
!python -m spacy download en_core_web_sm
  • 한국어 모형
    • 크기 순으로 ko_core_news_sm, ko_core_news_md, ko_core_news_lg가 있음(마지막이 sm, md, lg)
!python -m spacy download ko_core_news_sm
 

SpaCy 사용

# 임포트
import spacy

# 모형 로딩
nlp = spacy.load("en_core_web_sm")

# 영어 텍스트에 모형을 적용
text = "All work and no play makes Jack a dull boy."
doc = nlp(text)
 

토큰별 내용 보기

for token in doc:
    print(token.text,
          token.lemma_,   # 표제어(사전에 등록되는 형태)
          token.pos_,     # 단어의 품사
          token.tag_,     # 자세한 품사
          token.is_stop)  # 불용어 여부

# 용어 설명 보기
spacy.explain('PROPN')
 

spaCy 한국어 품사 태그

분류태그설명
체언(n)ncpa동작성 명사
ncps상태성 명사
ncn비서술성 명사
nq고유명사
nbu단위성 의존 명사
nbn비단위성 의존명사
npp인칭대명사
npd지시대명사
nnc양수사
nno서수사
용언(p)pvd지시동사
pvg일반동사
paa성상형용사
px보조용언
수식언(m)mmd지시관형사
mma성상관형사
mad지시부사
maj접속부사
mag일반부사
관계언(j)jcs주격조사
jco목적격조사
jcc보격조사
jcm관형격조사
jcv호격조사
jca부사격조사
jcj접속격조사
jct공동격조사
jcr인용격조사
jxc통용보조사
jxf종결보조사
jcp서술격조사
어미(e)ep선어말어미
ecc대등적 연결어미
ecs종속적 연결어미
ecx보조적 연결어미
etn명사형어미
etm관형사형어미
ef종결어미
독립언(i)ii감탄사
외국어(f)f외국어
기호(s)sp쉼표
sf마침표
sl여는 기호
sr닫는 기호
sd이음표
se줄임표
su단위기호
sy기타 기호
접사(x)xp접두사
xsn명사파생접미사
xsv동사파생접미사
xsm형용사파생접미사
xsa부사파생접미사
Previous
텍스트 분석의 종류와 사례
Next
의미