토큰화란?
글(문장, 댓글, 기사 등)을 “뜻이 있는 가장 작은 덩어리(보통 ‘단어’나 ‘형태소’라고 부름)”로 잘게 쪼개는 작업
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag
from konlpy.tag import Okt
from konlpy.tag import Kkma
from nltk.tokenize import sent_tokenize
from nltk.tokenize import word_tokenize
from nltk.tokenize import WordPunctTokenizer
from nltk.tokenize import TreebankWordTokenizer
from tensorflow.keras.preprocessing.text import text_to_word_sequence
!pip install kss
import kss
nltk.tokenize.word_tokenizenltk.tag.pos_tagkonlpy.tag.Oktkonlpy.tag.Kkmanltk.tokenize.sent_tokenizenltk.tokenize.word_tokenizenltk.tokenize.WordPunctTokenizernltk.tokenize.TreebankWordTokenizertensorflow.keras.preprocessing.text.text_to_word_sequencekss (Korean Sentence Splitter)!pip install kssOkt, Kkma, Mecab, Hannanum, Komoran
from konlpy.tag import Okt
okt = Okt()
text = "나는 오늘 집에서 공부를 했다."
print(okt.morphs(text)) # ['나', '는', '오늘', '집', '에서', '공부', '를', '했다', '.']
print(okt.pos(text)) # [('나', 'Noun'), ('는', 'Josa'), ...]
import kss
text = "안녕하세요. 오늘도 공부합시다! 네, 알겠어요."
print(list(kss.split_sentences(text)))
# ['안녕하세요.', '오늘도 공부합시다!', '네, 알겠어요.']
from konlpy.tag import Okt
text = "나는 학교에 갔다."
okt = Okt()
tokens = okt.morphs(text)
print(tokens)
# 결과: ['나', '는', '학교', '에', '갔다', '.']
word_tokenize: 단어 토큰화sent_tokenize: 문장 토큰화pos_tag: 품사 태깅
from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.tag import pos_tag
text = "Hello, I'm ChatGPT! Are you learning Python?"
print(sent_tokenize(text)) # ['Hello, I'm ChatGPT!', 'Are you learning Python?']
print(word_tokenize(text)) # ['Hello', ',', 'I', "'m", 'ChatGPT', '!', ...]
print(pos_tag(word_tokenize(text)))
# [('Hello', 'NNP'), (',', ','), ...]
text_to_word_sequence: 구두점 자동 제거, 소문자 변환, 영어 딥러닝용
from tensorflow.keras.preprocessing.text import text_to_word_sequence
text = "Hello, Deep Learning! Let's tokenize this."
print(text_to_word_sequence(text))
# ['hello', 'deep', 'learning', 'lets', 'tokenize', 'this']
sentence = "I am happy."
tokens = sentence.split()
print(tokens)
# 결과: ['I', 'am', 'happy.']
python
복사편집
from konlpy.tag import Okt
okt = Okt()
text = "ChatGPT는 인공지능 AI입니다. 파이썬으로 코딩해요!"
print(okt.morphs(text))
# ['ChatGPT', '는', '인공지능', 'AI', '입니다', '.', '파이썬', '으로', '코딩', '해요', '!']
python
복사편집
import kss
text = "오늘은 AI 세미나! Let's study together. 네, 좋아요."
print(list(kss.split_sentences(text)))
# ['오늘은 AI 세미나!', "Let's study together.", '네, 좋아요.']
word_tokenize + 한글 라이브러리 병행python
복사편집
from nltk.tokenize import word_tokenize
from konlpy.tag import Okt
text_ko = "파이썬과 ChatGPT를 공부해요."
text_en = "Let's learn Python and ChatGPT."
okt = Okt()
print(okt.morphs(text_ko)) # ['파이썬', '과', 'ChatGPT', '를', '공부', '해요', '.']
print(word_tokenize(text_en)) # ['Let', "'s", 'learn', 'Python', 'and', 'ChatGPT', '.']
| 언어/혼합 | 주요 라이브러리 | 특징/추천 상황 |
|---|---|---|
| 한글 | KoNLPy (Okt, Kkma 등) | 형태소 분석(단어, 조사, 어미, 품사) |
| kss | 문장 단위 분리 | |
| 영어 | nltk | 문장/단어 토큰화, 품사 태깅 |
| keras | 딥러닝용 전처리, 구두점 제거 | |
| 혼합(한+영) | KoNLPy (Okt) | 한글/영어/숫자/특수기호 모두 단위별 분리 |
| kss | 문장 단위 분리(혼합문장 포함) | |
| (nltk+konlpy) 병행 | 영어/한글 파트별로 따로따로 분석 |
| 함수명 | 주요 특징 | 추천 용도 |
|---|---|---|
| word_tokenize | 영어 단어 + 구두점 분리 | 영어 일반 텍스트 |
| WordPunctTokenizer | 더 세밀하게 구두점 분리 | 영어, 구두점 강조할 때 |
| TreebankWordTokenizer | 미국 Treebank 코퍼스 기준 | 영어 자연어처리 표준용 |
| sent_tokenize | “문장 단위”로 쪼개기 | 영어 여러 문장 나눌 때 |
| Okt.morphs/pos | 한글 형태소 분석 | 한글(조사, 어미까지 분리) |
| kss.split_sentences | 한글 “문장 단위” 분리 | 한글 뉴스/댓글 등 |