이것은 Java 프로그래밍 언어용으로 작성된 RiveScript 인터프리터 라이브러리입니다. RiveScript는 Chatterbot용 스크립팅 언어로, 봇의 지능을 구축하기 위한 트리거/응답 쌍을 쉽게 작성할 수 있습니다.
RiveScript는 챗봇 작성을 위한 스크립팅 언어입니다. 매우 간단한 구문을 가지며 읽기 쉽고 빠르게 작성할 수 있도록 설계되었습니다.
RiveScript의 간단한 예는 다음과 같습니다.
+ hello bot
- Hello human.
이는 사용자의 "hello bot" 메시지와 일치하며 "Hello human"이라고 응답합니다. 또는 약간 더 복잡한 예를 들면 다음과 같습니다.
+ my name is *
* == => >Wow, we have the same name!
* != undefined => >Did you change your name?
- >Nice to meet you, !
RiveScript의 공식 웹사이트는 https://www.rivescript.com/입니다.
웹 브라우저에서 RiveScript를 테스트하려면 RiveScript Playground를 사용해 보세요.
또한 RiveScript에 대한 일반적인 디자인 패턴과 팁과 요령을 보려면 RiveScript 커뮤니티 Wiki 를 확인하세요.
프로젝트에 rivescript-core
종속성을 추가합니다.
메이븐 :
< dependency >
< groupId >com.rivescript groupId >
< artifactId >rivescript-core artifactId >
< version >0.10.0 version >
dependency >
그래들 :
dependencies {
compile " com.rivescript:rivescript-core:0.10.0 "
}
Spring Boot 애플리케이션에서 RiveScript를 사용하려면 Spring Boot Starter 섹션을 참조하세요.
자신만의 챗봇을 작성하기 위한 라이브러리로 사용하는 경우 개요는 다음과 같습니다.
import com . rivescript . Config ;
import com . rivescript . RiveScript ;
// Create a new bot with the default settings.
RiveScript bot = new RiveScript ();
// To enable UTF-8 mode, you'd have initialized the bot like:
RiveScript bot = new RiveScript ( Config . utf8 ());
// Load a directory full of RiveScript documents (.rive files)
bot . loadDirectory ( "./replies" );
// Load an individual file.
bot . LoadFile ( "./testsuite.rive" );
// Sort the replies after loading them!
bot . sortReplies ();
// Get a reply.
String reply = bot . reply ( "user" , "Hello bot!" );
rivescript-core
배포판에는 RiveScript 봇을 테스트하기 위한 대화형 셸도 포함되어 있습니다. RiveScript 문서가 포함된 디스크의 폴더 경로를 사용하여 실행하세요. 예:
java com.rivescript.cmd.Shell [options]
com.rivescript.RiveScript
생성자는 선택적 Config
인스턴스를 사용합니다. 다음은 지원되는 모든 옵션이 포함된 전체 예입니다. 기본값과 다른 구성 옵션에 대한 값만 제공하면 됩니다.
RiveScript bot = new RiveScript ( Config . newBuilder ()
. throwExceptions ( false ) // Whether exception throwing is enabled
. strict ( true ) // Whether strict syntax checking is enabled
. utf8 ( false ) // Whether UTF-8 mode is enabled
. unicodePunctuation ( "[.,!?;:]" ) // The unicode punctuation pattern
. forceCase ( false ) // Whether forcing triggers to lowercase is enabled
. concat ( ConcatMode . NONE ) // The concat mode
. depth ( 50 ) // The recursion depth limit
. sessionManager ( sessionManager ) // The session manager for user variables
. errorMessages ( errors ) // Map of custom error messages
. build ());
편의를 위해 다음과 같은 단축키를 사용할 수 있습니다.
// The default constructor uses a basic configuration.
RiveScript bot = new RiveScript ();
// This is similar as:
RiveScript bot = new RiveScript ( Config . basic ());
// To use the basic configuration with UTF-8 mode enabled use:
RiveScript bot = new RiveScript ( Config . utf8 ());
RiveScript의 UTF-8 지원은 실험적인 기능으로 간주됩니다. 기본적으로 비활성화되어 있습니다.
기본적으로(UTF-8 모드가 설정되지 않은 경우) 트리거에는 기본 ASCII 문자만 포함될 수 있으며(외부 문자는 포함되지 않음) 사용자 메시지에서 문자, 숫자 및 공백을 제외한 모든 문자가 제거됩니다. 이는 예를 들어 @ 및 로 인해 RiveScript 응답에서 사용자의 이메일 주소를 캡처할 수 없음을 의미합니다. 문자.
UTF-8 모드가 활성화되면 이러한 제한이 해제됩니다. 트리거는 백슬래시와 같은 특정 메타 문자를 포함하지 않도록 제한되며 사용자 메시지는 백슬래시와 HTML 꺾쇠 괄호만 제거합니다(웹 애플리케이션에서 RiveScript를 사용하는 경우 명백한 XSS로부터 보호하기 위해). 또한 일반적인 구두점 문자는 제거되며 기본 설정은 [.,!?;:]
입니다. 이는 Config.Builder#unicodePunctuation()
메서드에 새 정규 표현식 문자열을 제공하여 재정의할 수 있습니다. 예:
// Make a new bot with UTF-8 mode enabled and override the punctuation
characters that get stripped from the user 's message.
RiveScript bot = new RiveScript ( Config . Builder
. utf8 ()
. unicodePunctuation ( "[.,!?;:]" )
. build ());
RiveScript의
태그는 사용자의 "원시" 입력을 캡처하므로 응답을 작성하여 사용자의 이메일 주소를 얻거나 이름에 외국 문자를 저장할 수 있습니다.
프로젝트에 rivescript-spring-boot-starter
종속성을 추가합니다.
메이븐 :
< dependency >
< groupId >com.rivescript groupId >
< artifactId >rivescript-spring-boot-starter artifactId >
< version >0.10.0 version >
dependency >
그래들 :
dependencies {
compile " com.rivescript:rivescript-spring-boot-starter:0.10.0 "
}
스타터는 프로젝트에 rivescript-core
종속성을 자동으로 추가하고 자동 구성을 트리거하여 RiveScript
봇 인스턴스를 생성합니다.
자동 구성은 적절한 기본값을 사용하여 봇 인스턴스를 생성하지만, 다음 속성을 application.properties
/ application.yml
파일 내에서 지정하거나 명령줄 스위치로 지정하여 자동 구성 동작을 사용자 지정할 수 있습니다.
rivescript:
enabled: true # Enable RiveScript for the application.
source-path: classpath:/rivescript/ # The comma-separated list of RiveScript source files and/or directories.
file-extensions: .rive, .rs # The comma-separated list of RiveScript file extensions to load.
throw-exceptions: false # Enable throw exceptions.
strict: true # Enable strict syntax checking.
utf8: false # Enable UTF-8 mode.
unicode-punctuation: [.,!?;:] # The unicode punctuation pattern (only used when UTF-8 mode is enabled).
force-case: false # Enable forcing triggers to lowercase.
concat: none # The concat mode (none|newline|space).
depth: 50 # The recursion depth limit.
error-messages: # The custom error message overrides. For instance `rivescript.error-messages.deepRecursion=Custom Deep Recursion Detected Message`
object-handlers: # The comma-separated list of object handler names to register (currently supported: `groovy`, `javascript`, `ruby`).
생성된 RiveScript
봇 인스턴스에 사용자 정의 Java 서브루틴 및/또는 기본이 아닌 지원 객체 핸들러를 자동으로 등록하려면 다음과 같이 애플리케이션 컨텍스트에서 적절한 Bean을 정의하십시오.
@ Bean public Map < String , Subroutine > subroutines () { // The key is the name of the Java object macro to register. Map < String , Subroutine > subroutines = new HashMap <>(); subroutines . put ( "subroutine1" , new Subroutine1 ()); subroutines . put ( "subroutine2" , new Subroutine2 ()); return subroutines ; } @ Bean public Map < String , ObjectHandler > objectHandlers () { // The key is the name of the programming language to register. Map < String , ObjectHandler > objectHandlers = new HashMap <>(); objectHandlers . put ( "handler1" , new ObjectHandler1 ()); objectHandlers . put ( "handler2" , new ObjectHandler2 ()); return objectHandlers ; }
모든 jar 및 문서를 컴파일, 테스트, 빌드하려면 다음을 실행하십시오.
./gradlew build
모든 jar를 로컬 Maven 캐시에 설치하려면 다음을 실행하세요.
./gradlew install
/samples
폴더에는 Java RiveScript 봇 구현의 다양한 샘플이 포함되어 있습니다.
rsbot
- RSBot.java
는 com.rivescript.cmd.Shell
을 사용하는 간단한 구현입니다.
RSBot의 입력 프롬프트에서 다음 명령을 사용할 수 있습니다.
/quit - Quit the program
/dump topics - Dump the internal topic/trigger/reply struct (debugging)
/dump sorted - Dump the internal trigger sort buffers (debugging)
/last - Print the last trigger you matched.
RSBot
실행하여 데모 Eliza 기반 실행으로 채팅을 시작하려면:
./gradlew :rivescript-samples-rsbot:runBot --console plain
spring-boot-starter-rsbot
- 이 예제에서는 RiveScript Spring Boot Starter를 사용하여 RiveScript
봇 인스턴스를 자동 구성합니다.
데모 봇과 채팅을 시작하려면 다음을 실행하세요.
./gradlew :rivescript-samples-spring-boot-starter-rsbot:bootRun --console plain
The MIT License (MIT)
Copyright (c) 2016 the original author or authors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.