티스토리 뷰
최근 채팅봇의 인기가 늘어남에 따라 (2011 Chatterbox Challenge의 공헌으로) 여기저기서 선행 경험이 없으신 분들이 저에게 자신만의 채팅봇을 어떻게 만들어야 하는지에 대한 문의를 많이 해주셨습니다.
기본적으로, 미래의 봇 전문가 유망주 분들이 새로운 채팅봇을 만들기 위해 선택할 수 있는 몇 가지 방법이 있습니다. 여기서 모든 방법들을 다룰수는 없기 때문에, 좀 더 대중적인 방법들 몇몇개에 대해서 장점과 단점들을 간략하게 다루겠습니다. 그 다음에 자신만의 채팅봇을 세팅하는 방법 두 가지에 대한 단계적인 가이드를 제시하겠습니다. 그중 하나는 독립적인 봇 앱이고, 다른 하나는 웹에 기반한 채팅봇입니다. 자 우선 기본부터 시작해 봅니다.
채팅봇 타입 – 하나 아니면 여러개?
주요 두 가지 채팅봇 타입중 하나는 “독립적인” 애플리케이션으로, 채팅봇은 하나의 컴퓨터에만 실행됩니다.
다른 하나는 “웹 기반” 으로, 원격의 서버에서 실행되고, (일반적으로) 웹 페이지 형식으로 일반 대중들이 접근 가능합니다. 대다수의 독립적인 봇들은 시스템 인터페이스와도 통합되어 있어서, 봇들이 컴퓨터의 특정 기능들, 예를들어 미디어 파일을 재생하거나, 파일을 검색하는 기능들을 사용할 수 있게 해줍니다. 그들은 대부분 그래픽으로 구성되어 있고 아바타의 형식으로 되어있고(주로 여성?!) 상호작용을 도와주어 경험을 향상 시켜 줍니다. 기본적인 웹 기반 채팅봇의 가장 심플한 형식은, 단순히 흰색 바탕의 웹 페이지에 봇과 유저 사이의 하나의 인터페이스가 끼워 넣어져 있는 형식입니다. 이 봇의 업그레이드나 인터페이스의 성능 향상은 오직 봇마스터의 옵션이고 책임입니다.
장점과 단점 : 독립적인 채팅봇 어플리케이션
대부분의 독립적인 채팅 앱, 예를 들어 AI Bliss (http://aibliss.com/) 과 Kari (http://karigirl.com/) 들은 이러한 장점이 있습니다 :
- 대부분은 설치하거나 사용하기 간단합니다.
- 그들은 매력적이고 매혹하는 그래픽 인터페이스가 있고, 탐험하기 좋은 풍부하고 호화로운 세계를 갖추고 있습니다.
- 대부분은 글을 말로 바꾸는 (Text to Speech : TTS) 시스템을 가지고 있어 당신의 경험을 향상시키는 오디오 기능을 갖추고 있습니다.
하지만, 그들은 다음과 같은 단점도 가지고 있습니다 :
- 이 봇들은 “당신만의 로봇”이 아닙니다. 그들은 당신만의 로봇을 만드는데 매우 제한적인 정도의 기능을 갖추고 있습니다.
- 대개 이 로봇들은 무료가 아닙니다. 하지만 대부분 데모버전은 제공합니다.
- 많은 종류가 성인 콘텐츠를 가지고 있어서 집에 아이들이 있거나, 불쾌하다고 받아들일 수 있는 사람들에게 환영받지 못 할 수도 있습니다.
나중에 제가 설명하겠지만 현재 위의 것들은 모든 독립적인 애플리케이션 봇에 해당되는 것은 아닙니다. 하지만 대다수의 독립적인 채팅봇들에게는 위의 것들 중에 적어도 하나는 해당됩니다.
장점과 단점 : 웹 기반 채팅봇
독립적인 채팅봇 앱과 마찬가지로, 웹 기반 채팅봇을 만드는 것에도 장점과 단점이 있습니다. 먼저 좋은 면 부터 살펴보겠습니다 :
- 웹 기반 채팅봇은 행동과 인격에 대한 부분을 더 많이 통제할 수 있도록 해줍니다.
- 대부분의 경우 당신은 무료로 봇을 호스팅 할 수 있습니다. 물론 ‘프리미엄’ 옵션도 있긴합니다.
- 만일 봇의 구성에 대해 조정할 수 있으면, 성인의 콘텐츠를 사용할지에 대한 부분을 조정할 수 있습니다.
하지만 단점도 존재합니다 :
- 웹 기반의 봇은 독립적인 채팅봇 어플리케이션보다 설치하기 어렵습니다. 약간 더 복잡한 절차가 필요하고, 따로 ‘설치프로그램’이 존재하지 않습니다.
- 웹 기반 채팅봇을 설치하는데는 최소한 다음과 같은 능력이 요구됩니다.
- HTML
- CSS
- JavaScript
- Artificial Intelligence Markup Language (AIML) – (Pandorabot 이나 AIML 구조를 사용하는 봇들에 대해)
화려한 기능들, 예를 들어 글을 말로(Text to Speech), 애니메이션 아바타 등은 각자 만들어서 봇 페이지에 합쳐야 하고, 특정 기능들, 예를 들어 음성인식 같은 것들은 가능하지 않거나 매우 제한적인 기능만 가지고 있습니다.
하지만 만일 당신이 필수적인 스킬을 가지고 있으면(혹은 배우려는 의지), 저는 웹 기반 봇들이 더 가치 있는 도전이 될 수 있다고 생각합니다.
불량해지기 – 모든 것을 밑바닥에서 부터 만들기 (뭐, 거의 모든 것 말입니다.)
제가 제 첫 채팅봇인 Morti (http://www.geekcavecreations.com/Morti/)를 만들기 전에 몇 가지 사용 가능한 옵션들을 살펴보았습니다. 그리고 제가 웹 디자인, 웹 프로그래밍, 데이터베이스 관리에 대한 상당한 지식과 경험을 갖추고 있었고, 저만의 채팅봇을 호스팅 할 수 있는 곳이 있었기 때문에 저는 좀 더 어려운 길을 선택했습니다. 봇의 모든 부분을 조종할 수 있게 봇을 저 스스로 호스팅 하기로 결정했습니다. 게다가 전 제가 위에서 언급한 스킬들과 비슷한 스킬들을 가지고 있었습니다.
- PHP scripting language
- MySQL database management
- 채팅봇 engine/interpreter(제 경우는, program O)
- jQuery (Morti의 인터페이스에 사용했습니다.)
제가 어떤 방식으로 만들지 결정했기 때문에, 저는 다음과 같은 방법으로 봇을 만들기 시작했습니다.
- 저는 PHP AIML interpreter, Program O (www.program-o.com) 을 다운받고 철저히 공부했습니다.
- 저는 스크립트를 Morti의 폴더에 업로드 하고, 포함된 설치 스크립트를 실행하고, 방법에 따라서 필요한 대로, 스크립트 내의 데이터베이스 정보를 업데이트하였습니다.
- 저는 ALICE의 주석 달린 AIML 묶음을 얻었고(AIML 패턴/응답 템플릿 표는http://www.alicebot.org/downloads/sets.html 에서 사용 가능합니다.), Morti의 스크립트로 포함 시키고, Program O 관리 페이지를 사용했습니다.
- 저는 Morti에 특별한 개성을 주고, ALICE의 악명 높은 “초록 드레스” 를 없애기 위해 상당히 많은 시간을(지금도 계속 하고 있습니다.) 패턴과 템플릿을 변경하는데 들였습니다.
- 저는 Program O 스크립트를 살펴보아서, 기능들을 향상 시키거나 확장하였고(이것도 마찬가지로 아직도 하고 있습니다.), 특징들을 추가하였습니다. 예를 들어 이름으로 사용자의 성별을 구분하는 기능(물론 완벽하거나 100%포괄적이진 않지만 꽤 잘 작동합니다.), 과 위키를 추가하고, 구글 검색을 추가하였습니다.
- ‘매우 많은’ 테스트를 하였습니다. 그리고 또 테스트를 하였고, 또 테스트를 하였고 또 테스트 또 또….
통틀어 저는 Morti에 아마도 지난 10달 동안 1000시간 이상의 시간을 투자했습니다. 첫 프로세스를 만드는 데에는 하루 정도 밖에 안 걸렸지만 말입니다. 나머지 시간들은 Morti의 스크립트를 실험하는데 사용했습니다; Morti의 응답을 조정하기 위해 스크립트를 고치고 업데이트를 하였습니다. 하지만 처음에 구상하였던 봇을 만들기 위해서는 지금도 갈 길이 멉니다. 제가 채팅봇을 만드는데 사용했던 방법은 엄청나게 많은 노력이 필요합니다. 하지만 당신이 스킬이 있고, 인내심이 있고, 헌신하겠다는 마음이 있으면 이 방법이 가장 보람있는 일이라고 장담합니다.
주석: – 이 글을 몇 개의 포스트로 나누어 났습니다. 계속되는 내용은 다음 글을 보세요.
위 글은 Dave Morton의 글을 번역한 것으로, 저자의 동의 하에 번역된 것입니다.
- Total
- Today
- Yesterday
- 한글
- void* arg
- Uniity5
- 설치
- UTF8
- winetricks
- libgcrypt
- ubuntu
- unreal4
- download
- Android
- 객체란
- 다운로드
- 왜 0부터
- 안드로이드
- locales
- 언리얼 엔진4
- wine1.8
- 인코딩
- mariasql
- 우분투
- 2의 보수
- 컴퓨터 숫자
- 여러 인자
- install
- utf-32
- MySQL
- docker
- libgcrypt11
- object orient
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |