DIETClassifier란 무엇인가?
Source: Dev.to
DIETClassifier란 무엇인가요?
DIET는 Dual Intent and Entity Transformer의 약자입니다.
단일 신경망으로 다음을 수행합니다:
- Intent 분류
- Entity 추출
엔티티만을 다루는 CRFEntityExtractor와 달리 DIET는 다음을 동시에 학습합니다:
- 전체 문장의 의미 (intent)
- 각 토큰의 역할 (entity 라벨)
이러한 공유 학습을 통해 모델은 intent‑ 수준의 컨텍스트를 활용해 엔티티 예측을 개선하고, 그 반대도 가능합니다.
DIET가 도입된 이유는?
전통적인 파이프라인은 다음과 같았습니다:
- Intent classifier → intent 예측
- Entity extractor → 엔티티를 독립적으로 예측
이 분리 방식의 단점:
- 중복된 특징 계산
- Intent과 엔티티 간 공유 이해 부족
- 학습·튜닝·유지 관리해야 할 모델이 늘어남
DIET는 하나의 모델로 공유 임베딩을 학습하고 두 작업을 동시에 최적화함으로써, 특히 학습 데이터가 제한적일 때 성능을 크게 향상시킵니다.
DIET 작동 방식
DIET는 Transformer 아키텍처를 기반으로 합니다. 높은 수준에서 다음을 수행합니다:
- 입력 텍스트를 토크나이즈
- 토큰을 임베딩으로 변환
- Transformer 레이어를 적용해 컨텍스트 모델링
그리고 다음을 예측합니다:
- 문장 임베딩 → intent
- 토큰‑레벨 라벨 → entities
CRF와 같이 손수 만든 특징을 사용하는 대신, DIET는 특징을 자동으로 학습합니다.
DIET를 이용한 Intent 분류
Intent 분류를 위해 DIET는:
- 전체 문장을 임베딩
- 학습된 intent 임베딩과 비교
- 유사도 점수를 사용해 가장 적합한 intent 선택
예시
“Book a flight to Paris.”
모델은 이 문장 임베딩이 book_flight intent과 가장 가깝다는 것을 학습하여, DIET가 패러프레이즈와 보지 못한 표현에도 잘 일반화하도록 합니다.
DIET를 이용한 Entity 추출
DIET는 CRF와 유사하게 토큰‑레벨 분류를 수행합니다. 각 토큰은 B-entity, I-entity, O 등과 같은 라벨을 받습니다.
Book O
a O
flight O
from O
New B-location
York I-location
to O
Paris B-location
차이점은 DIET가 수동 설계된 특징 대신 Transformer가 만든 컨텍스트 임베딩을 사용한다는 점입니다.
학습 데이터 형식
DIET는 CRF와 동일한 주석이 달린 NLU 데이터를 사용합니다.
version: "3.1"
nlu:
- intent: book_flight
examples: |
- Book a flight from [New York](location) to [Paris](location)
- Fly from [Berlin](location) to [London](location)
Intent와 Entity 학습을 위한 별도 설정이 없으며, DIET는 동일한 데이터에서 두 작업을 모두 학습합니다.
내부 동작 (단순화)
실행 시 DIET는:
- 메시지를 토크나이즈
- 임베딩 생성
- Transformer 레이어 적용
다음과 같이 예측합니다:
- confidence와 함께 Intent
- 토큰별 Entity 라벨
- 엔티티 토큰 그룹화
예시 출력
{
"intent": {
"name": "book_flight",
"confidence": 0.92
},
"entities": [
{
"entity": "location",
"value": "Paris",
"start": 23,
"end": 28
}
]
}
언제 DIETClassifier를 사용해야 할까요?
DIETClassifier는 특히 다음과 같은 경우에 단일 모델로 Intent와 Entity를 모두 처리하고자 할 때 기본 선택이 됩니다:
- 언어가 유연하고 대화형일 때
- 장기적인 확장성을 필요로 하거나 프로덕션 수준의 어시스턴트를 구축할 때
CRFEntityExtractor와 RegexEntityExtractor는 구조가 매우 정형화되었거나 결정적인 엔티티에 여전히 유용하지만, DIET는 현대 Rasa NLU 파이프라인의 핵심 역할을 합니다.