SetFitABSA: 소수 샷 기반 측면 감정 분석
Hugging Face와 Intel Labs는 SetFitABSA를 소개했습니다. 이 프레임워크는 도메인‑특화 측면 기반 감정 분석(ABSA) 모델을 소수 샷으로 학습하도록 설계되었습니다. SetFitABSA는 소수의 라벨링된 예시만으로 텍스트 내 특정 측면에 대한 감정을 감지할 수 있으며, 종종 Llama 2와 T5와 같은 훨씬 큰 생성 모델의 성능과 맞먹거나 이를 능가합니다.
LLM 기반 방법 대비 장점
SetFitABSA는 컨텍스트 학습에 의존하는 대형 언어 모델(LLM) 방법에 비해 두 가지 주요 장점을 제공합니다.
- 프롬프트 제거: LLM은 손수 만든 프롬프트가 필요하고, 이는 표현 방식에 따라 쉽게 깨질 수 있지만, SetFitABSA는 소수의 라벨링된 텍스트 예시만으로 풍부한 임베딩을 직접 생성합니다.
- 빠른 학습 및 라벨링: 이 프레임워크는 특수 태깅 도구가 필요 없는 간단한 학습 데이터 형식을 사용하므로 데이터 라벨링 과정이 더 빠르고 쉬워집니다.
기술 아키텍처: 3단계 프로세스
SetFitABSA는 측면과 해당 감정을 식별하기 위해 순차적인 세 단계 파이프라인을 수행합니다.
1. 측면 후보 추출
시스템은 측면(보통 제품 또는 서비스 특징)이 주로 명사 또는 명사 복합어라고 가정합니다. spaCy를 사용해 텍스트를 토큰화하고, 소수 샷 학습 세트에서 모든 명사와 명사 복합어를 추출하여 "측면 후보"로 간주합니다.
2. 측면/비측면 분류
실제 측면을 일반 명사와 구분하기 위해 SetFit 모델을 이용해 이진 분류기를 학습합니다. 토큰 수준 분류를 위해 문장 수준 SetFit 프레임워크를 적용하려면 각 측면 후보를 전체 문장과 aspect_candidate:training_sentence 템플릿으로 연결합니다.
- True Labels: 학습 세트에서 식별된 측면.
- False Labels: 측면이 아닌 겹치지 않는 후보 명사.
3. 감정 극성 분류
측면이 추출된 후, 두 번째 SetFit 모델을 학습해 각 측면에 감정 극성(예: 긍정, 부정, 중립)을 연결합니다. 이 모델은 추출 모델과 동일한 aspect_candidate:training_sentence 템플릿을 사용하지만, 학습 세트에는 확인된 측면만 포함시켜 극성 분류에만 집중합니다.
벤치마킹 및 성능
SetFitABSA는 SemEval 2014 챌린지의 Laptop14와 Restaurant14 데이터셋을 사용해 평가했으며, 측면 용어 추출(SB1)과 추출 및 극성 예측 결합 작업(SB1+SB2)에 초점을 맞추었습니다.
모델 크기 효율성
SetFitABSA는 경쟁 모델보다 훨씬 작습니다. Llama‑2‑chat은 70억 파라미터를 가지고 있는 반면, SetFitABSA(MPNet 사용)는 두 개의 1억 1천만 파라미터 모델을 사용해 전체 작업에 총 2억 2천만 파라미터만 필요합니다.
| 모델 | 크기 (파라미터) |
|---|---|
| Llama-2-chat | 7B |
| T5-base | 220M |
| GPT2-base | 124M |
| GPT2-medium | 355M |
| SetFit (MPNet) | 2x 110M |
성능 결과
데이터가 적은 상황에서 SetFitABSA는 T5와 GPT2에 비해 명확한 성능 우위를 보입니다. Llama 2와 비교했을 때도 성능이 동등하거나 더 좋으며, Llama 2는 64배 더 큰 모델임에도 불구하고 그렇습니다. 특히 연구진은 Llama 2에 대한 인‑컨텍스트 학습 샘플 수를 늘려도 성능이 일관되게 향상되지 않는다는 점을 관찰했습니다.
구현 및 학습
SetFitABSA는 setfit 라이브러리에 통합되어 있습니다. 학습하려면 setfit[absa] 패키지와 en_core_web_lg spaCy 모델이 필요합니다.
데이터 요구 사항
학습 데이터셋은 네 개의 컬럼을 가진 Dataset 객체여야 합니다:
- text: 전체 문장.
- span: 특정 측면 용어(예: "food").
- label: 극성 라벨(예: "positive").
- ordinal: 동일 측면이 여러 번 등장할 경우의 인덱스(보통 0).
학습 워크플로우
학습은 sentence-transformers/paraphrase-mpnet-base-v2와 같은 Sentence Transformer를 기반으로 AbsaModel을 초기화하고, AbsaTrainer를 사용해 진행합니다. 두 개의 순차 모델을 사용하므로 GPU 가속을 권장합니다; 전체 모델은 Google Colab T4 GPU에서 약 10분 안에 학습될 수 있습니다.