[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

Keras Tokenizer (단어 인덱스 부여 및 원-핫 인코딩)

inu 2020. 7. 31. 18:24
반응형

Tokenizer

  • 원-핫 인코딩 : 각각의 항목을 벡터차원으로 하고, 표현하고 싶은 항목의 인덱스에 1의 값을 다른 인덱스에는 모두 0을 표기하는 벡터 표현 방식이다.
  • 원-핫 벡터 : 이렇게 표현된 벡터
  • keras의 Tokenizer 메소드로 이를 간단하게 변환할 수 있다.
from keras.preprocessing.text import Tokenizer

samples = ['The cat sat on the mat.', 'The dog ate my homework.']

# 가장 빈도가 높은 1,000개의 단어만 선택하도록하는 Tokenizer 객체
tokenizer = Tokenizer(num_words=1000)
# 그에 맞게 단어 인덱스를 구축
tokenizer.fit_on_texts(samples)

# 문자열을 인덱스의 리스트로 변환
sequences = tokenizer.texts_to_sequences(samples)

# 인덱스기반 원-핫 이진 벡터 표현 확인(원-핫 인코딩 외에 다른 벡터화 방법들도 제공함)
one_hot_results = tokenizer.texts_to_matrix(samples, mode='binary')

# 계산된 단어 인덱스를 dictionary 형태로 확인
word_index = tokenizer.word_index
print('Found %s unique tokens.' % len(word_index))
  • num_words는 주어진 데이터의 문장들에서 빈도수가 높은 n개의 단어만 선택하도록 한다. (동시에 원-핫 벡터의 크기가 되기도 한다.)
  • Tokenizer 객체에 fit_on_texts 메소드를 사용해 현재 Tokenizer 객체를 해당 데이터에 맞게 fitting 해준다. (각 단어 인덱스를 체크하여 각 인덱스별로 벡터를 적절하게 결정한다)
  • texts_to_sequences에 사용할 문자열을 넣으면 해당 문자열의 각 단어에 인덱스를 부여해준다. ('The cat sat on the mat.' => [1, 2, 3, 4, 1, 5])
  • texts_to_matrix는 직접적으로 원-핫 벡터를 확인할 수 있다.
  • word_index는 현재 모델 내부에 계산된 단어 인덱스를 dictionary 형태로 확인한다.
반응형