챗봇만들기#3 Watson Assistant Intent와 Dialog DEV / CHATBOT
2019-03-16 posted by sang12
이전 포스팅에서는 Watson Assistant에 가입하고 간단하게 인사말을 구현해봤습니다. 이번에는 Watson Assistant를 구성하고 있는 요소인 Intent, Entity, Dialog중 Intent와 Dialog를 알아 보도록 하겠습니다.
WA에서 Intent란 사용자의 의도를 나타냅니다.
ex) "배고프다", "졸려", "놀러갈래?", "기분이 어떄?" 와 같은 사용자의 의도를 나타냅니다. 그럼 여봇의 기분을 물어보는 Intent를 만들어 봅시다. 인탠트 메뉴에서 Add Intetn를 클릭합니다.
저는 아래와 같이 여봇의 기분을 물어보는 User examples를 등록했습니다. User examples은 사용자가 질문할거라고 생각되는 예제를 등록 하면 Watson이 해당 데이터를 바탕으로 사용자가 어떤 의도로 접근했는지 파악합니다. 그래서 User examples의 비슷한류의 질문들이 많으면 그만큼 정확한 의도를 파악하는데 도움을 줍니다. (결국... 이렇게 예제를 등록하는 부분은 노가다..). 실제 서비스하고 있는 Chatbot들도, 완벽하게 예제를 넣을 수 없으므로 계속적으로 들어오는 데이터를 보며 학습시켜줘야합니다. 저희는 재미삼아 만드는 거니 적당히 넣어줍시다 ^^.
이제 저희는 사용자가 여봇에게 물어볼거 같은 Intent(의도)를 만들었습니다. 그렇다면 이제 무엇을해야할까요?. 당연히 저흰 어떤 대답을 할지 Watson에게 알려줘야합니다. Watson Assistant에서는 이러한 부분을 Dialog를 통해 해결 할 수 있습니다. Dialog 탭으로 이동해볼까요? 저번에 수정했던 환영 인사가 보이네요. 그렇다면 저희는 환영인사와 같은 노드를 하나 추가해줍시다. Add node를 클릭해줍니다
아래와 같이 빈노드를 생성 하셨나요? 그럼 저희가 만든 Intent를 이용하여 Watson에게 적절한 대화를 하게끔 유도해봅시다~
아...친절한 여봇씨... 어떤 대답을 해야할지 정해줬으니, 한번 물어봅시다. (Watson Assistant에서 Intent는 #으로 시작합니다)
"어이 기분 어떄" 라고 물어봤어요. 역시 여봇은 친절하게 제가 말걸어줘서 좋데요(너가만들었어 그렇게...). 그런데 저희가 Intent를 등록할때 예제에 "어이 기분어떄"를 넣었을까요?. 안넣었죠~. 비슷한 예제를 등록했을 뿐입니다 저희는. 하지만 Watson은 똑똑하게도 사용자의 input을 자연어 처리를 통해 파악하고, 저희가 등록한 예제를 바탕으로 추론하여, 사용자가 어떤 의도로 질문했는지를 알려줍니다. 그럼 Watson이 어떻게 파악했는지 한번 뜯어볼까요?
Add response type을 눌러서 새로운 Text를 추가해봅시다. 그리고 <? Intents ?>라고 입력을하면, Watson이 Intent를 어떻게 파악했는지를 볼수 있습니다. 아하 Watson은 "어이 기분 어때"라는 말을 듣고 [{"intent":"기분","confidence":0.8940830707550049}] 기분 Intent일 확률이 89%나 된다고 파악을 했네요. 그래서 Dialog에서 기분 Intent를 찾아 설정된 대답을 해줬습니다. 지금은 하나의 의도만 만들었지만 비슷한 의도의 Intent들이 많아질수록 해당 확률은 떨어 질 수 있습니다. 그러니 비슷한 의도 끼리 잘 모아야되는 작업이 필요하고, Watson이 정확히 판단 할 수 있도록 많은 예제를 추가 해줘야 합니다.
여기까지 Watson Assistant의 Intent와 Dialog를 알아봤습니다. 다음에는 Entity에 대해 알아보고 Dialog를 좀더 고도화 시켜보겠습니다.
IBM Watson Assistant란? - 나만의 Chatbot만들기 #1
여자친구 Chatbot 여봇 - 나만의 Chatbot만들기 #2