Ini adalah perpustakaan juru bahasa RiveScript yang ditulis untuk bahasa pemrograman Java. RiveScript adalah bahasa skrip untuk chatterbots, sehingga memudahkan penulisan pasangan pemicu/respons untuk membangun kecerdasan bot.
RiveScript adalah bahasa skrip untuk membuat chatbots. Ini memiliki sintaks yang sangat sederhana dan dirancang agar mudah dibaca dan cepat untuk ditulis.
Contoh sederhana tampilan RiveScript:
+ hello bot - Hello human.
Ini cocok dengan pesan pengguna "halo bot" dan akan membalas "Halo manusia." Atau untuk contoh yang sedikit lebih rumit:
+ 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>!
Situs web resmi untuk RiveScript adalah https://www.rivescript.com/
Untuk menguji coba RiveScript di browser web Anda, cobalah RiveScript Playground.
Dokumentasi API: http://www.javadoc.io/doc/com.rivescript/rivescript-core/
Draf Kerja: http://www.rivescript.com/wd/RiveScript
Lihat juga Wiki Komunitas RiveScript untuk pola desain umum dan tip & trik untuk RiveScript.
Tambahkan ketergantungan rivescript-core
ke proyek Anda:
Pakar :
<ketergantungan> <groupId>com.rivivescript</groupId> <artifactId>rivescript-core</artifactId> <versi>0.10.0</versi> </ketergantungan>
kelas :
ketergantungan { kompilasi "com.rivivescript:rivivescript-core:0.10.0"}
Jika Anda ingin menggunakan RiveScript dalam aplikasi Spring Boot, lihat bagian Spring Boot Starter.
Jika digunakan sebagai perpustakaan untuk menulis chatbot Anda sendiri, sinopsisnya adalah sebagai berikut:
import com.rivescript.Config;import com.rivescript.RiveScript;// Buat bot baru dengan pengaturan default.RiveScript bot = new RiveScript();// Untuk mengaktifkan mode UTF-8, Anda harus menginisialisasi bot seperti :RiveScript bot = new RiveScript(Config.utf8());// Memuat direktori yang penuh dengan dokumen RiveScript (file .rive)bot.loadDirectory("./replies");// Memuat file individual.bot.LoadFile("./testsuite.rive");// Urutkan balasan setelah memuatnya!bot.sortReplies();// Dapatkan balasan.String reply = bot.reply("user", " Halo bot!");
Distribusi rivescript-core
juga menyertakan shell interaktif untuk menguji bot RiveScript Anda. Jalankan dengan path ke folder pada disk yang berisi dokumen RiveScript Anda. Contoh:
java com.rivescript.cmd.Shell [options] </path/to/documents>
Konstruktor com.rivescript.RiveScript
mengambil instance Config
opsional. Berikut adalah contoh lengkap dengan semua opsi yang didukung. Anda hanya perlu memberikan nilai untuk opsi konfigurasi yang berbeda dengan defaultnya.
Bot RiveScript = RiveScript baru (Config.newBuilder() .throwExceptions(false) // Apakah pelemparan pengecualian diaktifkan.strict(true) // Apakah pemeriksaan sintaksis yang ketat diaktifkan.utf8(false) // Apakah mode UTF-8 diaktifkan.unicodePunctuation("[.,!?;: ]") // Pola tanda baca unicode.forceCase(false) // Apakah pemaksaan pemicu ke huruf kecil diaktifkan.concat(ConcatMode.NONE) // Mode concat.kedalaman(50) // batas kedalaman rekursi .sessionManager(sessionManager) // Manajer sesi untuk variabel pengguna.errorMessages(errors) // Peta pesan kesalahan khusus.build());
Untuk kenyamanan, Anda dapat menggunakan pintasan:
// Konstruktor default menggunakan konfigurasi dasar.RiveScript bot = new RiveScript();// Ini serupa dengan:RiveScript bot = new RiveScript(Config.basic());// Untuk menggunakan konfigurasi dasar dengan mode UTF-8 penggunaan yang diaktifkan: bot RiveScript = new RiveScript(Config.utf8());
Dukungan UTF-8 di RiveScript dianggap sebagai fitur eksperimental. Ini dinonaktifkan secara default.
Secara default (tanpa mengaktifkan mode UTF-8), pemicu hanya boleh berisi karakter ASCII dasar (tidak ada karakter asing), dan semua karakter dalam pesan pengguna akan dihilangkan kecuali huruf, angka, dan spasi. Artinya, misalnya, Anda tidak dapat menangkap alamat email pengguna dalam balasan RiveScript, karena tanda @ dan . karakter.
Jika mode UTF-8 diaktifkan, pembatasan ini akan dicabut. Pemicu hanya dibatasi untuk tidak mengandung metakarakter tertentu seperti garis miring terbalik, dan pesan pengguna hanya dihilangkan dari garis miring terbalik dan tanda kurung siku HTML (untuk melindungi dari XSS yang jelas jika Anda menggunakan RiveScript dalam aplikasi web). Selain itu, karakter tanda baca umum dihilangkan, dengan set defaultnya adalah [.,!?;:]
. Hal ini dapat diatasi dengan memberikan string regexp baru ke metode Config.Builder#unicodePunctuation()
. Contoh:
// Buat bot baru dengan mode UTF-8 diaktifkan dan ganti karakter tanda baca yang dihapus dari pesan pengguna. Bot RiveScript = new RiveScript(Config.Builder.utf8() .unicodePunctuation("[.,!?;:]") .membangun());
Tag <star>
di RiveScript akan menangkap masukan "mentah" pengguna, sehingga Anda dapat menulis balasan untuk mendapatkan alamat email pengguna atau menyimpan karakter asing dalam namanya.
Tambahkan ketergantungan rivescript-spring-boot-starter
ke proyek Anda:
Pakar :
<ketergantungan> <groupId>com.rivivescript</groupId> <artifactId>rivescript-spring-boot-starter</artifactId> <versi>0.10.0</versi> </ketergantungan>
kelas :
ketergantungan { kompilasi "com.rivescript:rivescript-spring-boot-starter:0.10.0"}
Pemula akan secara otomatis menambahkan ketergantungan rivescript-core
ke proyek Anda dan memicu konfigurasi otomatis untuk membuat instance bot RiveScript
.
Meskipun konfigurasi otomatis akan menggunakan default yang masuk akal untuk membuat instance bot, properti berikut dapat ditentukan di dalam file application.properties
/ application.yml
Anda (atau sebagai saklar baris perintah) untuk menyesuaikan perilaku konfigurasi otomatis:
skrip rive: diaktifkan: benar # Aktifkan RiveScript untuk aplikasi. source-path: classpath:/rivescript/ # Daftar file dan/atau direktori sumber RiveScript yang dipisahkan koma. ekstensi file: .rive, .rs # Daftar ekstensi file RiveScript yang dipisahkan koma untuk dimuat. pengecualian lemparan: salah # Aktifkan pengecualian lemparan. ketat: benar # Aktifkan pemeriksaan sintaksis yang ketat. utf8: salah # Aktifkan mode UTF-8. tanda baca unicode: [.,!?;:] # Pola tanda baca unicode (hanya digunakan ketika mode UTF-8 diaktifkan). force-case: false # Aktifkan pemicu paksa ke huruf kecil. concat: none # Mode concat (tidak ada|baris baru|spasi). kedalaman: 50 # Batas kedalaman rekursi. pesan kesalahan: # Pesan kesalahan khusus diganti. Misalnya `rivescript.error-messages.deepRecursion=Pesan Terdeteksi Rekursi Dalam Khusus` penangan objek: # Daftar nama penangan objek yang dipisahkan koma untuk didaftarkan (saat ini didukung: `groovy`, `javascript`, `ruby`).
Untuk secara otomatis mendaftarkan subrutin Java khusus dan/atau penangan objek yang didukung non-default dalam instance bot RiveScript
yang dibuat, tentukan kacang yang sesuai dalam konteks aplikasi Anda seperti:
@Beanpublic Map<String, Subroutine> subroutines() {// Kuncinya adalah nama makro objek Java yang akan didaftarkan.Map<String, Subroutine> subroutines = new HashMap<>();subroutines.put("subroutine1", new Subroutine1());subroutines.put("subrutin2", Subrutin baru2());subrutin kembali; }@Beanpublic Map<String, ObjectHandler> objectHandlers() {// Kuncinya adalah nama bahasa pemrograman yang akan didaftarkan.Map<String, ObjectHandler> objectHandlers = new HashMap<>();objectHandlers.put("handler1", new ObjectHandler1());objectHandlers.put("handler2", new ObjectHandler2());return penangan objek; }
Untuk mengkompilasi, menguji, membuat semua toples dan dokumen dijalankan:
./gradlew build
Untuk menginstal semua toples ke dalam cache Maven lokal Anda, jalankan:
./gradlew install
Folder /samples
berisi berbagai contoh implementasi bot Java RiveScript.
rsbot
- RSBot.java
adalah implementasi sederhana menggunakan com.rivescript.cmd.Shell
.
Perintah berikut dapat digunakan pada prompt input Anda di 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.
Untuk menjalankan RSBot
untuk mulai mengobrol dengan demo yang dijalankan berbasis Eliza:
./gradlew :rivescript-samples-rsbot:runBot --console plain
spring-boot-starter-rsbot
- Contoh ini menggunakan RiveScript Spring Boot Starter untuk mengonfigurasi otomatis instance bot RiveScript
.
Untuk mulai mengobrol dengan menjalankan bot demo:
./gradlew :rivescript-samples-spring-boot-starter-rsbot:bootRun --console plain
Nuh 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.