ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Google Chatbot Dialogflow #7] 날씨 인텐트 만들기 및 응답 설정하기
    Chatbot 2020. 6. 16. 19:07

    2020/06/16 - [Chatbot] - [Google Chatbot Dialogflow #6] 커스텀 인텐트 만들기

     

    [Google Chatbot Dialogflow #6] 커스텀 인턴트 만들기

    2020/06/12 - [Chatbot] - [Google Chatbot Dialogflow #5] Welcome Intent, Fallback Intetn 설정 [Google Chatbot Dialogflow #5] Welcome Intent, Fallback Intetn 설정  지난 포스팅에서 콜센터 상담원 역할..

    vexper.tistory.com

     지난 포스팅에서는 Good bye 인사에 응답하는 단순 인텐트를 추가했었다.

     

     우리가 샘플로 만들고 있는 기상캐스터 챗봇은 주로 "날씨 알려줘"라는 주문을 받을 것이다. 근데 날씨를 알아보려면 2가지 변수를 입력해줘야 한다. 바로 지역과 일시이다. "날씨 알려줘"라고 짧게 요청한다고 해도 프로그램에서는 '내가 있는 곳'에 '지금 시간'의 날씨를 알려달라고 변환해서 날씨 서버에 전달해야 한다. 

     

     내일 샌프란시스코로 출장을 가야 한다면 "내일 샌프란시스코의 기온 알려줘"와 같이 역시 지역과 일시가 들어가야 날씨 정보를 확인할 수 있다. 

     

     이렇게 챗봇에서 변수처럼 취급되어야 할 정보의 유형을 항목 유형(Entity Type)이라고 한다. 날씨에서는 지역과 일시가 엔티티 유형이 될 것이다. 지역이라는 엔티티 유형에는 "서울", "대전", "대구", "부산"과 같은 동일한 유형의 데이터가 포함된다. 이렇게 데이터가 포함된 집합을 엔티티라고 하며 챗봇에서는 발화자의 용어를 해석하는 사전으로 활용된다.

     

     엔티티는 Google Dialogflow에서 미리 정의된 System Entity와  사용자가 추가하는 Customer Entity가 있다. 오늘은 System Entity를 활용에서 날씨를 물어면, 물어본 지역과 날자를 확인하는 날씨 인텐트를 만들어보겠다. 

     

     

    1. 날씨 인텐트 추가하기 

     1) Dialogflow 왼쪽 메뉴 Intents 옆에 + 버튼을 눌러 신규 인텐트를 추가한다.

     2) 인텐트 제목으로 "Weather"을 입력하고 SAVE 버튼을 누른다. 

     3) 훈련 문구에 "오늘 날씨 어때?"를 입력하면 자동으로 "오늘"이라는 단어를 파라메터로 인식한다.

     

    그러나 쌩뚱맞게 오늘을 @sys. geo-capital이라는 도시 이름 엔티티 항목으로 인식된다. 아직 구글의 한글 사랑이 부족해서 그러니 직접 날자 엔티티 항목으로 변경하자.

     

     2. 훈련 문구 추가 및 엔티티 설정하기

    1) 훈련 문구(Training phrases) 아래 작업과 매개변수(Action and parameters) 항목에 보면 자동으로  추가된 @sys.geo-capital 항목(Entity)을 클릭하면 시스템 엔티티 팝업창이 나타난다. 

     

    2) 팝업창에서 날자(Date)를 찾아서 @sys.date 시스템 엔티티를 선택해주면 훈련 문구에 하이라이트 되어 있는 "오늘"의 엔티티가 date 시스템 엔티티로 변경된다. 

     

     작업과 매개변수(Action and parameters) 항목을 좀 더 상세히 살펴보자.  맨 앞에 Required는 필수 여부에 대한 내용이다. 만약 발화자의 문장에 해당 엔티티를 찾을 수 없으면 필수 엔티티가 누락되었다고 경고를 띄운다. 

     

     Paramter name은 매개변수를 구분하기 위한 이름이다. Entity는 항목 유형을 표시하는데 @로 시작하며 "sys."가 붙으면 시스템 엔티티라는 의미이다. Value는 응답에서 엔티티 정보를 표시하기 위한 변숫값으로 앞에 $가 붙는다.  

     

     

     훈련 문구에 "내일 광주 날씨 알려줘"를 입력하자 "내일"을 @sys.date-time 엔티티로 인식하는데 앞서 훈련시킨 문구와 동일하게 @sys.date로 변경해준다. 

     

     "광주"를 @sys.location으로 인식하고, 작업과 매개변수 영역에는 @sys.location이 엔티티에 추가되지 않았다는 오류가 발생한다. 오류를 무시하고 훈련 문구에서 "광주"를 선택한 후 엔티티를 @sys.geo-capital로 변경해 준다.

     

     그러면 Dialogflow가 "광주"라는 새로운 단어를 @sys.geo-capital에 추가하겠다며 팝업을 띄운다. "ADD"버튼을 눌러 추가시켜준다. 학습 문구 몇 개를 더 추가해 주면서 날자 관련 단어는 @sys.date로 지역 관련 단어는 @sys.geo-capital로 변경해 준다.  

     

     

    3. 응답 설정하기

    발화자가 날자와 장소 관련 엔티티를 포함하여 질문을 하면 챗봇이 해당 엔티티를 포함해서 응답하도록 설정해 보겠다.

     

    응답(Responses)에 매개변수의 value를 입력하면 응답에 전달 받은 값을 포함시킬 수 있다 Text Response에 "$date $geo-capital 날씨는 좋습니다."라고 입력하고 SAVE버튼을 누른다. 

     

    에이전트 ML Training 설정에서 TRAIN을 누른 후 try it now 칸에 "서울 어제 날씨는?" 하고 물어보면, "2020-06-15일 서울특별시 날씨는 좋습니다."라는 응답을 확인할 수 있다.  

     

     질문에 날자만 포함된 경우와 장소만 포함된 경우가 있을 수 있기 때문에 "$date 날씨는 좋습니다.", "$sys.geo-capital 날씨는 좋습니다."처럼 하나의 엔티티만 포함된 응답도 만들어야 한다. 뿐만아니라 그냥 "날씨 어때?"와 같이 장소와 시간이 생략된 질문도 있을 수 있으니 "좋은 날씨에요"와 같은 매개변수가 포함되지 않은 응답도 있어야 할 것이다. 

     

    이번 포스팅에서는 날씨 인텐트를 만들고 날자와 장소에 대한 시스템 엔티티를 추가해 보았다. 다음 포스팅에서는 "날씨"  맑음, 흐림, 비 따위의 날씨정보를 인식하고 응답할 수 있도록 사용자 엔티티를 추가하고 인텐트에 반영해보도록 하겠다. 

     

Designed by Tistory.