ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Google Chatbot Dialogflow #1] 챗봇 개요와 용어정의
    Chatbot 2020. 6. 11. 12:43

    1. 기존 프로그램과 챗봇의 차이

    날씨 정보를 확인하기 위해 마우스로 입력 값을 설정하는 화면, 기상청 홈페이지 캡처

     

     프로그램은 입력한 정보를 가공하여 사용자가 원하는 정보를 제공하는 소프트웨어이다. 기존의 프로그램은 결과를 보여주기 위해서 정형화된 데이터를 입력해 줘야 했다. 예를 들어 날씨를 확인하기 위해서는 1) '날자 필드를 입력한다.' --> 2) '위치를 입력한다.' --> 3) '검색 버튼을 누른다.'와 같이 3번의 행위를 진행해야한다. 뿐만아니라 프로그램마다 인터페이스 방식이 다르기 때문에 사용자는 해당 프로그램에 익숙해져야 하는 불편함이 있었다. 

     

     이에 대한 대응이 챗봇이다. 챗봇은 일상 대화 하듯이 질문하면 원하는 결과를 보여준다. 예를 들어 앞서 날씨를 확인하기 위해서 기존 프로그램이 3단계의 행위를 거친 반면 챗봇은 "내일 날씨 알려줘"라는 한 문장의 명령어로 원하는 결과를 얻을 수 있다. 

     

     그러나 동일하게 날씨를 알고자 하는 명령어라도 "내일 날씨는?", "12월 31일 날씨가 궁금해", "내일 더워?", "내일 우산 준비해야해?"와 같이 다양하게 표현할 수 있다. 

     

     챗봇은 이러한 다양한 자연어의 표현에서 "내일의 날씨가 궁금하다."라는 사용자의 의도(Intent)를 매칭하여 날씨 프로그램에 입력해주고 출력결과를 자연어로 알려주는 역할을 수행한다. 

     

     

    2. Google Dialogflow 기본 용어 정의

     1) 발화자(Speaker, End-user)

    발화자는 챗봇에 말을 건 사람을 이야기 한다. 구글 공식용어는 최종 사용자(End-user)이나 표현이 혼동을 줄 수 있기 때문에 발화자라는 용어로 본 포스팅에서는 통일하기로 한다.

     

     

     

     

     2) 에이전트(Agent)

    www.freepik.com

     콜센터 상담원을 영어로 Call center agent라 부른다. Dialogflow에도 Agent는 한 명의 콜센터 상담원과 같은 역할을 한다. 통신사 고객센터에 연락을 하면  ARS를 통해서 요금 상담, 부가서비스 상담, 인터넷 결합상품 상담과 같이 어떤 상담원과 연결할지 선택하는 과정을 거친다. 콜센터 상담원마다 전문 영역이 있는 것이다.

     

     마찬가지로 Dialogflow Agent는 날씨 안내, 배달 주문, 통신 요금 안내와 같이 하나의 전문 영역을 맡아 설정하게 된다. 또한 에이전트 별로 언어(한국어, 영어), 기준시간(서울, 워싱턴), 음성(남자, 여자) 등을 설정하여 한명의 전문 상담요원을 모델링 할 수 있도록 되어있다. 

     

      3) 인텐트(Intent)

    인텐트는 하나의 에이전트가 수행할 수 있는 업무의 단위이다. 배달 주문 에이전트라고 하면 '영업시간 안내', '메뉴 안내', '주문 접수' , '주소 접수'와 같은 인텐트가 필요하다. 

     

     발화자가 "지금 배달 가능한가요?", "몇시부터 배달하세요?", "언제까지 배달하세요?"와 같은 질문을 한다면 Dialogflow는 인텐트를 뒤져서 '영업시간 안내' 인텐트를 찾아서 해당 인텐트를 실행시킨다.  

     

     발화자의 요청을 인텐트와 일치시키는 것을 인텐트 분류라고 하며, 인텐트에는 다음과 같은 요소들이 포함된다. 

     

     

    발화자 -> 에이전트 -> 인텐트 -> 응답의 관계도, cloud.google.com 캡처

     

     A) 학습 문구(Training Phrases)

     "지금 배달 가능한가요?"와 같이 발화자가 내 뱉은 말이다. AI 이전의 프로그램 방식이었다면 "지금 배달 가능한가요?" 처럼 동일한 문장에만 응답할 수 있었을 것이다. 그러나 머신러닝을 통해서 발화자가 내뱉은 말과 유사한 문구까지 Dialogflow가 알아서 찾아준다. 그래서 "지금 배달 가능한가요?"와 다른 "언제 문열어요?", "몇시부터 배달해요?"와 같은 정확하게 일치하지 않는 문구도 동일한 문구라고 인식하는 것이다. 머신러닝을 훈련시키는 대표 문구라서 학습 문구라고 부른다. 

     

     B) 작업(Action)과 매개변수(Parameter)

     작업은 인텐트 매칭이후 인텐트가 수행해야 할 업무이다. 단순하게 '영업시간 안내' 인텐트라면 영업시간만 안내하는 작업이 설정될 것이다. 그러나 '주문 접수' 인텐트는 발화자로부터 주문 받은 내용을 주문시스템에 입력하는 작업을 설정해야 한다. 주문 작업을 설정하려면 어떤 메뉴를 시켰는지에 대한 정보도 주문시스템으로 넘겨줘야 하는데 이때 작업과 함께 전달하는 정보를 매개변수라고 한다.  

     

     C) 응답(Response)

     응답은 작업을 통해 수신받은 결과를 어떻게  발화자에게 알려줄 것인가에 대한 명세이다. '영업시간 안내' 인텐트라면 "오후 4시부터 새벽 2시까지 배달가능 합니다." 라는 값을 설정했을 것이다. 

     

            

    4) 항목(Entity)과 항목 유형(Entity type)

      int sum(int a, int b)와 같이 프로그램에서 함수를 만들면, 파라미터로 넘길 데이터 유형(type)을 숫자, 문자, 날자와 같이 미리 정의해야 한다. Dialogflow 역시 파라미터에 넘길 데이터 유형을 미리 정의해야 하는데, 이를 항목 유형(entity type)이라고 한다.  항목 유형은 숫자, 문자뿐만 아니라 주문 메뉴, 날씨, 주식 종목, 장소, 자동차 등 다양한 유형을 사용할 수있다. 

     

     항목(Entity)은 항목 유형에 속하는 데이터이다. 예를 들어 날씨 항목 유형에는 더움, 추움, 건조함, 습함, 비, 눈, 맑음, 흐림 등이 포함되고, 메뉴는 자장면, 짬뽕, 탕수육, 깐풍기와 같은 음식이 포함된다.

     

     날자, 시간, 장소와 같이 사용 빈도가 높아 Dialogflow에서 미리 정의한 항목을 시스템 항목(system entity)라고 하고, 시스템에서 미리 정의되지 않아 사용자가 직접 생성해야 하는 중국집 식당메뉴 같은 항목을 커스텀 항목(custom entity)라고 한다. 

     

     쳇봇에서 항목(Entity)은 사전의 역할을 한다. 영어 공부할 때 어휘가 부족하면 지문을 읽기도 어렵고, 문장을 매끄럽게 표현하기도 힘들다. 항목을 얼마나 정확하고 의미 있게 만드느냐에 따라서 챗봇의 품질이 결정된다. 챗봇의 항목은 사용자가 직접 입력하기도 하고 챗봇 빌더의 AI가 자동으로 만들어 주기도 한다. 또한 똑똑한 챗봇 빌더는 사용자가 입력한 데이터에 머신러닝을 통해 스스로 추가하기도 한다. 

     

     5) 컨텍스트(Context)

     용어 그대로 문맥이다. 우리가 대화를 하다 보면 앞에 했던 말의 일부를 생략하게 된다. 앞뒷말 자르고 "취소해줘."라는 문구 만 주어 진다면 챗봇은 뭘 취소해야할지 알 수 없다.  

    컨텍스트 개념도, cloud.google.com 캡처

     위의 개념도로 컨텍스트를 살펴보자. 발화자가 "내 계좌정보 알려줘"라고 요청을 하면 챗봇은 계좌 정보라는 인텐트부터 매칭 시킨다. 계좌정보 인텐트를 매칭 시켜보니 발화자가 계좌 정보 중 어떤 정보를 원하는지 정확하지 않아 "어떤 계좌정보 말씀이세요?"하고 묻는다. 이에 발화자가 "잔액 알려줘"라고 답하면 챗봇은 "계좌정보"인텐트를 "잔액 정보"인텐트와 연결하여 "계좌정보 중 잔액 정보"를 발화자에게 알려준다. 이렇게 대화 상황에 따라 자연스럽게 정보를 전달하기 위해 인텐트를 연결하는 과정을 컨텍스트라고 한다. 

     

     새로운 것이 어렵게 느껴지는 가장 큰 이유는 생소한 용어에 있다. 의사 선생님이 "레프트 헤모또락스에 블리딩까지 있으니 BP먼저 체크해!"라고 하면 일반인은 뭔 소린지 어리둥절할 수밖에 없는 것과 마찬가지다. 

     

      위의 문구를 풀어보면 "왼쪽 폐에 피가 고였는데 출혈까지 있으니 혈압부터 확인해봐"라는 뜻이다. 이번 포스팅에서는 Dialogflow를 쉽게 접근하기 위해 기본 용어부터 정리해 보았다. 몇 가지 용어가 더 있는데 이는 실습과정에서 추가 설명하도록 하겠다. 

     

Designed by Tistory.