DIETClassifier란 무엇인가?

발행: (2026년 2월 8일 오전 10:29 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

DIETClassifier란 무엇인가요?

DIET는 Dual Intent and Entity Transformer의 약자입니다.
단일 신경망으로 다음을 수행합니다:

  • Intent 분류
  • Entity 추출

엔티티만을 다루는 CRFEntityExtractor와 달리 DIET는 다음을 동시에 학습합니다:

  • 전체 문장의 의미 (intent)
  • 각 토큰의 역할 (entity 라벨)

이러한 공유 학습을 통해 모델은 intent‑ 수준의 컨텍스트를 활용해 엔티티 예측을 개선하고, 그 반대도 가능합니다.


DIET가 도입된 이유는?

전통적인 파이프라인은 다음과 같았습니다:

  1. Intent classifier → intent 예측
  2. Entity extractor → 엔티티를 독립적으로 예측

이 분리 방식의 단점:

  • 중복된 특징 계산
  • Intent과 엔티티 간 공유 이해 부족
  • 학습·튜닝·유지 관리해야 할 모델이 늘어남

DIET는 하나의 모델로 공유 임베딩을 학습하고 두 작업을 동시에 최적화함으로써, 특히 학습 데이터가 제한적일 때 성능을 크게 향상시킵니다.


DIET 작동 방식

DIET는 Transformer 아키텍처를 기반으로 합니다. 높은 수준에서 다음을 수행합니다:

  1. 입력 텍스트를 토크나이즈
  2. 토큰을 임베딩으로 변환
  3. 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는:

  1. 메시지를 토크나이즈
  2. 임베딩 생성
  3. Transformer 레이어 적용

다음과 같이 예측합니다:

  • confidence와 함께 Intent
  • 토큰별 Entity 라벨
  • 엔티티 토큰 그룹화

예시 출력

{
  "intent": {
    "name": "book_flight",
    "confidence": 0.92
  },
  "entities": [
    {
      "entity": "location",
      "value": "Paris",
      "start": 23,
      "end": 28
    }
  ]
}

언제 DIETClassifier를 사용해야 할까요?

DIETClassifier는 특히 다음과 같은 경우에 단일 모델로 Intent와 Entity를 모두 처리하고자 할 때 기본 선택이 됩니다:

  • 언어가 유연하고 대화형일 때
  • 장기적인 확장성을 필요로 하거나 프로덕션 수준의 어시스턴트를 구축할 때

CRFEntityExtractorRegexEntityExtractor는 구조가 매우 정형화되었거나 결정적인 엔티티에 여전히 유용하지만, DIET는 현대 Rasa NLU 파이프라인의 핵심 역할을 합니다.

0 조회
Back to Blog

관련 글

더 보기 »

sunpeak은 MCP 앱에 전념한다

개요: MCP Apps는 이제 ChatGPT, Claude, Goose 및 VS Code에서 실행됩니다. Claude는 1월 26일에 MCP App 지원을 발표했으며, ChatGPT는 2월 4일에 이를 따랐습니다. 2월 현재…