← 돌아가기

1.챗봇 대화란?


여기에서는 MINDMAP을 이용하여 대화관리를 하는 방법에 대해서 다음과 같이 설명합니다.

  1. 챗봇과의 대화는 어떻게 이뤄지는가?
  2. MINDMAP대화관리란 무엇인가
  3. 의도를 정의하는 방법
  4. 개체를 정의하는 방법

일반적으로 챗봇개발에서 가장 중요한것은 챗봇의 대화(스토리)관리입니다.

즉 챗봇사용자와의 대화에서 챗봇을 어떻게 반응하게 하는가? 가 중요한 이슈입니다. 다음은 챗봇과 사용자가 어떠한 방식으로 대화를 하는지에 대한 설명입니다.

1 . 챗봇과의 대화는 어떻게 이뤄지는가?


 우리들의 대화는 일반적으로 항상 의도와 개체를 포함하고 있습니다. 예를 들어,
 
> A: "날씨를 알려주세요"
             "알고자 하는 시간과 지역을 알려주세요" : B <
 
> A: "오늘의 서울날씨"
             "오늘의 서울날씨는 맑음, 온도17도, ..." : B <
 
 A의 첫번째 문장에서 "날씨"를 알고싶다는 라는 의도(#날씨)로  B에게 말하고 있습니다. 그러나 B는 A의 의도(#날씨)는 인식하였으나 좀 더 의도를 상세하게 알고 싶어서, 의도내의 개체(@시간, @지역)에 대해 다시 질문을 합니다.
다시 A가 날씨라는 의도를 상세하게 만드는 "오늘(@시간)의 서울(@지역)날씨"라고 개체를 명시하면, B는 정확하게 A의 상세한 의도까지 파악하여 "오늘의 서울날씨"에 대한 정보를 건네줄 수 있습니다.
 
 
즉, 우리들의 대화는 기본적으로 #의도, 그리고 이의 대상이 되는 @개체 들로 이루어져 있습니다.
 
 
 
일반적인 대화에서 의도와 개체를 정의 방법은 다음 예를 들어 이해해 보겠습니다.
> 피자돌이: "호박피자를 배달해 주세요?" 
                 "배달할 장소와 시간을 알려주세요" : 피자챗봇 <
 
의도는 #배달, 개체는 @음식, @장소, @시간 이라고 사전에 정의하고, 해당 질문의 답변을 미리 작성해 놓는다면, 챗봇은 사용자의 의도와 그 대상인 개체를 이해하고 이를 토대로 대답을 하게 됩니다.
 
*Tip. 상기에 #배달 --> #주문, @음식 --> @피자종류, @장소-->@고객주소, @시간-->@배달시간 등과 같이 단어의 정의는 마인드맵을 만든이가 단어를 임의로 정하여도 무관합니다
 
 
즉, 의도와 개체가 정의되어 있다면 챗봇이 이해하는 방식은
"호박피자를 배달해 주세요?" 에서
"@음식" + "~를 배달해 주세요?(#배달)" 라고 인식하게 되고 
 
이 훈련을 받은 챗봇은 앞으로 사용자의 #배달+@음식 이라는 질문에 훈련대로 대응할 수 있게 됩니다.
 
 
따라서 대화관리는
조금전에 다루었던 #의도, @개체, 대화정보들의 조합에 의해서 만들어지는데, Mr.MIND에서는 이를 마인드맵을 이용한 방식으로 대화관리를 하고 있습니다. (참고, Mr.MIND의 특허출원: 마인드맵을 이용한 대화관리방법)
 
 
 

2 . MINDMAP 대화관리란


MINDMAP을 이용한 대화관리란

Mindmap.AI에디터 MINDMAP 탭의 각 노드와 #의도, @개체를 이용하여 챗봇사용자와의 대화를 자연스럽게, 그리고 기획자의 의도대로 챗봇사용자와 대화를 관리하는 것을 말합니다.

그리고 이 MINDMAP 대화관리를 통해서 할 수 있는 것은 다음과 같습니다.

  • 대화관리를 위해 MINDMAP(챗봇스토리) 만들기
  • 사용자의 #INTENT(의도)를 사전에 정의 
  • 사용자의 #ENTITY(개체)를 사전에 정의

 

3 . MINDMAP(챗봇스토리) 만들기


Mindmap.AI 에디터에서 의도, 개체를 만들고 #의도, @개체, 연산자 및 대화정보표시 등을 이용하여 그 자식노드 안에 대화관리에 필요한 것을 작성합니다. 즉 노드를 만들고 노드에 정보를 입력하여 챗봇을 훈련시킵니다. 극히 간단한 프로그래밍과 유사하기도 합니다. 

4 . 의도를 정의하는 방법


Mindmap.AI 에디터 왼쪽상단의 #INTENT 탭에서 의도를 정의합니다.

의도의 사전정의는 다음과 같은 방법으로 의도마인드맵을 그립니다.


#배달  - 을 배달해 주세요
           - 주문 부탁합니다.
            - 배달 가능하나요
           - 을 집까지 배달해 주세요
           - 먹고 싶어요


등과 같이 대표적인 대화를 5개 정도 기입하면, 챗봇은 유사한 대화 520개 이상을 알아듣게 됩니다.

의도를 작성했으면 MINDMAP 탭의 M 루트노드에서 동일하게 #배달 의도를 작성해야 사용 가능합니다.

 

TIP. 챗봇은 의도를 인식할때는 유사율(confidence)를 측정하여 단어, 문맥, 그리고 형태소분석 등 그리고 독자적 알고리즘에 의해서 0.0 ~1.0 까지의 확률에 의해서 인식을 하며, 1에 수치가 가까울 수록 인식이 잘 되었다는 것을 의미합니다.

 

5 . 개체를 정의하는 방법

Mindmap.AI 에디터 왼쪽상단의 @ENTITY 탭에서 개체를 정의합니다.

개체의 사전정의는 #ENTITY에서 다음과 같은 방법으로 개체마인드맵을 그립니다.

@음식 - 피자종류  - 호박피자
                               - 불고기피자
                               - 치즈피자
                             ...
             - 기타        - 햄버거
                               - 콜라
                               - 감자튀김
                              ...

개체 정의 시 @개체 - 대표어 - 동의어 로 구성합니다.
그리고 개체를 구체적으로 명시할때는 @개체:대표어 로 사용합니다.