4️⃣Feature Extraction

Feature Extraction

NLP에서 특징 추출은 원시 텍스트 데이터를 기계 학습 모델에서 사용할 수 있는 수치 표현으로 변환하는 프로세스를 말합니다.

텐서의 모양은 입력 텍스트의 토큰 수와 BERT 모델에서 숨겨진 레이어의 크기에 따라 달라집니다.

"bert-base-uncased" 모델의 경우 각 토큰은 768차원 벡터로 표현되므로 결과의 모양은 (1, number_of_tokens, 768)이 되며, 여기서 1은 배치 크기가 1임을 나타냅니다(단일 문장을 처리)

from transformers import pipeline

extractor = pipeline(
    model="google-bert/bert-base-uncased", 
    task="feature-extraction"
)
result = extractor("This is a simple test.", return_tensors=True)
result.shape
> torch.Size([1, 8, 768])
from transformers import pipeline

checkpoint = "facebook/bart-base"
feature_extractor = pipeline(
    "feature-extraction",
    framework="pt",
    model=checkpoint
)
text = "Transformers is an awesome library!"

#Reducing along the first dimension to get a 768 dimensional array
result = feature_extractor(text,return_tensors = "pt")[0].numpy().mean(axis=0)
result
  • feature_extractor(text, return_tensors="pt": 입력 텍스트를 특징 추출 파이프라인으로 전달하고 결과를 PyTorch 텐서로 반환하도록 지정합니다. [0]: 입력 텍스트의 특징 표현에 해당하는 출력의 첫 번째 요소를 선택합니다.

  • .numpy(): 파이토치 텐서를 NumPy 배열로 변환합니다.

  • .mean(axis=0): 시퀀스 차원(축 0)에 걸쳐 특징 벡터의 평균을 계산합니다. 이는 모든 토큰의 특징을 768차원의 단일 벡터로 집계하는 방법입니다(BART 베이스의 숨겨진 크기가 768이므로).

Last updated