티스토리 뷰

예제 대화문


질문을 받으면 그 질문에 답변하는 대신 왜 그 질문을 하는지 먼저 물어 보고 그 후에 답을 하는 경우가 있다. 이때 제대로 답을 못하면 최초 질문에 대한 답도 기대하기 어렵다. 따라서 챗봇의 질문을 작성할 때는 사용자가 라고 질문하는 경우에 대비해야 한다.

이 대비에는 두 가지가 필요한 데 첫째는 예상응답 목록에 "왜"를 추가해야 하는 것이고 둘째는 사용자가 "왜"라고 질문을 하고 챗봇이 그에 대해 답변을 했다면, 그 후 다시 대화를 원점으로 되돌려서 최초 질문에 대한 사용자의 답을 기다려야 한다는 점이다. 아래의 예문을 보자.


위의 예문처럼 대화를 진행시키기 위해서는 왜 물어보냐는 질문에 대답을 한 후 최초의 질문으로 돌아와서 사용자의 답변을 기다리도록 대화 컨트롤을 재설정해야 한다. 이럴 때 사용하는 명령어가 setrejoinder 명령어이다.

 

A.     (~) 요즘에는 K-POP을 좋아하는 사람이 많아서요. ^setrejoinder(KPOPINIT)

 

A는 사용자의 ?”라는 반문에 대답을 한 후, 대화 컨트롤을 최초의 질문으로 보냄으로써(KPOPINTRO로 보내고 있음), 마치 ?”라는 질문과 그에 대한 대답이 없었던 것처럼 상황을 만들고 있다. 실제 예문을 보면

 

B.     t: KPOPINIT () 혹시 K-POP 좋아하세요?

a: (~) 요즘에는 K-POP을 좋아하는 사람이 많아서요. ^setrejoinder(KPOPINIT)

a: (~) 그럼, 좋아하는 가수가 있어요?

a: (~아니요) , 그럼 우리 다른 얘기할까요?

 

B와 같이 작성하면 두 가지 시나리오에 모두 대응할 수 있다. 첫째, 사용자가 질문에 곧 바로 대답하는 경우이다. 긍정으로 답하든 부정으로 답하든 사용자 답변을 매칭시킬 수 있다.  둘째, 사용자가 답을 하는 대신 ?”라는 질문을 먼저 하는 경우이다. 이 경우는 위에서 설명한 것처럼 라는 예상응답의 룰이 매칭이 되어 요즘에는 K-POP을 좋아하는 사람이 많아서요라는 답변이 시행되고 setRejoinder에 의해 대화 컨트롤은 최초의 질문 위치로 옮겨 진다. 그리고 사용자가 최초의 질문에 대답을 하면 그에 맞는 예상응답과 매칭할 수 있게 된다.

사람간의 대화에 있어서도 ?”라는 반문은 흔한 질문이기 때문에 챗봇의 모든 질문에는 사용자의 ?”라는 질문에 대비한 예상응답을 준비해 놓는 것이 바람직하다. 또한 ?”라는 질문을 간접적으로 표현할 수도 있으므로 ?”라는 컨셉을 만들어 사용하는 것이 좋을 것이다.

 

Bot > 혹시 K-POP 좋아하세요?

User> 묻는 이유가 뭐에요?

또는

User> 질문하는 의도가 뭐죠?

 

이 경우는 이유”, “무엇”, “의도등을 라는 컨셉에 등록하면 대응이 가능하다.

 

C.     concept: ~ MORE [~~이유 ~무엇 ~의도]

 

C에서 ~, ~이유, ~무엇 등으로 등록한 이유는 각각의 활용형에 대응하기 위해서이다. 즉 아래와 같이 각각의 컨셉을 미리 등록해 놓고 룰C에 이용하면 된다.

 

D.     concept: ~[ 왜 왜요 왜죠 ]

E.     concept: ~이유 [ 이유 이유는 이유가 ]

F.      concept: ~무엇 [ 무엇 무엇이죠 무엇인가요 뭐죠 ]

G.     concept: ~의도 [ 의도 의도가 의도는 의도를 ]

 

예제 대화를 위한 스크립트








댓글
댓글쓰기 폼