본문 바로가기
AI/Deep-Learning

[TensorFlow] Tokenizer

by Wikinist 2023. 9. 13.

텐서플로우(TensorFlow)의 Tokenizer 클래스는 자연어 처리(Natural Language Processing, NLP) 작업을 수행할 때 텍스트 데이터를 토큰(token)으로 분리하고 관리하기 위한 도구 중 하나입니다. 토큰은 텍스트를 작은 단위로 나눈 것으로, 예를 들면 단어, 문장 부호, 혹은 문자 등이 될 수 있습니다. Tokenizer 클래스는 주로 다음과 같은 목적으로 사용됩니다:

목적

텍스트 토큰화(Tokenization): 주어진 텍스트를 토큰으로 나누는 작업을 수행합니다. 이를 통해 문장을 단어, 문장 부호, 혹은 하위 단위로 분해할 수 있으며, 이러한 토큰은 머신러닝 모델의 입력으로 사용됩니다.

어휘(Vocabulary) 구축: Tokenizer는 데이터로부터 추출한 토큰들을 중복 없이 모아 어휘(Vocabulary)를 구축합니다. 이 어휘는 모델 학습 및 인코딩에 사용됩니다.

텍스트 인코딩(Encoding): Tokenizer는 토큰을 정수로 인코딩하는 기능을 제공합니다. 각 토큰은 어휘에서 고유한 정수 ID에 매핑됩니다. 이러한 정수 ID는 모델의 입력으로 사용되며, 텍스트 데이터를 숫자 형태로 변환합니다.

텍스트 디코딩(Decoding): 정수로 인코딩된 텍스트를 다시 텍스트로 디코딩할 수 있습니다. 이것은 모델의 출력을 해석하거나, 모델이 생성한 텍스트를 실제 문장으로 변환하는 데 유용합니다.

텐서플로우에서 Tokenizer 클래스는 tf.keras.preprocessing.text.Tokenizer로 제공되며, 다음과 같이 사용될 수 있습니다:

from tensorflow.keras.preprocessing.text import Tokenizer

tokenizer = Tokenizer(num_words=1000)  # 어휘 크기 설정
tokenizer.fit_on_texts(texts)  # 텍스트로부터 어휘 구축
sequences = tokenizer.texts_to_sequences(texts)  # 텍스트를 정수 시퀀스로 변환


이를 통해 Tokenizer 클래스를 사용하여 텍스트 데이터를 효과적으로 다룰 수 있으며, 자연어 처리 작업에 유용합니다.

주요 매개변수

텐서플로우(TensorFlow)의 Tokenizer 클래스의 생성자(constructor)에 사용되는 주요 매개변수를 설명해 드리겠습니다. Tokenizer 클래스를 초기화할 때 이러한 매개변수를 설정하여 토큰화 및 어휘 구축 동작을 조절할 수 있습니다.

num_words: 이 매개변수는 어휘(Vocabulary) 크기를 제한하는 데 사용됩니다. 어휘 크기는 데이터로부터 추출된 고유한 토큰의 수를 나타냅니다. num_words를 지정하면 가장 빈도가 높은 num_words개의 토큰만을 어휘에 포함시키고 나머지는 무시합니다. 이것은 메모리 사용을 제한하거나 특정 단어를 제외할 때 유용합니다.

filters: 토큰화 중에 제거할 문자 집합을 지정합니다. 기본적으로 Tokenizer는 알파벳(a-z, A-Z), 숫자(0-9), 공백 문자를 유지하고 나머지 문자를 제거합니다. 예를 들어, filters='!"#$%&()*+,-./:;<=>?@[\\]^_{|}~\t\n'`와 같이 지정하면 이러한 문자들을 제거합니다.

lower: 이 매개변수는 텍스트를 소문자로 변환할지 여부를 결정합니다. 기본값은 True이며, 텍스트를 소문자로 변환합니다. 이렇게 하면 대소문자 구분을 없앨 수 있습니다.

split: 토큰을 분리하는 기준 문자를 지정합니다. 기본값은 공백 문자(' ')이며, 이를 기준으로 텍스트를 토큰으로 분리합니다.

char_level: 이 매개변수는 True 또는 False 값을 가집니다. True로 설정하면 문자 수준(character-level)의 토큰화가 수행됩니다. False로 설정하면 단어 수준(word-level)의 토큰화가 수행됩니다. 문자 수준 토큰화는 글자 단위로 텍스트를 분리하며, 주로 문자열 생성 작업에 사용됩니다.

이러한 매개변수를 조절하여 Tokenizer 클래스의 동작을 사용자 정의할 수 있으며, 특정 NLP 작업에 맞게 데이터를 처리할 수 있습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.