콘텐츠로 이동

1. 한눈에 보기

1-1. 세 개념이 어디에 놓이는가

대화 시스템은 보통 아래 파이프라인으로 나뉩니다. 일반론에서는 dialog act, intent와 이번 발화에서 추출한 entity/slot 후보를 NLU 출력으로 보고, DST가 누적 slot 상태를 관리합니다. 이 저장소도 NLU가 entities를 반환하고 Runtime이 이를 slot update로 반영하므로, 누적 Slots 자체를 NLU 출력으로 보지는 않습니다.

flowchart LR
    IN["사용자 입력"] --> NLU
    subgraph NLU["NLU · 자연어 이해"]
        direction TB
        DA["Dialog act<br>발화의 행위 유형"]
        IT["Intent<br>달성하려는 과업"]
        SL["Slots<br>과업에 필요한 값"]
    end
    NLU --> DST["DST<br>대화 상태 누적"]
    DST --> POL["Policy<br>다음 시스템 행동 결정"]
    POL --> NLG["NLG<br>응답 문장 생성"]
    NLG --> OUT["시스템 응답"]

1-2. 한 문장을 세 층으로 쪼개면

같은 발화 하나가 세 개념에서 각각 다른 것을 답합니다.

flowchart TB
    S["“강남에 있는 이탈리안 식당 7시로 예약해줘”"]
    S --> A["Dialog act = request<br>· 무엇을 하고 있나 → 요청"]
    S --> B["Intent = book_restaurant<br>· 무엇을 이루려 하나 → 식당 예약"]
    S --> C["Slots<br>· 그러려면 어떤 값이 필요한가"]
    C --> C1["area = 강남 ✓"]
    C --> C2["food = 이탈리안 ✓"]
    C --> C3["time = 19:00 ✓"]
    C --> C4["people = 미확정 ✗"]
개념 답하는 질문 도메인 의존성 라벨 규모
Dialog act 이 발화로 무엇을 하고 있나 독립 (어느 도메인에도 공통) 수십 개 · 고정 태그셋 inform, request, confirm, thank
Intent 사용자가 무엇을 이루려 하나 의존 (서비스마다 새로 정의) 수십~수백 개 book_restaurant, check_weather
Slots 그 과업에 어떤 이 필요한가 의존 (intent마다 다름) intent별 3~10개 area=강남, time=19:00

1-3. 실제 턴은 이렇게 돌아간다

slot 이 다 차지 않으면 같은 자리에서 되묻는 루프가 프레임 기반 대화 시스템의 기본 골격입니다.

flowchart LR
    A["사용자 발화"] --> B["dialog act 판별"]
    B --> C{"intent 확정?"}
    C -- "아니오" --> D["명확화 질문"]
    D --> A
    C -- "예" --> E["frame 선택"]
    E --> F["slot 채우기"]
    F --> G{"required slot<br>모두 채워졌나?"}
    G -- "아니오" --> H["부족한 slot 되묻기"]
    H --> A
    G -- "예" --> I["과업 실행 · 다음 단계로"]

2. 개념별 설명

2-1. Dialog act — 발화의 행위

  • 발화를 "무슨 내용인가"가 아니라 "무슨 행위를 수행하는가" 로 분류하는 라벨입니다. "창문 좀 열어 주실래요?"는 형태는 질문이지만 행위는 요청입니다.
  • 뿌리는 언어철학의 speech act theory 입니다. Austin(1962)이 발화를 행위로 보는 관점을 제시하고, Searle(1969)이 이를 유형으로 분류했습니다.
  • 대화 시스템용으로 표준화한 것이 DAMSL(Core & Allen, 1997). 각 발화에 두 방향의 기능을 붙입니다.
    • forward-looking function: 이 발화가 이후 대화에 거는 제약 — statement, info-request, thanking
    • backward-looking function: 앞 발화에 대한 반응 — accept, reject, answer
  • 이를 Switchboard 전화 대화에 맞게 고친 SWBD-DAMSL 은 기본 태그 약 50개에 부가 표시를 조합해 실제로 약 220종이 쓰였고, 이후 연구에서는 42개 태그셋으로 축약한 버전이 사실상 표준이 되었습니다.
  • 현재의 국제 표준은 ISO 24617-2 입니다. 하나의 발화가 여러 기능을 동시에 갖는 다차원 주석(9개 semantic dimension)을 전제하고, DiAML 이라는 XML 기반 표현 형식과 형식 의미론을 정의합니다.

2-2. Intent — 사용자가 이루려는 과업

  • 발화를 서비스가 제공하는 기능 단위로 분류합니다. book_restaurant, check_flight_status, play_music 처럼 도메인마다 새로 설계합니다.
  • dialog act 와 달리 재사용되지 않습니다. 태그셋 자체가 그 서비스의 기능 목록이기 때문입니다. 그래서 intent 설계는 사실상 제품 범위 설계입니다.
  • 벤치마크의 계보
    • ATIS(1990): 항공편 문의 음성 코퍼스. intent + slot 주석의 사실상 원형이며 지금도 표준 벤치마크로 쓰입니다.
    • SNIPS(2018): 7개 도메인 음성 비서용 데이터셋. ATIS 와 함께 논문에서 거의 항상 쌍으로 보고됩니다.
  • 실무의 어려운 지점
    • open intent / OOS: 정의된 목록에 없는 발화를 "모르겠다"로 반환해야 하는데, 닫힌 분류기는 억지로 하나를 고릅니다. fallback 설계와 직결됩니다.
    • multi-intent: "예약 취소하고 환불도 해줘"처럼 한 발화에 과업이 둘 이상인 경우.
    • intent 수가 늘어날수록 경계가 모호해져 라벨 간 충돌이 생깁니다.

2-3. Slots — 과업을 실행하기 위한

  • intent 가 정해지면 그 과업을 실행하는 데 필요한 정보 항목들이 따라옵니다. 이 항목들의 묶음을 frame, 각 항목을 slot 이라 부릅니다.
  • 채우는 방식은 두 갈래입니다.
    • span 추출: 발화에서 값에 해당하는 구간을 태깅. 관행적으로 BIO(IOB) 스킴을 씁니다 — 원래 Ramshaw & Marcus(1995)가 청킹을 태깅 문제로 바꾸며 도입한 표기입니다.
    • 분류: 값이 미리 정해진 집합일 때 (price_range = cheap / moderate / expensive) span 대신 후보 중 선택.
  • required / optional 구분이 대화 흐름을 지배합니다. required slot 이 비어 있으면 진행하지 못하고 되묻고, 다 차면 다음 단계로 넘어갑니다.
  • 턴이 누적되며 slot 값을 유지·갱신하는 일은 DST(Dialogue State Tracking) 의 몫입니다. NLU 는 "이번 턴에 뭐가 나왔나"만, DST 는 "지금까지 확정된 상태가 무엇인가"를 답합니다.
  • 확장 흐름: MultiWOZ(2018)가 다중 도메인·다중 frame 을 표준 벤치마크로 만들고, Schema-Guided Dialogue(2020)는 intent/slot 목록 자체를 입력으로 주는 스키마 기반 패러다임을 제안해 학습 때 못 본 도메인에도 대응할 수 있게 했습니다.

2-4. 자주 헷갈리는 지점


3. 참고: sohri-graph-builder 와의 대응

지금 저장소의 용어로 옮기면 이렇습니다.

survey 개념 이 저장소에서
Dialog act NLUResult.dialogue_act의 16종 enum. Global/Task policy, routing, NLG speech-act rule이 소비
Intent NLUResult.intent. Scenario condition과 공통 policy가 소비
Confidence STT 입력 confidence와 NLU 결과 confidence가 별도 의미를 가짐. 전자는 NLU 전 fallback gate, 후자는 NLG 확인 신호
Frame 시나리오 그래프의 노드 하나
Entity / Slots NLU entities, 전역 slots registry, node collect_slots, Runtime slot_updates
DST DialogueState, TurnContext, DSTManager
Dialogue Policy GlobalPolicyPipeline, TaskPolicyPipeline, PostPolicyPipeline
Routing TransitionEngine, scenario global_transitionsnext_nodes

무응답과 이해 불가는 각각 dialogue_act=silencenull로 구분합니다. 현재 FallbackPolicy는 node의 responses.no_input/not_understood를 바로 출력하지 않고 LLM으로 맥락형 응답을 생성하며, 해당 response는 생성 실패 안전망으로만 사용합니다.


4. 참고 자료

교과서 · 개론

  • Jurafsky & Martin, Speech and Language Processing 3rd ed. draft (2026-01-06) — 전체 목차 및 PDF
    • Ch. 25 Conversation and its Structure / Appendix K Frame-based Dialogue Systems
  • 이전 판에서는 한 장으로 묶여 있었습니다 — Ch. 15 Chatbots & Dialogue Systems (2025-01 draft)
    • 구성: Properties of Human Conversation · Frame-Based Dialogue Systems · Frames and Slot Filling · Dialogue Acts and Dialogue State · Dialogue State Tracking

Dialog act — 이론과 표준

  • Austin, J. L. (1962). How to Do Things with Words. Harvard University Press. — speech act 개념의 출발점 (도서, 온라인 원문 없음)
  • Searle, J. R. (1969). Speech Acts: An Essay in the Philosophy of Language. Cambridge University Press. — 발화 행위의 유형 분류 (도서)
  • Core, M. & Allen, J. (1997). DAMSL: Dialog Act Markup in Several Layers — forward/backward-looking function 체계
  • Jurafsky, D. et al. (1997). Switchboard SWBD-DAMSL Coders Manual — 실제 태그셋과 코딩 지침
  • Stolcke, A. et al. (2000). Dialogue Act Modeling for Automatic Tagging and Recognition of Conversational Speech, Computational Linguistics 26(3) — 42 태그셋 기반 자동 분류의 기준 논문
  • Bunt, H. et al. (2012). ISO 24617-2: A semantically-based standard for dialogue annotation, LREC — 다차원 주석과 DiAML
  • ISO 24617-2:2012 표준 페이지

Intent · Slot — 데이터셋

  • Hemphill, C. T. et al. (1990). The ATIS Spoken Language Systems Pilot Corpus — intent/slot 주석의 원형
  • Coucke, A. et al. (2018). Snips Voice Platform: an embedded Spoken Language Understanding system — SNIPS 데이터셋 출처
  • Budzianowski, P. et al. (2018). MultiWOZ: A Large-Scale Multi-Domain Wizard-of-Oz Dataset, EMNLP — 다중 도메인 TOD 표준 벤치마크
  • Rastogi, A. et al. (2020). Towards Scalable Multi-Domain Conversational Agents: The Schema-Guided Dialogue Dataset, AAAI — 스키마 기반 패러다임 · 데이터셋

Intent · Slot — 모델링

  • Ramshaw, L. & Marcus, M. (1995). Text Chunking using Transformation-Based Learning — BIO(IOB) 태깅 스킴의 출처
  • Goo, C.-W. et al. (2018). Slot-Gated Modeling for Joint Slot Filling and Intent Prediction, NAACL — intent 와 slot 의 상호작용을 명시적으로 모델링
  • Chen, Q., Zhuo, Z. & Wang, W. (2019). BERT for Joint Intent Classification and Slot Filling — 사전학습 모델 기반 joint 모델의 기준선
  • Weld, H. et al. (2022). A Survey of Joint Intent Detection and Slot Filling Models in Natural Language Understanding, ACM Computing Surveys 55(8) — joint 모델 전반 개괄