챗봇이 예-아니오 형식의 질문을 한다면 사용자의 가능한 응답은 예, 아니오, 왜 물어요? 정도가 되겠지만 챗봇이 열린 질문을 한다면 그 때는 대비해야 할 사용자 예상 응답이 무척 많게 된다. 예를 들어 “라면 좋아하세요?”라는 질문에는 예, 아니오, 왜 물어요? 정도의 사용자 답변이 가능하지만 “좋아하는 요리가 뭐에요?”라는 열린 질문에 대해서는 수 십 개에서 수 백 개의 사용자 답변이 가능할 것이다. 더구나 각각의 답변이 다시 꼬리에 꼬리를 물며 대화가 이어질 수도 있기 때문에 각 상황에 맞는 답변을 준비하는 것은 내용상으로도 쉽지 않을 뿐만 아니라 형식상으로도 복잡할 수 있다. 위의 대화 예제는 이러한 열린 질문을 약식으로 정리해 본 것이다. 예제에서 보는 것처럼 열린 질문을 할 경우 그 답변은 크게..
사용자가 챗봇에게 “좋아하는 노래 있어요?”라고 묻는 상황을 가정해 보자. 이때 사용자는 아래와 같이 물어볼 수 있다. A. 좋아하는 노래 있어요?B. 노래 좋아하는 거 있어요? 어순이 중요한 영어에서도 구어의 경우 어순을 무시하는 경우가 많다고 하는데, 한국어와 같이 어순이 중요하지 않은 언어의 경우는 어순이 더더욱 무시될 수 있다. 이런 경우에는 순서에 상관없이 패턴과 사용자 입력문을 비교하는 것이 필요하다. 이때 사용하는 명령어가 >이다. C. u: (>) 예. I love you를 좋아해요. 패턴에 > 명령어가 있으면 CS엔진은 단어의 나열된 순서에 상관없이 그 단어들이 사용자 입력문에 나타나는가를 조사하여 매칭여부를 판단한다. 이제 룰C가 어떻게 사용자 입력문 B와 매칭되는지 확인해 보기로 하자..
챗봇이 K-POP을 좋아하냐고 물은 후, 사용자의 대답을 듣고 그에 적합한 응대를 함으로써 대화를 이어 나가는 예제이다. 이와 같은 대화가 가능하기 위해서는 첫째 사용자의 말을 “잘” 들어야 하며 둘째 “들은” 말에 대응하는 규칙이 준비되어 있어야 한다 사용자의 말을 잘 듣는다는 것은, 사용자가 이렇게 말할 것이다라고 예상하여 그 말과 매칭이 가능하도록 패턴을 준비해 놓는 것을 뜻한다. 위의 대화를 위한 스크립트를 보면, 로 작성되어 있는데 먼저 룰의 형식을 다시 한 번 복습해 보자. 이 룰은 사용자 입력문(u:)이 패턴(괄호 안의 내용)과 일치하면 오른쪽의 출력문을 출력하라는 룰이다. 이런 형식의 룰을 응답하기(responder) 룰이라고 부른다. 즉 사용자의 말에, 그것이 의문문이든 평서문이든 관계없..