본문 바로가기
Natural Language Processing/Dialogue State Tracking

[Dialogue System] Dialogue System - Task Oriented dialogue system

by 지구킹 2023. 7. 12.
728x90

Dialogue System - Task Oriented dialogue system

특정 Task에서 사용자의 요구사항을 파악하고, 이를 해결하기 위한 적절한 대화 시스템을 의미한다.

 

즉, 시스템 사용자의 음성 혹은 텍스트와 같은 자연어 데이터가 있으면 System(Siri 등)과 서로 상호작용하여 적절한 답변을 생성하는 것이라고 생각하면 된다.

 

이때, dialogue system은 아래와 같이 두가지로 구분할 수 있다.

  • Single turn conversation: 한 번의 conversation을 통해, User가 원하는 답을 System에 도출하는 것
    • 비교적 쉬운 분야로 높은 수준의 답을 찾기 어려움
  • Multi turn conversation: 여러 번의 conversation을 통해, User가 원하는 답을 System에 도출하는 것
    • 비교적 어렵지만 single turn conv보다 활용 가능한 정보가 많음
    • 수준 높은 답을 생성할 가능성이 있음

 

 

  • 가정사항: 사람-사람, 사람-system 간의 대화를 가정
  • 데이터셋: 특정 시나리오를 가정하여 구성된 대화 데이터
  • 아웃풋
    • 화자의 질문으로부터 알맞는 정답을 찾아냄
    • 정답을 포함한 문장을 생성해내는것이 최종 목적
  • TASK: 질문을 이해하고 정답을 생성하기 위해 여러개의 sub-task로 나누어져 있음

 

 

Dialogue System은 크게 4가지 모듈로 나누어진다.

 

각각의 task는 독립적인 모델로 수행되는 분야이지만 input과 output이 순차적으로 진행한다.

 

https://www.researchgate.net/figure/A-modular-architecture-for-multi-turn-task-oriented-dialog-systems-It-consists-of-the_fig1_357875438

Natural Language Understanding

  • Utterance와 Semantic frame을 mapping 시키는 turn-level task이다.
  • Input: 사용자의 raw utterance
  • Output: semantic frame (speech-act, intent, slot)
  • 예를들어, "4명이 갈거야!"라는 문장을 NLU에 넘겨주게 된다면, Output으로 "people_num=4"라는 값이 도출되어, DST 모듈로 전달된다고 생각하면 된다.
  • 따라서, 주어진 utterance로 부터 특정한 slot이 어떤식으로 tagging할 수 있는지 정의할 수 있다.
  • 위의 예시로 든다면 아래와 같이 정의할 수 있다.
    • Utterance: 4 / 명이 / 갈 / 거 / 야 / !
    • Slor: B-people / O / O / O / O / O /
    • Domain: Restaurant
    • Intent: Restaurant_Book  

 

Dialogue State Tracking

  • Partial dialogues를 dialogue states에 mapping시키는 dialogue-level task이다.
  • Input: dialogue / turn with previous state
  • Output: dialogue state (slot-value pairs)
  • 따라서 NLU로 부터 사람이 4명 (people_num=4)라는 값이 DST에 들어가면 해당 정보를 Restaurant_Book에 더해준다고 생각하면 된다.
  • 즉, 아래의 예시와 같이 dialogue를 통해서 slot과 value가 어떤 intent를 갖고 있는지 활용하는 분야이다.
    • Input dialogue
      • User: 금요일에 사당역 근처에 있는 식당 예약하고 싶어
      • System: 몇명이 갈 건데?
      • User: 4명이 갈거야!
    • Output dialogue
      • Restaurant_Book (Day=Tuesday, Area=사당역)
      • Restaurant_Book (Day=Tuesday, Area=사당역, people_num=4)

 

Dialogue Policy Learning

  • DST로 부터 추철된 dialogue state를 기반으로 system action을 결정하는 것이다.
  • Input: dialogue state + KB results
  • Output: System action (speech-act + slot-value pairs)
  • 예를 들어,
    • Input
      • Dialogue state
        • Restaurant_Book (Day=Tuesday, Area=사당역, people_num=4)
      • KB State
        • Res_1 = 00식당
    • Output
      • System Action
        • Inform (Restaurant_name: 00식당

 

Natural Language Generation

  • System action을 natural language response에 mapping
  • Input: System speech-act + slot-value (optional)
  • Output: natural language response
  • 예를 들어,
    • Input: Inform (Restaurant_name: 00식당
    • Output: 00식당 예약 해줄게~

 

정리

따라서, 이상적인 dialogue system은 사용자의 질문 혹은 발화를 통해 적절한 대답을 도출하는 것으로 볼 수 있다. 해당 과정은 4개의 독립적인 task로 나뉘어 작동한다. 따라서 연구도 독립적으로 진행되고 있으며, task별 데이터 셋이 따로 존재한다.


아래 유투브 영상을 기반으로 작성된 글 입니다.

https://www.youtube.com/watch?v=nuclwoebdEM 

728x90

댓글