티스토리 뷰

Chatscript는 자연어 처리 및 대화 관리를 위한 인공지능(Artificial Intelligence) 개발툴 이다. 자연어로 대화를 할 수 있는 봇을 개발하는 툴인데 2010Loebner[1]대회에서 우승한 Suzette, 2011년 우승한 Rosette 그리고 2014년과 2015년 연속 우승한 Rose를 만든 개발툴이다[2]. 또한 일본 SpeakGlobal사의 영어를 가르치는 교사 Ben(=ESL 챗봇)과 미국 아마존의 자연어 검색서비스 그리고 세계 최대의 기업정보 서비스 회사인 미국 Dun & BradStreet의 자연어 검색에도 사용되어 상업적으로도 그 성능을 입증 받고 있는 개발툴이다[3]. 한편 현재 8세 소녀로 활동하고 있는 Talking Angela라는 iPhone iPad용 앱은 그 자연스런 대화 능력에 힘입어 누계 약 17천만번의 다운로드를 기록하고 있다.

Chatscript는 대화 이외에도 대화를 통해 특정 목적을 달성할 수 있는 기능이 있다. 예를 들어 ChatscriptHTN planner 를 내장하고 있어 가전제품이나 로봇 등에 대화로 일을 시킬 수 있는 두뇌 역할을 할 수도 있고 POS Tagger/Parser를 내장하고 있어 웹의 수 많은 문서를 읽어 들여 요약문을 작성하도록 대화로 명령을 내릴 수도 있다.

무엇보다 Chatscript의 가장 큰 장점은 대화형 챗봇의 개발을 연극 대본 쓰듯 쉽게 만들수 있다는 점이다. 챗봇의 개발을 위한 코드가 일상 언어로 작성한 연극 대본과 흡사하기 때문에 누구나 쉽게 배우고 작성할 수 있다는 점이 가장 큰 장점이라 하겠다. 그럼에도 그 대화 기능은 여타의 프로그래밍 언어로 작성한 것보다 더 뛰어나다.(여러 차례 뢰브너 경연대회에서 우승한 경력이 이를 잘 말해 주고 있다.) 프로그래밍 경험이 있는 IT개발자라면 더 빠르게 배우고 더 쉽게 이해하겠지만 일반 기획자도 누구나 쉽고 빠르게 배워서 작성할 수 있다는 점이 Chatscript의 가장 큰 장점이다.

Chatscript 외에도 자연어 대화가 가능한 챗봇의 개발툴이 많이 존재하지만, 말걸기 기능, 대화의 인접쌍 지원, 맞춤법 오류에 대한 강건성, 규칙의 논리적 집합인 토픽이나 컨셉의 제공, 높은 코드 가독성 등은 다른 개발툴이 넘 볼 수 없는 장점이라 하겠다. 특히 룰을 모듈화(Chatscript에서는 토픽이라 부름)하여 제공하기 때문에 다른 사람이 작성한 것을 구입하거나 복사하여 사용할 수도 있고 토픽별로 룰 작성을 나눠 여럿이 공동 작업으로 진행할 수도 있다는 점은 소프트 봇의 개발 생산성을 높이는 큰 장점이라 하겠다.

 

A.     대화 엔진으로서의 장점

    대화 상대방의 의도를 먼저 파악하고 그런 후 적합한 룰을 찾는다. 매칭되기만 하는 룰을 찾는 단순한 엔진이 아니라 사용자가 무엇을 얘기하고 말하는 목적이 무엇인지를 먼저 파악해서 그에 맞는 응답을 산출하려 한다.

    관련되는 규칙들을 모아서 하나의 단위로 처리할 수 있도록 하는 토픽이라는 논리적 단위를 제공한다.

    봇이 먼저 화제를 제시하는 말걸기 기능이 있다.

    봇이 열린 질문을 했을 경우 사용자가 다양하게 답변할 수 있는데 이를 구조적으로 처리할 수 있다.

    사용자가 단어를 입력하면 입력한 형태 그대로인 입력형(Original Form) 외에 그 단어의 원형인 기본형(Canonical Form)을 자동으로 찾아 둘을 세트로 함께 관리한다. 따라서 룰을 작성할 때 동사나 형용사의 활용형을 일일이 적을 필요 없이 기본형만 적으면 모두 매칭이 가능하다.

    대화 관리 기능이 있다. (information-state-update dialog manager) 개발자가 대화 전개 상황을 예상하고 각각의 상황에 어떻게 대응할 것인지를 지정해 놓으면 CS엔진은 사용자와 대화를 진행하면서 사용자가 말한 것을 기반으로 상태를 파악해서 개발자가 설계한 내용 중 가장 적합한 답변을 골라 대화를 진행하게 된다. 즉 대화 관리를 동적으로 수행한다.

    지식표현의 세 종류인 IF-Then, 의미망, 프레임 중에서 IF-Then과 의미망의 두 가지를 동시에 지원하여 필요한 전문지식을 갖추는데 효율적이다. 즉 지능의 속성에 따라 IF-Then과 의미망으로 나눠서 표현할 수 있다.

    HTN(계층적 작업 망 계획, Hierarchical Task Network) planner를 내장하고 있다.

    POS Tagger(Part-of-speech tagger, 품사 분석기)Parser(구문 분석기)를 내장하고 있다. 이를 통해 품사 구별, 시제 구별, 문장의 종류 구별 등 뿐만 아니라 각 단어의 문장내 역할까지 분석한다.

    사전을 내장하고 있다. 철자 체크 뿐만 아니라 POS taggingParsing의 기본 자료로 사용되며 연령대별 어휘세트도 제공한다. (예를 들면 12살에 해당하는 봇을 개발하면 중고생이 사용하는 어휘는 사용하지 않도록 가이드 하는 기능)

    사물들 간의 관계에 관한 온톨로지를 내장하고 있다. 이로써 시애틀이 캘리포니아주에 있는지 워싱턴주에 있는지, 사과가 곡물인지 과일인지 등을 알 수 있다.

    40개의 담화 유형(dialog act)을 내장하고 있다. 이로써 사용자 반응이 칭찬인지 동의인지 호의를 표현하는지 지루해 하는지 등을 분류하여 그에 맞게 대응할 수 있다. 예를 들어 사용자가 당신은 예쁘네요라고 했을 때 대응되는 룰이 없다면 당신은 예쁘네요라는 말이 칭찬에 해당하는 상황임을 알고 칭찬에 해당하는 룰을 작동시킨다. 그 결과 감사합니다라는 인사를 출력할 수 있게 된다.

    미리 만들어 놓은 약 1,600 여개의 컨셉을 내장하고 있다.

    대화를 나눈 사용자 단위로 대화 내용을 기록하기 때문에 지난 번 대화내용을 기반으로 계속 대화를 이어 나갈 수 있다. (이 대화 기록을 자동으로 읽어오는 것은 아니기 때문에 작성자가 코드를 작성해야 함) 또한 사용자가 얘기한 내용을 챗봇의 지식베이스에 영구 저장할 수도 있고 변수에 임시 저장해 놓을 수도 있으며 다른 사용자와 공유할 수도 있다.

 

다만 위에 열거한 사전이나 POS Tagger, Parser 등은 영어용으로 개발된 것이라 한국어 대화를 위해서는 추가 조치가 필요하다. 영어와 한국어의 언어적, 대화적 특성이 다르기 때문에 그대로 가져다 쓸 수 없기 때문이다. 그러나 이 POS TaggerParser 등이 없어도 한국어로 대화하는 것은 충분히 가능하며, 특히 이 Chatscript를 이용하여 한국어 챗봇을 개발할 경우 한국어와 영어의 2개 국어를 구사하는 소프트 봇이 될 것이다.

 

B.     개발툴로서의 장점

    대화 분석툴이 제공된다. 사용자와 나눈 대화 기록을 분석할 수 있는 툴이 있어, 이를 통해 어떤 대화, 어떤 토픽, 어떤 룰이 얼마나 자주, 얼마나 깊이 있게 다뤄졌는지 알 수 있으며 이를 통해 확대해야 할 룰이나 보완해야 할 룰들을 쉽게 파악할 수 있게 된다.

    대화 요약문을 제공한다. 봇의 스크립트 작성이 끝나면 최종 점검을 위해 대화요약문을 출력할 수 있다. 이는 작성된 룰에 의해 사용자와 시스템이 주고 받게 될 전체 대화 내용으로써 이 기능은 개발자보다는 운영자를 위한 것이다. CS의 문법을 몰라도 되며 봇 전체를 테스트하지 않아도 수정이나 보완할 내용이 없는지 확인할 수 있도록 해 주는 툴이 제공된다.

    다양한 디버깅 툴이 있다. 단위 테스트, 통합 테스트를 위한 진단툴과 오류를 찾아내는 다양한 디버깅 툴이 있어서 룰 매칭이 안 될 때 그 원인과 대책을 효과적으로 찾을 수 있도록 해 준다.

    처리속도가 빠르다. 속도가 느린 싱글코어 CPU에서 초당 약 100 차례 말을 할 수 있는데 사람이 보통 15초당 한 번 말하는 것을 감안한다면 초당 약 1,000명과 대화를 할 수 있는 속도이다. 만약 OSUnix라면 성능은 훨씬 높아진다. 또 다른 예로 스탠포드대학교의 영어문장 분석기(parser)는 초당 28개의 토큰을 처리하는데 반해 노트북 컴퓨터에서 작동하는 Chatscript는 초당 3만개의 토큰을 처리한다.

    메모리를 적게 차지한다. Chatscript로 만든 챗봇 중 사이즈가 가장 큰 챗봇이 iPone에서 작동하는 Talking Angela인데 이 봇은 겨우 18M bytes의 메모리만을 필요로 한다.

    Database와 연계된다. Chatscript는 오픈소스 데이터베이스인 Postgres와 연결되어 대량의 데이터를 처리할 수 있다.

    외부 프로그램과 연결된다. 인터넷 또는 로봇의 컨트롤 머신 등 어떤 프로그램과도 연결하여 데이타를 주고 받을 수 있다. 예를 들어 HTTP를 통해 런던의 현재 기온이나 화성의 궤도를 확인해서 사용자에게 답을 줄 수 있다.

    복수의 챗봇을 지원한다. 하나의 봇이 다수의 사용자와 동시에 대화를 나눌 수 있고 한 명의 개발자가 서로 다른 다수의 봇을 동시에 서비스할 수 있다. 따라서 특성이나 전문영역이 다른 복수의 챗봇을 동시에 다수에게 서비스할 수 있다.

 

이상 ChatScript의 특장점을 살펴 보았다. 이후 연재되는 글에서는 Chatscript를 CS라 줄여 부르고 CS로 개발하는 소프트 에이전트는 챗봇이라 부르기로 하겠다.



[1] Loebner Prize(뢰브너 상)1990년에 Hugh Loebner가 제정한 상으로 인간과 구별할 수 없을 정도의 대화를 하는 컴퓨터를 뽑는 상이다. 매년 대회를 열며, 대회에 참가한 컴퓨터 중에서 가장 인간에 가까운 컴퓨터를 우승자로 뽑고 있다.

[2] ChatScript는 소스가 완전 공개되어 있으며 누구나 자유로이 사용할 수 있는 개발툴 이다

[3] 더 자세한 활용 예는 http://brilligunderstanding.com/projects.html 참조.


댓글
  • 프로필사진 CBOT 정보감사드립니다.
    한국어를 탑재하는데에는 별 무리가 없나요...
    저도 지금 인공지능챗봇을 만들려고 시도하고 있는데
    한국어가 너무 어렵워서 그렀습니다.
    chatscript도 corpus로 트레이닝을 해야 하는가요?
    2016.08.16 11:04
댓글쓰기 폼