① :verify keyword 또는 :verify ~topicname keyword
몇 차례 반복해서 하는 이야기이지만 입력문과 룰과 토픽은 키워드를 공유해야 한다. 그래야 사용자 입력문에 적합한 토픽과 룰이 활성화 되기 때문이다. 따라서 룰을 정교하게 작성하는 것보다 더 중요한 것이 키워드를 공유하도록 작성하였는가 하는 점이고, 바로 verify keyword 명령어로 이를 알아 볼 수 있다.
사용법은 명령어 뒤에 옵션으로 keyword를 적어주면 되는데, verify명령어는 해당 토픽 또는모든 토픽을 대상으로 예제 입력문과 해당 토픽의 키워드를 비교하게 된다. 만약 공유하는 키워드가 없다면 문제가 될 수 있다. 사용자가 그 예제를 입력하였을 때 그 토픽이 활성화되지 않을 것이기 때문이다. 따라서 예제 입력문에 토픽의 키워드가 포함되도록 수정하거나 (따라서 룰도 다시 작성) 토픽의 키워드 목록에 예제 입력문의 단어를 추가하여야 한다. 모든 룰에 키워드가 잘 매칭될 경우의 메시지는 다음과 같다.
맨 마지막 요약줄을 보면 4개를 테스트 해 보았는데 verify해야 할 것이 하나도 없다라는 뜻이다. 키워드 공유에 오류가 있는 경우를 보기 위해 ~kpop 토픽에 “어제 축구는 이겼어요" 라는 룰을 추가했다고 가정을 해 보자.
#! 어제 축구는 이겼어요?
u: ( 축구* 이겼* ) 예. 후반에 역전승 했어요.
그리고 ~kpop 토픽에 대해 동일하게 키워드 검사를 해 보면,
키워드가 없는 룰을 1개 발견(1 Missing keyword)하였고 그 룰은 “어제 축구는 이겼어요” 이다는 결과를 볼 수 있다. 토픽 ~kpop에는 축구 등에 관한 키워드가 없었을 테니 당연한 결과일 것이다. 마지막 줄을 보면 5개의 룰을 테스트 하였는데 verify해야 할 룰을 하나 발견했다는 요약문이 있다.
토픽을 작성하다 보면 얼버무리기 토픽처럼 우연히 호출되는 일이 없도록 토픽에 키워드를 안 주는 경우도 있다. 이런 경우는 예제 입력문에 !K를 추가 해 주면 키워드 테스트를 하지 않는다.
#!!K 투애니원 콘서트에 안 가 본 사람 누가 있겠어요?
u: ( 안 가 본 사람* ) 아마 아무도 없을 거에요.
위의 룰은 verify 명령어로 실행하더라도 keyword 연결성 여부는 테스트하지 않는다. 주로 반응전용 토픽과 얼버무리기 토픽이 해당될 것이며 불필요한 에러 출력을 피할 수 있게 된다.
verify 옵션은 이외에도 몇 가지가 더 있지만 가장 중요하고 자주 쓰이는 옵션이 keyword, pattern, blocking의 세 가지이다. 만약 옵션없이 단순히 verify 명령어만 주면 모든 테스트를 한 번에 수행한다. 이럴 경우 진단 결과가 많기 때문에 읽고 수정하는데 어려울 수 있다. 따라서 초기에는 옵션을 하나씩 주면서 차근차근 테스트 하는 것이 좋을 것이다.
② :topics 입력문
입력문이 의도했던 룰과 매칭되지 않을 경우 가장 먼저 시도해 볼 것은 염두에 두고 있는 토픽이 활성화 되고 있는가 이다. 앞절의 verify keyword 명령어가 예제 입력문을 기준으로 토픽의 활성화 여부를 확인하는데 반해 아래의 topics 명령어는 실제 입력문을 기준으로 어떤 토픽이 활성화될 것인지 알아볼 수 있다. 예를 들어
:topics 노래 좋아하세요
라고 입력하면, 이 입력문에 의해 활성화되는 토픽이 무엇인지 알려준다.
위의 결과 화면을 보면, “노래 좋아하세요?”라는 입력문에 ~kpop이라는 토픽이 활성화되고, 그 이유는 “노래”라는 키워드 때문이라는 것을 알 수 있다. 괄호 안의 숫자 16은 이 입력문과 ~kpop 토픽의 연결 정도를 나타내는 수치이다. 공유하는 단어가 많을수록 공유하는 단어가 앞쪽에 위치할수록 음절이 긴 단어를 공유할수록 높은 점수를 받게 된다. 이 점수는 활성화되는 토픽이 여러 개 일 때 의미 있는데, 예를 들어 노래라는 키워드는 취미, 생일잔치, 응원 등 다른 토픽에도 포함될 수 있고 이런 경우는 해당 토픽들이 점수와 함께 모두 제시된다. 이렇게 활성화되는 토픽이 여러 개 있는 경우에는 의도하는 토픽이 높은 점수를 받도록 topic 키워드를 조정해야 한다 (명령어 topics가 복수형이라는 점 기억하자)
③ :topicinfo keys
사용자가 입력한 단어를 중요시하는 이유는 사용자가 무엇에 관해 말하려는 지 그 의도를 알 수 있는 가장 확실한 근거가 되기 때문이다. 룰을 작성할 때도 사용자가 이런 단어를 입력할 경우에는 이렇게 대답을 해야겠다는 방향을 세울 수 있게 되고 룰의 집합체인 토픽을 만들 때도 이런 단어를 입력해 오면 이 토픽으로 대화를 진행 해야겠다는 계획을 세울 수 있게 되므로 사용자가 입력한 단어에 초점을 맞추는 것은 유용한 점이 많다. 그런데 토픽을 수십 수백 개 작성하다 보면 어떤 키워드가 어떤 토픽에 등록되어 있는지 일일이 다 기억할 수 없게 된다. 이런 때 사용할 수 있는 진단툴이 topicinfo keys 명령어이다. topicinfo keys 명령어는 모든 토픽을 대상으로 각각 보유하고 있는 키워드를 나열하여 준다. 따라서 키워드로 스크립트 전체의 그림을 볼 수 있다.
만약 ~topicname을 지정하면 지정된 토픽의 키워드만 보여준다. 키워드에 컨셉이 등록되었다면 그 컨셉에 포함된 단어도 모두 풀어서 보여주므로 명령을 실행한 후, USERS 폴더에 있는 명령어 실행 로그화일을 열어서 차근히 검토하는 것이 좋다.
④ :topicinfo overlap
topicinfo overlap은 토픽들 간에 중복되는 키워드를 가진 토픽을 찾아주는 진단툴이다. 토픽이 많아지면 토픽 키워드의 중복이 생길 수 있는데 예를 들어 자동차 토픽을 만든 후 나중에 여행이라는 토픽을 만들면서 또 다시 자동차라는 키워드를 등록할 수 있다. 이 둘을 합하는 것이 좋을지 일부 키워드만 조정하는 것이 좋을지 등을 판단할 수 있도록 토픽간의 중복된 정보를 알려주는 명령이다