티스토리 뷰

 

대화 스크립트를 작성하는 시점에는 사용자의 반응을 다각도로 예상하여 그에 대한 답변을 충분히 작성하려 한다. 그러나 그렇게 준비하더라도 사용자의 모든 질문에 대응할 수 있는 룰을 작성하는 것은 매우 어렵다. 시간이 많이 필요하다는 점 뿐만 아니라 사용자의 반응이 예상대로 나오지 않을 수 있기 때문이다. 작성자는 이런 경우 챗봇이 어떤 행동을 취해야 할 것인가에 관해 미리 준비해 놓아야 한다. 매칭되는 룰이 없는 경우 챗봇의 취할 수 있는 행동은,

 

A.     아무런 대답없이 계속 대기하기 (사용자의 추가 입력 대기)

B.     임의로 새로운 화제 제시하기

C.     얼버무리며 화제 전환하기

 

가 가능할 것이다. 이 중에서 A의 상태가 최악의 상태로, 사용자는 자신의 질문이나 대답에 아무런 반응이 없는 것을 보고 대화 해 볼만한 상대가 아니라고 결론지을 가능성이 높다. B의 경우는 A보다는 낫지만 사용자는 무시당한다는 느낌을 갖게 될 것이다. C의 경우가 가장 나은 상태라 할 수 있다. 적합한 룰을 찾지 못하는 경우는 얼버무리는 것이(quibbling) 최선이라 할 수 있다. 예를 들어 아래의 사용자 질문에 대한 룰이 없다고 가정해 보자. , 예상치 못한 사용자 질문이라고 가정해 보자.

 

D.     User> I love you는 누가 작곡했죠?

 

CS는 현재 활성화된 토픽 내에 이 입력문과 매칭되는 룰이 없다고 판단하면 그 다음 순서로 사용자 입력문에 열거된 키워드와 일치하는 키워드를 가진 다른 토픽을 조사한다. 그렇게 했음에도 매칭되는 룰이 없으면 이제는 키워드가 없는 토픽의 룰을 조사하여 사용자 입력문과 매칭되는 룰을 찾게 된다. 따라서 그곳에 다음과 같은 룰을 준비해 놓았다면 이 룰은 실행이 된다.

 

E.     topic: ~quibblewho system []

?: ( 누가) [글쎄요, 저는 모르겠습니다] [글쎄요. 누구에게 물어 봐야 할까요?]

 

사용자 입력문 D와 매칭되는 룰이 없을 때, E는 마지막 순간에 누가라는 단어와 매칭되는 룰이 된다.

E의 토픽은 5가지 점을 특징으로 하는데, 첫째는 패턴에 의문사를 포함한 한 두 단어만 포함시켜 폭 넓게 매칭되도록 작성되었다는 점이다. 둘째, 토픽의 이름은 임의로 작성해도 되겠지만 quibble이라는 단어를 넣어 용도를 뚜렷이 했다는 점이다. 작성자 본인이 이 토픽은 얼버무리기용으로 특별히 준비한 것이라고 구별할 수 있는 이름이면 어떤 이름도 상관없다. 셋째, 시스템 토픽으로 선언했는데, 이는 NoStay 속성과 (룰 매칭이 된 후 콘트롤이 이곳에 머물지 않고 호출한 곳으로 되돌아 간다) Keep 속성(룰 매칭이 되었다고 그 룰을 삭제하지 않는다. 즉 재사용될 수 있다), 그리고 이 토픽을 말걸기용으로 사용하지 않는다는 의미가 된다. 넷째, 키워드 목록에 키워드가 없다. 이렇게 함으로써 이 토픽은 사용자 입력문의 단어와 일치할 일이 없으므로 우연히 호출되는 일이 없다. 오직 매칭되는 룰이 없을 때만 시스템에 의해 최종 호출된다. 다섯째, 출력 부분을 다중응답으로 작성하는 것이 좋다. 이 룰은 반복 사용될 수 있기 때문에 나중에 동일한 답변이 출력되는 것을 최소화하기 위해서이다. 출력부분이 꺽은 괄호로 작성되었기 때문에 저 두 문장이 매번 임의로 출력된다.

한편 얼버무리기는 그 내용을 기준으로 조금 더 세분화 해서 준비해 놓을 수 있다. 예를 들면, 누구, 언제, 어디서, 무엇 등을 기준으로 topic을 좀 더 세분할 수도 있고, 같은 topic 내에서도 대표적인 동사를 기준으로 좀 더 세분할 수 있다.[1]

 

F.      topic: ~quibblewho system []

?: ( 누가 ~알다) [저는 모릅니다] [하늘이 아시겠죠.] [신만이 아실 겁니다]

?: ( 누가 ~하다) [저는 할 수 없어요.] [저는 능력이 없어요] [수퍼맨이라면 할 수 있겠죠]

?: ( 누가 ) [저는 모르겠어요] [ 세상에 대해 좀 더 배우면 알 수 있을 겁니다.]

 

G.     topic: ~quibblewhen system []

?: ( 언제 ~알다) [저는 모릅니다] [하늘이 아시겠죠.] [신만이 아실 겁니다]

?: ( 언제 ~하다) [글쎄요. 언제 했을까요?] [언제인지 모르겠어요] [누구에게 물어봐야 알까요?]

 

얼버무리기는 작성자가 직접 호출하여 사용할 수도 있다.[2]

 

H.     ?: ( 누가 ) ^respond (~quibblewho)

 

위의 H룰은 매우 광범위한 입력문과 매칭되므로 (사용자 입력문에 누가라는 단어만 포함되어 있으며 매칭) 이 룰을 배치할 때는 가장 마지막에 배치해야 한다.

 



[1] Quibble의 완전한 예제는 소스화일과 함께 딸려오는데 아래의 폴더에 있다.

RAWDATA\QUIBBLE\

[2] respond 함수에 대해서는 9 13절에서 설명한다.


댓글
댓글쓰기 폼