챗스크립트

ChatScript

ChatScript처음에는 Chatbot을 만들기 위해 고안된 Natural Language 엔진과 대화 상자 관리 시스템을 결합한 것이지만, 현재는 다양한 형태의 NL 처리에도 사용되고 있다.C++로 표기되어 있다.엔진은 SourceForge의 오픈소스 프로젝트다.[1]그리고 깃허브.[2]

챗스크립트는 브루스 윌콕스가 쓴 것으로, 수제트(챗스크립트에 쓰여진)가 2010 롭너상을 수상해 4명의 인간 심사위원 중 한 명을 속인 뒤 2011년 처음 출시됐다.[3]

특징들

일반적으로 ChatScript는 손으로 작성한 챗봇의 확장성이 제한적이기 때문에 매우 간결하게 작성하는 것을 목표로 한다.

챗스크립트는 대화형 대화용으로 설계돼 볼리 전체에 걸쳐 사용자 상태를 자동으로 유지한다.발리(bolly)는 사용자가 한 번에 입력하는 문장과 챗봇의 응답 수입니다.

스크립팅의 기본 요소는 규칙이다.규칙은 유형, 레이블(옵션), 패턴 및 출력으로 구성된다.세 가지 유형의 규칙이 있다.도박은 챗봇이 대화를 통제할 수 있을 때 말할 수 있는 것이다.재접수는 챗봇이 방금 한 말과 연결된 사용자 말에 대응하는 규칙이다.응답자는 임의 사용자 입력에 응답하는 규칙으로, 챗봇이 방금 말한 것과 반드시 연관이 있는 것은 아니다.패턴은 규칙이 발사될 수 있는 조건을 묘사한다.패턴은 극히 단순화에서 매우 복잡화(아날로그에서 Regex까지 그러나 NL을 목표로 함)까지 다양하다.중용은 일반적으로 의미를 공유하는 단어들의 목록인 개념 집합으로 만들어진다.ChatScript는 2000개의 미리 정의된 개념을 포함하고 있으며 스크립터는 쉽게 그들 자신의 개념을 쓸 수 있다.규칙의 출력은 사용자에게 보낼 리터럴 단어와 공통 C 스타일 프로그래밍 코드를 혼합한다.

규칙은 주제라 불리는 컬렉션으로 번들로 구성된다.주제에는 키워드가 있을 수 있으며, 이를 통해 엔진은 사용자 입력에 기반한 관련 규칙을 자동으로 검색할 수 있다.

예시 코드

Topic: ~food(  ~fruit  fruit food eat)  t: What is your favorite food?     a: (~fruit) I like fruit also.     a: (~metal) I prefer listening to heavy metal music rather than eating it.  ?:  WHATMUSIC ( << what music you ~like >>) I prefer rock music. s: ( I * ~like * _~music_types)    ^if (_0 == country) {I don't like country.{} 다른 {나도 그래}

~로 시작하는 단어는 개념 집합이다.예를 들어 ~과일은 알려진 모든 과일의 목록이다.간단한 패턴(~과일)은 챗봇이 좋아하는 음식을 물어본 직후 과일 등이 언급되면 반응한다.WHATMUSIC이라고 불리는 규칙의 약간 더 복잡한 패턴은 무엇, 음악, 당신 그리고 좋아하는 것을 의미하는 어떤 단어나 구절도 요구하지만, 그것들은 어떤 순서로든 발생할 수 있다.응답자는 세 가지 유형으로 나온다. ?: 규칙은 사용자 질문에 반응한다. s: 규칙은 사용자 문장에 반응한다.u: 규칙은 둘 중 하나에 반응한다.

ChatScript 코드는 표준 if-else, 루프, 사용자 정의 기능 및 호출, 가변 할당 및 액세스를 지원한다.

데이터

ChatScript의 일부 데이터는 일시적인 것으로, 현재의 발리슛이 끝나면 사라진다.다른 데이터는 영구적이며, 명백하게 소멸될 때까지 영원히 지속된다.데이터는 단일 사용자에게 로컬일 수 있고 봇 수준에서 모든 사용자 간에 공유될 수 있다.

내부적으로 모든 데이터는 텍스트로 표시되며 필요에 따라 자동으로 숫자 형태로 변환된다.

변수

사용자 변수는 몇 가지 종류가 있다.주제나 함수의 순전히 국부적인 변수는 일시적이다.글로벌 변수는 일시적 또는 영구적 변수로 선언할 수 있다.변수는 일반적으로 단지 사용만으로 선언되며, 변수의 유형은 변수의 접두사($, $, $, $_)에 따라 달라진다.

$_local = 1은 1$global1.value가 할당되는 로컬 과도 변수로서 "hi"는 과도 전역 변수로서 JSON 개체인 $global2 += 20은 영구 전역 변수다.

사실들

변수 외에도 ChatScript는 데이터의 3배, 즉 일시적이거나 영구적일 수 있는 사실을 지원한다.함수는 일부 필드의 특정 값을 갖는 사실에 대해 쿼리할 수 있으며, 이를 메모리 내 데이터베이스처럼 작동하게 한다.팩트 검색은 매우 빠르고 효율적이다. 사용 가능한 메모리 내 사실의 수는 주로 ChatScript 엔진을 실행하는 기계의 가용 메모리로 제한된다.사실들은 기록 구조를 나타낼 수 있고 ChatScript가 내부적으로 어떻게 JSON을 나타내는지에 관한 것이다.정보의 표는 적절한 사실을 생성하기 위해 정의될 수 있다.

표: ~인벤터(^who ^who) 생성인자(^who) 생성인자(^who) DATA: "Johannes Gutenberg" "인쇄 프레스" "Albert Einstein"["상대성 이론"] 광자 "일반 상대성 이론"]

위의 표는 아인슈타인이 한 일의 목록을 얻는 것과 사람들을 그들이 발명한 것(한 줄당 1개)으로 연결한다.

외부 통신

ChatScript는 Curl 라이브러리를 내장하고 JSON의 사실을 웹사이트에 직접 읽고 쓸 수 있다.

서버

ChatScript 엔진은 로컬 또는 서버 모드에서 실행될 수 있다.

Pos 태그 지정, 구문 분석 및 온톨로지

챗스크립트는 온톨로지를 포함한 영어 워드넷의 복사본이 내장되어 있으며, 컨셉 선언을 통해 자체 온톨로지를 생성하고 확장한다.영어 포스태거 및 파서를 보유하고 있으며, 다른 여러 언어 포스태깅을 위한 트리태거와의 통합을 지원한다(트리태거 상용 라이선스 필요).

데이터베이스

내부 팩트 데이터베이스 외에도 ChatScript는 Postgre를 지원한다.SQLMongoDB는 모두 스크립트에 의한 액세스를 위해 사용되지만, ChatScript를 수평으로 확장할 수 있도록 원할 경우 중앙 파일 시스템으로서도 사용된다.일반적인 사용 사례는 중앙 집중식 데이터베이스를 사용하여 사용자 파일을 호스팅하고 ChatScript 엔진을 실행하기 위한 여러 서버를 호스팅하는 것이다.

자바스크립트

또한 ChatScript에는 DukTape, ECMAScript E5/E5.1 호환성이 포함되며 ES2015+에서 일부 의미론이 업데이트된다.

제어 흐름

챗봇의 제어 흐름은 제어 스크립트에 의해 관리된다.이것은 엔진의 API 기능을 호출하는 규칙의 또 다른 평범한 주제일 뿐이다.따라서 제어는 스크립터에 의해 완전히 구성될 수 있다(그리고 엔진에 대한 자기반성을 가능하게 하는 기능이 존재한다).특별 처리를 위해 전처리 제어 흐름과 후처리 제어 흐름 옵션을 사용할 수 있다.

참조

  1. ^ ChatScript, SourceForge
  2. ^ [1], GitHub
  3. ^ 사이언티스트, 2010년 10월 27일 수상 챗봇이 대화를 주도하다