Il s'agit d'une bibliothèque d'interpréteur RiveScript écrite pour le langage de programmation Java. RiveScript est un langage de script pour les chaterbots, facilitant l'écriture de paires déclencheur/réponse pour développer l'intelligence d'un bot.
RiveScript est un langage de script pour la création de chatbots. Il a une syntaxe très simple et est conçu pour être facile à lire et rapide à écrire.
Un exemple simple de ce à quoi ressemble RiveScript :
+ hello bot - Hello human.
Cela correspond au message "Bonjour bot" d'un utilisateur et répondrait "Bonjour humain". Ou pour un exemple un peu plus compliqué :
+ 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>!
Le site officiel de RiveScript est https://www.rivescript.com/
Pour tester RiveScript dans votre navigateur Web, essayez RiveScript Playground.
Documentation API : http://www.javadoc.io/doc/com.rivescript/rivescript-core/
Version de travail : http://www.rivescript.com/wd/RiveScript
Consultez également le wiki de la communauté RiveScript pour connaître les modèles de conception courants ainsi que les trucs et astuces pour RiveScript.
Ajoutez la dépendance rivescript-core
à votre projet :
Maven :
<dépendance> <groupId>com.rivescript</groupId> <artifactId>rivescript-core</artifactId> <version>0.10.0</version> </dépendance>
Graduation :
dépendances { compiler "com.rivescript:rivescript-core:0.10.0"}
Si vous souhaitez utiliser RiveScript dans une application Spring Boot, consultez la section Spring Boot Starter.
Lorsqu'il est utilisé comme bibliothèque pour écrire votre propre chatbot, le synopsis est le suivant :
import com.rivescript.Config;import com.rivescript.RiveScript;// Créez un nouveau bot avec les paramètres par défaut.RiveScript bot = new RiveScript();// Pour activer le mode UTF-8, vous auriez initialisé le bot comme :RiveScript bot = new RiveScript(Config.utf8());// Charger un répertoire rempli de documents RiveScript (fichiers .rive)bot.loadDirectory("./replies");// Charger un individu file.bot.LoadFile("./testsuite.rive");// Trier les réponses après les avoir chargées!bot.sortReplies();// Obtenir une réponse.String réponse = bot.reply("user", "Bonjour bot !");
La distribution rivescript-core
comprend également un shell interactif pour tester votre bot RiveScript. Exécutez-le avec le chemin d'accès à un dossier sur le disque contenant vos documents RiveScript. Exemple:
java com.rivescript.cmd.Shell [options] </path/to/documents>
Le constructeur com.rivescript.RiveScript
prend une instance Config
facultative. Voici un exemple complet avec toutes les options prises en charge. Vous devez uniquement fournir des valeurs pour les options de configuration qui sont différentes des valeurs par défaut.
Bot RiveScript = nouveau RiveScript(Config.newBuilder() .throwExceptions(false) // Si le lancement d'exceptions est activé.strict(true) // Si la vérification stricte de la syntaxe est activée.utf8(false) // Si le mode UTF-8 est activé.unicodePunctuation("[.,!?;: ]") // Le motif de ponctuation Unicode.forceCase(false) // Indique si le forçage des déclencheurs en minuscules est activé.concat(ConcatMode.NONE) // Le concat mode.degree(50) // La limite de profondeur de récursion .sessionManager(sessionManager) // Le gestionnaire de session pour les variables utilisateur.errorMessages(errors) // Carte des messages d'erreur personnalisés.build());
Pour plus de commodité, vous pouvez utiliser des raccourcis :
// Le constructeur par défaut utilise une configuration de base.RiveScript bot = new RiveScript();// Ceci est similaire à :RiveScript bot = new RiveScript(Config.basic());// Pour utiliser la configuration de base avec le mode UTF-8 utilisation activée : bot RiveScript = new RiveScript(Config.utf8());
La prise en charge d'UTF-8 dans RiveScript est considérée comme une fonctionnalité expérimentale. Il est désactivé par défaut.
Par défaut (sans le mode UTF-8 activé), les déclencheurs ne peuvent contenir que des caractères ASCII de base (pas de caractères étrangers) et le message de l'utilisateur est dépourvu de tous les caractères à l'exception des lettres, des chiffres et des espaces. Cela signifie que, par exemple, vous ne pouvez pas capturer l'adresse e-mail d'un utilisateur dans une réponse RiveScript, à cause des @ et . personnages.
Lorsque le mode UTF-8 est activé, ces restrictions sont levées. Les déclencheurs sont uniquement limités à ne pas contenir certains métacaractères comme la barre oblique inverse, et le message de l'utilisateur est uniquement dépourvu de barres obliques inverses et de crochets HTML (pour se protéger des XSS évidents si vous utilisez RiveScript dans une application Web). De plus, les caractères de ponctuation courants sont supprimés, le jeu par défaut étant [.,!?;:]
. Cela peut être remplacé en fournissant une nouvelle chaîne d'expression rationnelle à la méthode Config.Builder#unicodePunctuation()
. Exemple:
// Créez un nouveau bot avec le mode UTF-8 activé et remplacez les caractères de ponctuation qui sont supprimés du message de l'utilisateur. Bot RiveScript = new RiveScript (Config.Builder.utf8() .unicodePunctuation("[.,!?;:]") .construire());
Les balises <star>
dans RiveScript captureront l'entrée « brute » de l'utilisateur, afin que vous puissiez écrire des réponses pour obtenir l'adresse e-mail de l'utilisateur ou stocker des caractères étrangers dans son nom.
Ajoutez la dépendance rivescript-spring-boot-starter
à votre projet :
Maven :
<dépendance> <groupId>com.rivescript</groupId> <artifactId>rivescript-spring-boot-starter</artifactId> <version>0.10.0</version> </dépendance>
Graduation :
dépendances { compiler "com.rivescript:rivescript-spring-boot-starter:0.10.0"}
Le démarreur ajoutera automatiquement la dépendance rivescript-core
à votre projet et déclenchera la configuration automatique pour créer l'instance de bot RiveScript
.
Bien que la configuration automatique utilise des valeurs par défaut raisonnables pour créer l'instance de bot, les propriétés suivantes peuvent être spécifiées dans votre fichier application.properties
/ application.yml
(ou en tant que commutateurs de ligne de commande) pour personnaliser le comportement de la configuration automatique :
script de rive : activé : true # Activer RivScript pour l'application. chemin-source : chemin de classe :/rivescript/ # La liste des fichiers sources et/ou répertoires RiveScript séparés par des virgules. extensions de fichiers : .rive, .rs # La liste des extensions de fichiers RiveScript à charger, séparées par des virgules. throw-exceptions : false # Activer les exceptions de lancement. strict: true # Active la vérification stricte de la syntaxe. utf8 : false # Activer le mode UTF-8. unicode-ponctuation : [.,!?;:] # Le modèle de ponctuation Unicode (utilisé uniquement lorsque le mode UTF-8 est activé). force-case: false # Activer le forçage des déclencheurs en minuscules. concat: none # Le mode concat (aucun|newline|space). profondeur : 50 # La limite de profondeur de récursion. messages d'erreur : # Le message d'erreur personnalisé est remplacé. Par exemple `rivescript.error-messages.deepRecursion=Message personnalisé détecté par récursion profonde` object-handlers : # La liste des noms de gestionnaires d'objets à enregistrer, séparés par des virgules (actuellement pris en charge : `groovy`, `javascript`, `ruby`).
Pour enregistrer automatiquement des sous-programmes Java personnalisés et/ou des gestionnaires d'objets non pris en charge par défaut dans l'instance de bot RiveScript
créée, définissez les beans appropriés dans le contexte de votre application, comme :
@Beanpublic Map<String, Subroutine> subroutines() {// La clé est le nom de la macro d'objet Java à enregistrer.Map<String, Subroutine> subroutines = new HashMap<>();subroutines.put("subroutine1", new Subroutine1());subroutines.put("subroutine2", new Subroutine2());return subroutines; }@Beanpublic Map<String, ObjectHandler> objectHandlers() {// La clé est le nom du langage de programmation à enregistrer.Map<String, ObjectHandler> objectHandlers = new HashMap<>();objectHandlers.put("handler1", new ObjectHandler1());objectHandlers.put("handler2", new ObjectHandler2());return objectHandlers; }
Pour compiler, tester, construire tous les fichiers jar et docs, exécutez :
./gradlew build
Pour installer tous les fichiers JAR dans votre cache Maven local, exécutez :
./gradlew install
Le dossier /samples
contient divers exemples d'implémentations de robots Java RiveScript.
rsbot
- Le RSBot.java
est une implémentation simple utilisant le com.rivescript.cmd.Shell
.
Ces commandes peuvent être utilisées à votre invite de saisie dans 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.
Pour exécuter RSBot
et commencer à discuter avec la démo basée sur Eliza :
./gradlew :rivescript-samples-rsbot:runBot --console plain
spring-boot-starter-rsbot
- Cet exemple utilise RiveScript Spring Boot Starter pour configurer automatiquement l'instance de bot RiveScript
.
Pour commencer à discuter avec le robot de démonstration, exécutez :
./gradlew :rivescript-samples-spring-boot-starter-rsbot:bootRun --console plain
Noah Petherbridge, https://www.kirsle.net/
Marcel Overdijk, 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.