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