from nltk.tokenize import word_tokenize
분석에 활용하기 위한 자연어 데이터를 코퍼스(Corpus)라고 합니다. 한국어로는 말뭉치라고 하는데요.
코퍼스를 분석에 활용하려면 먼저 의미있는 작은 단위로 나눠야 합니다. 여기에서 '의미있는 작은 단위'를 토큰(Token)이라고 하고, 하나의 코퍼스를 여러 개의 토큰으로 나누는 과정을 토큰화(Tokenization)라고 합니다.
토큰화에는 단어 토큰화와 문장 토큰화가 있습니다. 분석의 목적에 맞게 둘 중 필요한 토큰화 방식을 적절하게 사용하면 되는데요. 문장 토큰화는 다음 챕터에서 알아보고, 일단 이번 챕터에서는 단어 토큰화만 배워보겠습니다.
NLTK 설치
pip install nltk
다음으로, nltk 패키지와 단어 토큰화에 사용될 word_tokenize() 함수를 불러올게요.
from nltk.tokenize import word_tokenize
다음, NLTK에서 제공하는 토큰화 모듈인 punkt를 다운로드 받습니다. punkt는 마침표나 약어(Mr. , Dr.)와 같은 특별한 언어적 특성을 고려하여 토큰화를 할 수 있게 해주는 모듈입니다. 정확한 토큰화를 위해 설치를 해줄게요.
import nltk
nltk.download('punkt')
이제 불러온 함수를 가지고 단어 토큰화를 해보겠습니다.
단어 토큰화 하기
NLTK의 word_tokenize()는 코퍼스를 파라미터로 넘겨서 토큰화 된 단어 리스트를 반환하는 함수입니다. 아래는 사용 예시입니다.
# BTS - Dynamite
text = "Cause I-I-I'm in the stars tonight, So watch me bring the fire and set the night alight"
# 단어 토큰화
tokenized_word = word_tokenize(text)
print(tokenized_word)
실행 결과를 보면, I-I-I는 구분 없이 하나의 토큰이 됐습니다. 또, tonight 뒤에 있던 콤마는 떨어져서 두 개의 토큰이 되었네요.
단어를 토큰으로 나누기 위한 기준은 다양한데요. 기본적으로 띄어쓰기가 기준이 됩니다. 그리고 문장 기호들도 기준이 될 수 있습니다. 위의 예시를 보니 word_tokenize()는 어퍼스트로피( ' )나 콤마( , )를 토큰화의 기준으로 사용하고 있습니다. 반면, 하이픈( - )은 토큰화의 기준으로 사용하지 않고 있네요.
어떤 기준을 가지고 단어 토큰화를 하는게 더 좋다고 할 수는 없습니다. 분석에 활용하려는 코퍼스의 특성에 따라 적절한 토큰화 기준을 사용하면 됩니다.
NLTK는 이런 여러 가지 토큰화의 기준을 처리하기 위해 word_tokenize() 이외에도 다양한 함수들을 제공하는데요.
혹시 다른 단어 토큰화 함수도 사용해 보고 싶다면 이 곳을 참고해주세요.
'Data Analysis > Natural Language Processing(NLP)' 카테고리의 다른 글
정제(Cleaning) (2) | 2023.06.06 |
---|---|
단어 토큰화 실습 (0) | 2023.06.06 |
자연어 전처리란? (0) | 2023.06.06 |
자연어 처리가 어려운 이유 (11) | 2023.06.05 |
자연어 처리란? (0) | 2023.06.05 |