[NLP] 데이터 전처리 - 한국어 토큰화

2023. 9. 21. 11:04ML&DL/NLP


[NLP] 토큰화 (tokenization)

토큰화

  • 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고 한다. 
  • 단어 토큰화/ 문장 토큰화

 

 

한국어 토큰화가 어려운 이유

- 같은 단어임에도 다른 조사가 붙어서 다른 단어로 인식됨.

ex) 그가, 그에게, 그를, 그와, 그는

- 한국어는 띄어쓰기가 잘 지켜지지 않음

 

그러면 한국어는 어떻게 토큰화 할까?

- 영어와 달리 한국어는 형태소 단위로 토큰화해야함

 

품사 태깅

- 의미는 다른데 표기가 같은 경우를 고려해 품사 태깅을 해줘야함

ex) 못 => 망치와 못 (명사) / 못 먹는다 (부사)

 

KSS

한국어의 문장 토크나이저

 

Konlpy

한국어 자연어 처리를 위한 패키지로서 다양한 형태소 분석기와 품사 태깅 도구를 제공  

  1. Hannanum (한나눔)
  2. Kkma (꼬꼬마)
  3. Komoran (코모란)
  4. Okt (오픈 한글 텍스트)
  5. Mecab (MeCab-ko)

- 형태소 분석기는 도구마다 성능과 결과가 다르게 나오기 때문에, 상황에 따라 적합한 도구를 사용해야함

 

형태소 분석기 기능

1) morphs : 형태소 추출
2) pos : 품사 태깅(Part-of-speech tagging)
3) nouns : 명사 추출

from konlpy.tag import Okt
from konlpy.tag import Kkma

okt = Okt()
kkma = Kkma()

print('OKT 형태소 분석 :',okt.morphs("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
print('OKT 품사 태깅 :',okt.pos("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))
print('OKT 명사 추출 :',okt.nouns("열심히 코딩한 당신, 연휴에는 여행을 가봐요"))

<결과>

OKT 형태소 분석 : ['열심히', '코딩', '한', '당신', ',', '연휴', '에는', '여행', '을', '가봐요']
OKT 품사 태깅 : [('열심히', 'Adverb'), ('코딩', 'Noun'), ('한', 'Josa'), ('당신', 'Noun'), 

(',', 'Punctuation'), ('연휴', 'Noun'), ('에는', 'Josa'), ('여행', 'Noun'), ('을', 'Josa'), ('가봐요', 'Verb')]
OKT 명사 추출 : ['코딩', '당신', '연휴','여행']