Tokenizer
는 토큰화와 정수인코딩을 할 때 사용되는 모듈이다.
Tokenization(토큰화) 란?
텍스트 뭉치를 단어, 구 등 의미있는 element로 잘게 나누는 작업을 의미한다.
정수인코딩 이란?
딥러닝 모델이 읽을 수 있도록 토큰화된 문자를 숫자로 변경해주는 작업이다.
1. 준비 사항
1) 데이터 준비
data_list = [
'오늘 내 주식 올랐다',
'오늘도 수고했어',
'너는 할 수 있어',
'오늘 날씨가 좋다',
'지금처럼만 하면 잘될거야',
'넌 너를 좋아해',
'지금 정말 잘하고 있어',
'사랑해',
'오늘 점심 맛있다',
]
2) 모듈 import
from tensorflow.keras.preprocessing.text import Tokenizer
2. Tokenizer()
사용방법
1) default 세팅
Tokenizer()
객체 생성
tokenizer = Tokenizer()
.fit_on_texts
함수를 적용하면 글자(character)와 숫자 정보를 맵핑하는 작업을 한다.
tokenizer.fit_on_texts(texts=data_list) # 인자로 list 타입을 받음
어떤 숫자와 맵핑되었는지는 .word_index
프러퍼티를 통해 확인가능하다.
tokenizer.word_index # 어떤 숫자로 맵핑되었는지 확인
# output
'''
{'오늘': 1,
'있어': 2,
'내': 3,
'주식': 4,
'올랐다': 5,
'오늘도': 6,
'수고했어': 7,
'너는': 8,
'할': 9,
'수': 10,
'날씨가': 11,
'좋다': 12,
'지금처럼만': 13,
'하면': 14,
'잘될거야': 15,
'넌': 16,
'너를': 17,
'좋아해': 18,
'지금': 19,
'정말': 20,
'잘하고': 21,
'사랑해': 22,
'점심': 23,
'맛있다': 24}
'''
.texts_to_sequences
를 통해 정수인코딩된 문장을 출력해 보았다.
seqs = tokenizer.texts_to_sequences(texts=data_list) # 인자로 리스트 타입을 받는다.
for seq in seqs:
print(seq)
# output
'''
[1, 3, 4, 5]
[6, 7]
[8, 9, 10, 2]
[1, 11, 12]
[13, 14, 15]
[16, 17, 18]
[19, 20, 21, 2]
[22]
[1, 23, 24]
'''
2) 글자 단위로 인코딩하기
tokenizer = Tokenizer(char_level=True)
tokenizer.fit_on_texts(texts=data_list) # 위정보로 fit시켜 숫자와 맵핑
char_level=True
는 한 글자 단위로 토큰화 적용을 의미한다.
default는 char_level=False
다. False는 단어 단위 인코딩이다.
.word_index
를 통해 각 글자가 숫자로 맵핑된 것을 확인해 보자.
tokenizer.word_index # 어떤 숫자로 맵핑되었는지 확인
# output
'''
{' ': 1,
'오': 2,
'늘': 3,
'다': 4,
'어': 5,
'있': 6,
'수': 7,
'고': 8,
'너': 9,
'좋': 10,
'지': 11,
'금': 12,
'하': 13,
'잘': 14,
'해': 15,
'내': 16,
'주': 17,
'식': 18,
'올': 19,
'랐': 20,
'도': 21,
'했': 22,
'는': 23,
'할': 24,
'날': 25,
'씨': 26,
'가': 27,
'처': 28,
'럼': 29,
'만': 30,
'면': 31,
'될': 32,
'거': 33,
'야': 34,
'넌': 35,
'를': 36,
'아': 37,
'정': 38,
'말': 39,
'사': 40,
'랑': 41,
'점': 42,
'심': 43,
'맛': 44}
'''
seqs = tokenizer.texts_to_sequences(texts=data_list) # 각문장이 숫자로 변환(정수인코딩) 확인
for seq in seqs:
print(seq)
# output
'''
[2, 3, 1, 16, 1, 17, 18, 1, 19, 20, 4]
[2, 3, 21, 1, 7, 8, 22, 5]
[9, 23, 1, 24, 1, 7, 1, 6, 5]
[2, 3, 1, 25, 26, 27, 1, 10, 4]
[11, 12, 28, 29, 30, 1, 13, 31, 1, 14, 32, 33, 34]
[35, 1, 9, 36, 1, 10, 37, 15]
[11, 12, 1, 38, 39, 1, 14, 13, 8, 1, 6, 5]
[40, 41, 15]
[2, 3, 1, 42, 43, 1, 44, 6, 4]
'''
토큰화와 정수인코딩 후에는 어떤 작업을 해야 할까?
다음작업은 해당 포스팅에서 이어진다.
'머신러닝,딥러닝 > NLP' 카테고리의 다른 글
[keras] 패딩(padding) 하는법 with pad_sequences (0) | 2023.01.02 |
---|---|
konlpy 설치 오류 해결 방법(jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found) (10) | 2022.03.18 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.