[실습] 3-4 전처리(Preprocess)

1. 모델 데이터 전처리하기

모델을 데이터셋으로 학습시키기 전에 데이터를 모델이 처리할 수 있는 입력 형식으로 전처리해야 합니다. 텍스트, 이미지, 오디오 등 어떤 데이터든 텐서 배치로 변환하고 결합해야 합니다.

Transformers는 데이터를 모델에 맞게 준비하는 데 도움이 되는 여러 전처리 클래스를 제공합니다. 

  • 텍스트 : Tokenizer를 사용하여 텍스트를 토큰 시퀀스로 변환하고, 토큰의 숫자 표현을 만들고, 이를 텐서로 결합합니다.
  • 음성 및 오디오 : Feature extractor를 사용하여 오디오 파형에서 시퀀스 특징을 추출하고 텐서로 변환합니다.
  • 이미지 입력 : ImageProcessor를 사용하여 이미지를 텐서로 변환합니다.
  • 멀티모달 입력 : Processor를 사용하여 토크나이저와 피처 추출기 또는 이미지 프로세서를 결합합니다.
  • AutoProcessor 는 항상 작동하며 사용하는 모델에 맞는 올바른 클래스를 자동으로 선택합니다.
    (토크나이저, 이미지 프로세서, 피처 추출기 또는 프로세서 중 어떤 것을 사용하든 상관없이)

전처리를 시작하기 전에 Datasets 를 설치하여 모델에 적용해볼 데이터 세트를 로드할 수 있도록 준비 합니다.

pip install datasets

2. 자연어처리(NLP : Natural Language Processing)

텍스트 데이터를 전처리하는 데 가장 중요한 도구는 토크나이저입니다. 토크나이저는 일련의 규칙에 따라 텍스트를 토큰으로 분할합니다. 이 토큰들은 숫자로 변환되고 텐서로 변환되어 모델에 입력됩니다. 필요한 추가 입력은 토크나이저가 모델에 추가합니다.

사전 훈련된 모델을 사용하려면 해당 모델을 사전 훈련할 때 사용했던 토크나이저를 사용하는 것이 중요합니다. 동일한 토크나이저를 사용함으로써 사전 훈련 중 동일한 토큰-인덱스(일반적으로 vocab이라고 함)에 해당하는 단어를 사용하여 텍스트가 사전 훈련 코퍼스와 동일한 방식으로 분할됩니다.


1. 사전 훈련된 토크나이저 로딩

먼저 AutoTokenizer.from_pretrained() 메서드를 사용하여 사전 훈련된 토크나이저를 로딩합니다. 토크나이저를 로딩할 때 모델을 사전 훈련할때 사용했던 vocab 사전을 자동으로 다운로드합니다.

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")

2. 텍스트 토큰화

토큰화 할 텍스트를 토크나이저에 전달합니다.

encoded_input = tokenizer("Do not meddle in the affairs of wizards, for they are subtle and quick to anger.")
print(encoded_input)

토크나이저는 세 가지 항목이 있는 딕셔너리를 반환합니다:

  • input_ids: 문장의 각 토큰에 해당하는 인덱스입니다.
  • attention_mask: 토큰을 주의해야 하는지 여부를 나타냅니다.
  • token_type_ids: 둘 이상의 시퀀스가 있을 때 토큰이 속한 시퀀스를 식별합니다.

3. 출력 디코딩

input_ids를 디코딩하여 입력을 반환합니다.

tokenizer.decode(encoded_input["input_ids"])
'[CLS] Do not meddle in the affairs of wizards, for they are subtle and quick to anger. [SEP]'

토크나이저는 문장에 두 개의 특수 토큰인 CLS(분류자)SEP(구분자)를 추가했습니다.

모든 모델이 특수 토큰을 필요로 하는 것은 아니지만, 필요한 경우 토크나이저가 자동으로 추가합니다.


4. 여러 문장 처리

전처리할 문장이 여러 개 있으면 List 로 토크나이저에 전달합니다.

batch_sentences = [
    "But what about second breakfast?",
    "Don't think he knows about second breakfast, Pip.",
    "What about elevensies?",
]
encoded_inputs = tokenizer(batch_sentences)
print(encoded_inputs)

토크나이저는 텍스트 전처리 과정에서 중요한 역할을하며, 사전 훈련된 모델과 함께 사용할 때 특히 중요합니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유