본문 바로가기
NLP

NLTK 패키지 활용한 텍스트 전처리 (1) 토큰화

by rubyda 2020. 10. 7.
728x90

NLTK는 Natural Language ToolKit의 약자로 자연어 처리 및 분석을 위한 파이썬 패키지입니다. NLTK는 토큰생성하기, 형태소 분석, 품사 태깅하기 등 다양한 기능을 제공하고 있습니다. 

문장 토큰화 (Sentence Tokenization)

import nltk

text = "I am a college student. I'm 23 years old. I like to read books."
sentences = nltk.sent_tokenize(text)
print(sentences)

['I am a college student.', "I'm 23 years old.I like to read books."]

 

 

줄바꿈 문자를 기준으로 나누기(LineTokenizer)

# 줄바꿈을 기준으로 나누기(줄바꿈으로 나누어 진다고 가정하에)
from nltk.tokenize import LineTokenizer

line_tokenizer = LineTokenizer()
print(line_tokenizer.tokenize("I am a college student, I'm 23 years old \n I like to read books."))

["I am a college student, I'm 23 years old. ", ' I like to read books.']

 

공백을 기준으로 나누기(SpaceTokenizer)

# 공백을 기준으로 나누기
from nltk.tokenize import SpaceTokenizer

space_tokenizer = SpaceTokenizer()
print(space_tokenizer.tokenize("I am a college student, I'm 23 years old. \n I like to read books."))

['I', 'am', 'a', 'college', 'student,', "I'm", '23', 'years', 'old.', '\n', 'I', 'like', 'to', 'read', 'books.']

 

단어 단위로 나누기(word_tokenize)

# 단어 단위로 나누기
from nltk.tokenize import word_tokenize
print(word_tokenize("I am a college student, I'm 23 years old. \n I like to read books."))

['I', 'am', 'a', 'college', 'student', ',', 'I', "'m", '23', 'years', 'old', '.', 'I', 'like', 'to', 'read', 'books', '.']

 

실제로 word_tokenize가 가장 많이 사용이 된다.

 

TweetTokenizer

from nltk.tokenize import TweetTokenizer

tweet_tokenizer = TweetTokenizer()
print(tweet_tokenizer.tokenize("This is a coool #dummysmiley: :-) : -P <3 :)"))

['This', 'is', 'a', 'coool', '#dummysmiley', ':', ':-)', ':', '-', 'P', '<3', ':)']

 

TweetTokenizer은 다음과 같이 이모티콘을 인식하다.

 

print(word_tokenize("This is a coool #dummysmiley: :-) : -P <3 :)"))

['This', 'is', 'a', 'coool', '#', 'dummysmiley', ':', ':', '-', ')', ':', '-P', '<', '3', ':', ')']

 

word_tokenize와 비교해보면 이모티콘을 인식하지 못하는 것을 알 수 있다.