SWUFORCE/[공통] 기술 스터디

[Naver D2] 챗봇을 위한 대화는 어떻게 디자인할까

7alswn 2022. 10. 4. 22:35
https://d2.naver.com/helloworld/2110494

 

 

오늘날 AI와 NLP 분야의 발전으로 많은 대화형 서비스가 주변에 존재한다.

최근 챗봇 서비스에 대한 관심도가 높아짐에 따라 대화형 에이전트를 적용할 수 있는 분야의 범위도 넓어지고 있는데, 이번 포스팅에서는 좋은 대화형 서비스를 위해 대화 시나리오 설계를 위한 대화의 구성 요소와 다양한 케이스를 분석한 블로그를 토대로 리뷰해 보고자 한다.

 

 

1. 대화의 형태

해당 문장에서는 "오늘", "5시", "7명", "예약"이라는 정보가 있으며, 이 문장은 예약을 위한 단락과 영업을 하는지 묻는 FAQ 성격의 대화가 섞여 있다. 주의할 점은 일반적으로 사용자는 기계와 다르게 하나의 문장에 여러 요청을 담아서 말하거나 질문하는 경우가 빈번하게 일어난다는 점이다. 매끄러운 대화 시나리오 구성을 위해서는 사용자가 말한 문장 속에 존재하는 여러 의도와 정보를 찾고 최대한 짧은 구간에 사용자의 모든 요청이나 질의를 처리할 수 있도록 디자인해야 한다. 또한, 사용자가 식당 예약을 잘 진행하고 있다가 갑자기 식당에 가는 길을 묻는 등 갑작스럽게 대화 주제를 변경하는 상황이나 사용자가 더 이상 말을 하지 않고 가만히 있는 무응답 상황 등이 있을 수 있다. 따라서 대화 시나리오 설계에서는 갑작스럽게 발생할 수 있는 여러 장애 상황을 고칠 수 있는 리페어 처리를 구상해야 한다.

 

2. 대화의 구성 요소

발화는 대화를 이루는 문장 그 자체로, 대화 시나리오를 처리하기 위해 가공되기 전의 형태이다. 우리는 발화를 보고 대화의 형태를 이해할 수 있지만 컴퓨터는 이 발화만을 보고 대화를 처리하기는 어렵기에 컴퓨터가 이해하기 위한 정보로 가공을 하는 단계를 거친다.

발화의 의도를 인텐트(intent)라고 하며 인텐트는 컴퓨터가 대화 시나리오를 처리하는 용도로 사용된다. 위 그림에서는 6가지의 서로 다른 언어와 표현의 발화를 I-ask.reservation이라는 형태의 인텐트로 표기하였다. 실제 대화 처리 과정에서는 여러 발화가 내부의 자연어 이해(NLU) 모듈을 거쳐 인텐트로 변경되며 시스템은 이 인텐트를 기준으로 대화를 처리한다.

사용자 발화에는 태스크 진행에 필요한 여러 정보가 포함되어 있으며, 발화에 포함된 태스크와 관련된 의미 있는 정보를 슬롯(slot)이라고 부른다. 우리는 정보의 특성에 맞게 각 슬롯에 개별적으로 저장하고 대화 시나리오에서 사용할 수 있다. 

이렇게 슬롯에 저장되는 데이터의 타입에 따라서 슬롯을 분류할 수 있는데, 이런 슬롯의 타입을 엔티티(entity)라고 부르며 엔티티는 날짜, 숫자, 이름, 주소 등 다양하다. 엔티티는 발화에서 추출한 슬롯의 형태를 설계하는 데 도움을 준다.

인텐트와 슬롯의 쌍이 있어야 대화를 처리하는 경우 편의상 이 하나의 쌍을 묶어서 하나의 개념으로 정의할 수 있는데, 이것을 인텐트 슬롯 페어(intent-slots pair) 혹은 간단하게 페어(pair)라고 한다. 

 

3. 대화 시나리오

대화 구성 요소를 조합하여 사용자의 태스크를 해결할 수 있는 대화 시나리오를 구성하여 챗봇 서비스, AI 에이전트 서비스에 활용할 수 있으며 이때 대화 시나리오는 그림 16의 노란색 사각형에 해당한다. 서비스 모듈 구조를 살펴보면 사용자는 음성 인식 모듈(ASR: AI Speech Recognition)과 가장 가까이 위치하고 이곳에서 사용자의 음성을 텍스트로 변환하는 역할을 한다. 이렇게 변환된 음성 텍스트는 자연어 이해(NLU: Natual Language Understand) 모듈을 거쳐 인텐트와 기타 메타 정보로 해석되고 이 메타 정보를 파란색 영역인 다이얼로그(dialog) 모듈에서 해석하여 사용자에게 응답(Response)을 보낸다. 이때 다이얼로그 모듈은 대화 시나리오를 바탕으로 대화를 처리하기 때문에 대화 시나리오는 서비스의 질을 좌우하는 중요한 역할을 한다. 따라서 좋은 서비스를 위해서는 좋은 대화 시나리오 설계가 필연적이다.

 

4. 원자적 대화 구조

대화 시나리오가 하나의 다이얼로그 시스템을 사용하는 것이 아니라 여러 시스템에서 사용될 수 있는 경우 대화 구성 요소를 한 가지 시스템에만 의존하지 않는, 최소의 단위로만 구성된 중립적인 구조로 설계해야 한다. 따라서 대화의 구성 요소를 원자적으로 쪼개어 원자적 대화 구성 요소를 나열하고 그것을 병합하여 커다랗고 복잡한 대화 시나리오를 구성하는 형태로 대화 시나리오를 설계할 수 있는데, 이런 방법을 우리는 원자적 대화 디자인이라고 부른다.

 

5. 대화의 흐름

대화는 흘러가며 진행하는 구조이므로 대화를 구성하는 박스와 버블은 서로 연결되며 대화 흐름이 이루어진다. 대화가 시작될 때 시작점이 되는 엔트리포인트(entrypoint)로부터 이어진 다른 박스와 버블로 나아가며 대화가 진행되어 사용자의 요구를 만족시킨다.