이제 CS 스크립트를 실제로 컴파일해 보기로 하자. 소스화일과 함께 딸려오는 간단한 챗봇이 있는데 이 챗봇을 약간 수정하여 전체 감을 잡아 보기로 하겠다.
① Introduction.top 파일 편집
스크립트를 편집할 수 있는 편집용 소프트웨어로 RawData/Harry/introductions.top 파일을 연다. 이 파일의 맨 마지막 줄 끝에 있는 My name is Harry를 “내 이름은 해리에요”로 바꾼다. 그런 후 파일을 UTF-8 포맷으로 저장하고 나온다.
② CS를 명령어 모드로 실행
앞서 "개발 환경 갖추기"에서 설치한 ConEmu를 더블클릭한 후 “cs”라고 타이핑하여 binaries폴더로 이동한다. 이곳에서 chatscript 라고 입력하고 엔터키를 누르자.(화면 1 참조)
그러면 CS의 버전 정보 등이 첫 줄에 나오면서 위와 같은 검은 창이 나타날 것이다. 윈도우즈용 싱글 버전의 모습이다. 화면의 모습에 실망할 필요없다. 대화 엔진의 모습이라고 보면 된다. 여러 정보가 화면에 출력되는데 일단 무시하고 Enter user name: 이라는 문자열 옆에 커서가 깜박이는 것을 확인한 후 적절한 이름을 입력해 보자. 앞으로 이 이름으로 챗봇과 대화를 하게 된다. alphago라 입력해 보자.
이제 Harry라는 챗봇이 자신의 이름을 출력하고 환영의 인사를 한 마디 한 다음, 방금 입력한 당신의 이름 alphago를 보여 주면서 당신에게 말할 차례를 넘기게 될 것이다. (화면 2 참조)
이제 :build Harry reset 이라고 입력한다. (화면 2의 맨 마지막 줄 참조) 조금 전에 “내 이름은 해리에요”라고 수정한 내용을 반영하기 위해 harry를 새로 만드는 과정이다. 컴파일(compile)이라고 하지 않고 빌드(build)라고 하는 이유는 컴파일을 한 후 사전과 컨셉, 지식베이스 등과 연결하여 실행 가능한 형태로 만드는 작업까지 한 번에 하기 때문이다. 이때 “build Harry”가 대화문이 아니라 명령어임을 표시해 주기 위해 “:build”와 같이 반드시 콜론으로 시작해야 한다.
이제 CS는 Harry라는 단어 앞에 files를 붙이고 끝에 txt를 붙여서 filesHarry.txt 파일을 찾는다. 그리고 그 파일 안에 명시되어 있는 폴더를 찾아 그 폴더에 포함되어 있는 모든 파일을 컴파일하고 연관되는 파일들과 연결하여 실행가능한 상태로 완성한다. 이와 같은 빌드과정이 잘 끝나면 다시 인사를 하고 말할 차례를 넘길 것이다. (화면에 많은 정보가 출력되면서 스크롤 될텐데 일단은 무시하자. 이 정보들은 Users폴더 밑에 buildharry_log.txt 라는 파일에 모두 저장된다.)
이제 앞에서 수정한 introduction.top 파일의 내용이 반영된 새로운 챗봇 harry가 탄생한 것이다. 확인을 위해 "What is your name?"을 입력해 본다. (겹따옴표 없이) 그러면 harry가 "제 이름은 해리에요"라고 한글로 대답할 것이다. (화면 3 참조)
만약 한글이 깨진다면 둘 중의 하나이다. Introduction.top 파일을 저장할 때 UTF-8 형식으로 저장하지 않았거나 ConEmu 콘솔의 문자세트를 UTF-8로 바꾸지 않았기 때문이다.
③ 내 챗봇 실행하기
이제는 내가 만든 챗봇을 실행해 보기로 하자. 먼저 이름부터 정해야 하는데 일단 Dorothy라고 해 보자. (오즈의 마법사 여주인공인 도로시) 그러면 설정화일의 이름은 filesDorothy.txt 가 되어야 하고, Dorothy 폴더를 만들어 Dorothy와 관련된 파일들을 이곳에 모아 놓아야 한다.
가. 설정화일
이름 : filesDorothy.txt (“files”로 시작하고 연이어 빈칸 없이 챗봇의 이름을 적는다. 파일 확장자는 txt이다.)
위치 : ChatScript 폴더와 같은 레벨 (Chatscript 폴더 아래에 두는 것이 아님)
내용 : 새로 만든 Dorothy 폴더의 위치를 적어 준다. 예를 들어 폴더구조가 다음과 같다고 할 때 설정화일을 적어보면
이때 주의할 점은 설정화일이 위치하는 곳을 기준으로 폴더의 위치를 적는 것이 아니라 chatscript의 루트 디렉토리를 기준으로 적는 것이기 때문에 위와 같이 적어야 한다는 점이다.
예제로 딸려 오는 filesHarry.txt에는 quibble 폴더가 포함되어 있는데, filesDorothy 설정화일에는 이 줄을 포함시키지 않는다. 한글로 대화하는 데는 아무 도움이 안되며 화면만 어지러워진다. 나중에 Quibble을 작성할 때 참조하는 정도로 활용하면 되겠다.
나. 스크립트 파일
예제로 딸려 오는 Harry 폴더 내의 파일 4개를 모두 Dorothy 폴더에 복사한다. 파일명은 중요하지 않으니 나중에 바꿔도 된다. 이 중에 filesharry.txt는 삭제한다.
복사해 온 파일 중에 simpleControl.top 파일이 있는데 이를 열어 Harry라는 단어를 모두 Dorothy로 바꾼다. 총 3개가 있다.
Introductions.top 파일을 열어 맨 아랫 줄의 “My name is Harry”를 “제 이름은 도로시에요”로 바꾼다. 파일을 저장할 때는 항상 UTF-8 형식으로 저장해야 한다는 점을 잊지 말자.
childhood.top 파일이나 keywordless 파일은 잠시 놔 두도록 하자.
향후 본인이 작성한 스크립트 파일을 Dorothy폴더에 두면 CS가 파일명에 상관없이 모두 컴파일하고 로드한다. 파일명은 임의로 정하면 되나 확장자는 Top로 해서 다른 파일들과 구별할 수 있도록 하는 것이 좋겠다.
이제 Dorothy를 빌드하기 위해 콘솔1번 창에서 “:build Dorothy” 라고 명령을 내린다. (화면 2 참조) 그러면 CS는 Dorothy 앞에 files를 붙인 후 확장자가 txt인 파일을 찾아 그 안에 있는 폴더정보에 따라 필요한 정보를 컴파일하고 메모리에 로드하고 연결하여 서비스를 시작하게 될 것이다. 앞서도 말했지만 CS는 동시에 다수의 챗봇이 운영될 수 있다는 가정하에 챗봇의 이름을 기준으로 파일을 관리하고 있으니 챗봇의 이름과 설정화일의 이름, 그리고 폴더의 이름을 일치시키도록 하자.
이제 올바르게 작동하는지를 확인하기 위해 “what is your name?”이라고 입력해 본다. 그러면 “제 이름은 도로시에요”라고 답할 것이다.
④ chatscript 끝내기
CS를 끝내는 명령어는 :quit (콜론으로 시작해야 함) 이다. :quit를 입력하고 엔터키를 누르면 CS는 끝나고 MS-Windows의 명령어 입력 상태로 돌아오는데 이때 “exit”를 입력하면 콘솔까지 끝내게 된다.