Это библиотека-интерпретатор RiveScript, написанная для языка программирования Java. RiveScript — это язык сценариев для чат-ботов, позволяющий легко писать пары триггер/ответ для повышения интеллекта бота.
RiveScript — это язык сценариев для создания чат-ботов. Он имеет очень простой синтаксис, его легко читать и быстро записывать.
Простой пример того, как выглядит RiveScript:
+ hello bot - Hello human.
Это соответствует сообщению пользователя «Привет, бот» и отвечает «Привет, человек». Или для немного более сложного примера:
+ my name is * * <formal> == <bot name> => <set name=<formal>>Wow, we have the same name! * <get name> != undefined => <set name=<formal>>Did you change your name? - <set name=<formal>>Nice to meet you, <get name>!
Официальный сайт RiveScript — https://www.rivescript.com/.
Чтобы протестировать RiveScript в своем веб-браузере, попробуйте RiveScript Playground.
Документация API: http://www.javadoc.io/doc/com.rivescript/rivescript-core/.
Рабочий проект: http://www.rivescript.com/wd/RiveScript.
Также посетите вики-сайт сообщества RiveScript , где вы найдете распространенные шаблоны проектирования, а также советы и рекомендации по RiveScript.
Добавьте зависимость rivescript-core
в свой проект:
Мейвен :
<зависимость> <groupId>com.rivescript</groupId> <artifactId>rivescript-core</artifactId> <версия>0.10.0</версия> </зависимость>
Градл :
зависимости { скомпилировать "com.rivescript:rivescript-core:0.10.0"}
Если вы хотите использовать RiveScript в приложении Spring Boot, см. раздел Spring Boot Starter.
При использовании в качестве библиотеки для написания собственного чат-бота краткий обзор выглядит следующим образом:
import com.rivescript.Config;import com.rivescript.RiveScript;// Создайте нового бота с настройками по умолчанию. RiveScript bot = new RiveScript();// Чтобы включить режим UTF-8, вы должны инициализировать бота следующим образом: :RiveScript bot = new RiveScript(Config.utf8()); // Загрузите каталог, полный документов RiveScript (.rive files)bot.loadDirectory("./replies");// Загрузить отдельный файл.bot.LoadFile("./testsuite.rive");// Сортировать ответы после их загрузки!bot.sortReplies();// Получить ответ.String ответ = bot.reply("пользователь", "Привет, бот!");
Дистрибутив rivescript-core
также включает в себя интерактивную оболочку для тестирования вашего бота RiveScript. Запустите его, указав путь к папке на диске, содержащей ваши документы RiveScript. Пример:
java com.rivescript.cmd.Shell [options] </path/to/documents>
Конструктор com.rivescript.RiveScript
принимает необязательный экземпляр Config
. Вот полный пример со всеми поддерживаемыми опциями. Вам нужно только указать значения для параметров конфигурации, которые отличаются от значений по умолчанию.
Бот RiveScript = новый RiveScript(Config.newBuilder() .throwExceptions(false) // Включена ли выдача исключений.strict(true) // Включена ли строгая проверка синтаксиса.utf8(false) // Включен ли режим UTF-8.unicodePunctuation("[.,!?;: ]") // Шаблон пунктуации Юникода.forceCase(false) // Включено ли принудительное использование нижнего регистра для триггеров.concat(ConcatMode.NONE) // Concat mode.глубина(50) // Предел глубины рекурсии .sessionManager(sessionManager) // Менеджер сеансов для пользовательских переменных.errorMessages(errors) // Карта пользовательских сообщений об ошибках.build());
Для удобства можно использовать ярлыки:
// Конструктор по умолчанию использует базовую конфигурацию. RiveScript bot = new RiveScript(); // Это похоже на: RiveScript bot = new RiveScript(Config.basic()); // Чтобы использовать базовую конфигурацию в режиме UTF-8. включено использование: RiveScript bot = new RiveScript(Config.utf8());
Поддержка UTF-8 в RiveScript считается экспериментальной функцией. По умолчанию он отключен.
По умолчанию (без включения режима UTF-8) триггеры могут содержать только основные символы ASCII (без иностранных символов), а сообщение пользователя удаляется из всех символов, кроме букв, цифр и пробелов. Это означает, что, например, вы не можете записать адрес электронной почты пользователя в ответе RiveScript из-за @ и . персонажи.
При включении режима UTF-8 эти ограничения снимаются. Триггеры ограничены только тем, что не содержат определенных метасимволов, таких как обратная косая черта, а сообщение пользователя очищается только от обратной косой черты и угловых скобок HTML (для защиты от очевидного XSS, если вы используете RiveScript в веб-приложении). Кроме того, общие символы пунктуации удаляются, а значением по умолчанию является [.,!?;:]
. Это можно переопределить, предоставив новую строку регулярного выражения методу Config.Builder#unicodePunctuation()
. Пример:
// Создаем нового бота с включенным режимом UTF-8 и переопределяем знаки пунктуации, которые удаляются из сообщения пользователя. RiveScript bot = new RiveScript(Config.Builder.utf8() .unicodePunctuation("[.,!?;:]") .строить());
Теги <star>
в RiveScript фиксируют «необработанный» ввод пользователя, поэтому вы можете писать ответы, чтобы получить адрес электронной почты пользователя, или сохранять иностранные символы в его имени.
Добавьте зависимость rivescript-spring-boot-starter
в свой проект:
Мейвен :
<зависимость> <groupId>com.rivescript</groupId> <artifactId>rivescript-spring-boot-starter</artifactId> <версия>0.10.0</версия> </зависимость>
Градл :
зависимости { скомпилировать "com.rivescript:rivescript-spring-boot-starter:0.10.0"}
Стартер автоматически добавит зависимость rivescript-core
в ваш проект и запустит автоматическую настройку для создания экземпляра бота RiveScript
.
Хотя при автоматической настройке для создания экземпляра бота application.yml
использоваться разумные значения по умолчанию, в файле application.properties
можно указать следующие свойства (или в качестве переключателей командной строки), чтобы настроить поведение автоматической настройки:
ривскрипт: Enabled: true # Включить RiveScript для приложения. source-path: classpath:/rivescript/ # Список исходных файлов и/или каталогов RiveScript, разделенных запятыми. file-extensions: .rive, .rs # Список расширений файлов RiveScript, разделенных запятыми, для загрузки. throw-Exceptions: false # Включить исключения генерации. strict: true # Включить строгую проверку синтаксиса. utf8: false # Включить режим UTF-8. unicode-punctuation: [.,!?;:] # Шаблон пунктуации Unicode (используется только при включенном режиме UTF-8). Force-case: false # Включить перевод триггеров в нижний регистр. concat: none # Режим объединения (none|newline|space). глубина: 50 # Предел глубины рекурсии. error-messages: # Пользовательское сообщение об ошибке имеет приоритет. Например, `rivescript.error-messages.deepRecursion=Пользовательское сообщение, обнаруженное глубокой рекурсией` object-handlers: # Список имен обработчиков объектов, разделенных запятыми, которые нужно зарегистрировать (в настоящее время поддерживаются: `groovy`, `javascript`, `ruby`).
Чтобы автоматически зарегистрировать пользовательские функции Java и/или поддерживаемые не по умолчанию обработчики объектов в созданном экземпляре бота RiveScript
, определите соответствующие bean-компоненты в контексте вашего приложения, например:
@Beanpublic Map<String, Subroutine> subroutines() {// Ключ — это имя макроса объекта Java, который необходимо зарегистрировать.Map<String, Subroutine> subroutines = new HashMap<>();subroutines.put("subroutine1", новая Subroutine1());subroutines.put("subroutine2", новая Subroutine2());возврат подпрограмм; }@Beanpublic Map<String, ObjectHandler> objectHandlers() {// Ключ — это имя регистрируемого языка программирования.Map<String, ObjectHandler> objectHandlers = new HashMap<>();objectHandlers.put("handler1", новый ObjectHandler1());objectHandlers.put("handler2", новый 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
Ной Петербридж, https://www.kirsle.net/
Марсель Овердейк, https://twitter.com/marceloverdijk
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.