티스토리 뷰


예제 대화문


챗봇이 예-아니오 형식의 질문을 한다면 사용자의 가능한 응답은 예, 아니오, 왜 물어요? 정도가 되겠지만 챗봇이 열린 질문을 한다면 그 때는 대비해야 할 사용자 예상 응답이 무척 많게 된다. 예를 들어 라면 좋아하세요?”라는 질문에는 예, 아니오, 왜 물어요? 정도의 사용자 답변이 가능하지만 좋아하는 요리가 뭐에요?”라는 열린 질문에 대해서는 수 십 개에서 수 백 개의 사용자 답변이 가능할 것이다. 더구나 각각의 답변이 다시 꼬리에 꼬리를 물며 대화가 이어질 수도 있기 때문에 각 상황에 맞는 답변을 준비하는 것은 내용상으로도 쉽지 않을 뿐만 아니라 형식상으로도 복잡할 수 있다. 위의 대화 예제는 이러한 열린 질문을 약식으로 정리해 본 것이다.

예제에서 보는 것처럼 열린 질문을 할 경우 그 답변은 크게 세 가지 특징을 보인다. 첫째, 준비해야 할 답변의 개수가 매우 많다는 점, 둘째 답변의 개수는 많을지라도 동일한 질문에 대한 답변이기 때문에 답변 내용이 키워드만 바뀐다는 점, 마지막으로 각 답변이 독자적으로 가지치기를 해 내려가며 추가 대화를 전개해 나갈 수 있다는 점이 그것이다

이제 이러한 세 가지 특징을 충조시킬 수 있는 예상응답(rejoinder)에 대해 알아 보기로 하자. 질문 하나에 응답이 여러 개일 경우에는 응답을 작성할 때 동일한 영문 소문자로 시작함으로써 CS에게 이들을 동일한 우선순위로 매칭을 검토하라고 지시할 수 있다.

 

t: 좋아하는 가수가 있어요?

a: ( ~2NE1) . 노래 정말 잘하는 걸그룹이지요.

a: ( ~티아라) 좋은 노래가 많은 걸그룹이에요.

a: ( ~마마무) 요즘 인기가 많은 신인 걸그룹이지요

a: (~아니오) 악동 뮤지션 노래를 들어 보셨어요? 좋아하게 될거에요.

 

CS는 이렇게 동일한 영문 소문자로 시작하는 규칙을 발견하게 되면 그 규칙들을 주종의 관계가 아닌, 독립적이며 동일한 우선순위를 가진 응답후보로 취급하여 매칭이 될 때까지 사용자 입력문과 차례로 일치여부를 비교한다.

이때 이 예상응답은 동일질문에 대한 답변이기 때문에 형식은 비슷하고 내용만 바뀌게 되는 경우가 많다. 그래서 예상응답은 패턴에 핵심단어만 포함하는 것이 보통이다.

또한 예상응답 각각은 다시 가지치기를 해 나가며 각자 추가 대화를 독자적으로 전개해 나갈 수 있는데 총 17단계까지 (a: 에서 q: 까지) 가능하다. 즉 충분히 깊은 대화를 해 나갈 수 있다. 이 경우 어느 응답이 어느 질문과 대응이 되는지 한 눈에 알아 볼 수 있도록 들여쓰기를 하는 것이 필수적이다. 복잡하지 않더라도 예상응답은 해당 질문보다 들여쓰기를 함으로써 코드의 가독성을 높이고 수정이나 오류 보완을 쉽도록 하는 것이 좋겠다

위의 예제에서 좋아하는 가수에 대한 예상응답의 개수는 수십 개를 넘을 수도 있을 것이다. 그리고 그 각각에 대해서 다시 2~3단계의 추가 질의 응답을 한다면 좋아하는 가수가 있어요?”라는 질문에만 약 100여 개의 룰이 필요하게 될 것이다. 한 걸음 더 나아가서 외국인을 대상으로 K-POP을 소개하는 챗봇을 만들기로 한다면 훨씬 더 많은 룰이 필요하게 될 것이다. 대신에 대부분의 사용자가 K-POP에 대해 만족스런 대화를 하게 될 것이다.

-아니오 질문이라든가 이것 아니면 저것 식의 선택형 질문만 하는 챗봇은 사용자에게 그 지능을 의심 받을 수 있다. 이에 반해 열린 질문은, 그 설계가 까다롭지만 대화 상대방에게 만족스런 경험을 줄 수 있기 때문에 가급적 많은 비율의 열린 질문을 작성할 것을 추천한다. 실제로 Talking Angela와 대화를 한 사용자들이 Talking Angela를 높이 평가하는 주된 이유로 많은 수의 열린질문과 그에 대한 풍부한 예상답변을 꼽고 있다고 한다.


예제 대화를 위한 스크립트



댓글
댓글쓰기 폼