logo

토큰화

토큰화 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 부사파생접미사

퀴즈

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

다음 중 한국어에서 흔히 사용되는 형태소의 의미로 올바른 것은?

  • 홀로 쓰일 수 있는 단위
  • 문장을 토큰으로 쪼개는 것
  • 의미가 있는 가장 작은 단위
  • 단어를 분리하는 과정

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

Previous
단어 구름