Biner karat ini merupakan implementasi dari program 'chatbot' awal ELIZA . Program aslinya dikembangkan dari tahun 1964 hingga 1966 di Laboratorium Kecerdasan Buatan MIT oleh Joseph Weizenbaum.
ELIZA mensimulasikan percakapan dengan menerapkan pencocokan pola dan metodologi substitusi yang memberikan ilusi pemahaman kepada pengguna tentang program. Petunjuk tentang cara memproses masukan disediakan oleh 'skrip', (aslinya ditulis dalam MAD-Slip, sekarang dalam json) yang memungkinkan ELIZA terlibat dalam wacana dengan mengikuti aturan skrip. Tujuan Weizenbaum adalah untuk menunjukkan bahwa komunikasi antara manusia dan mesin bersifat dangkal. Naskah paling terkenal, DOCTOR, mensimulasikan psikoterapis Rogerian.
Weizenbaum, J. (1996), ELIZA - Sebuah program komputer untuk mempelajari komunikasi bahasa alami antara manusia dan mesin , Komunikasi ACM, vol 9, edisi 1
Untuk menginstal biner karat ini, seseorang dapat melakukannya dari sumber atau dari crates.io. Apa pun kasusnya, Anda harus menginstal kompiler karat dan kargo di sistem Anda.
Menginstal eliza
dari crates.io cukup sederhana dengan kargo:
user@foo(~)$ cargo install eliza
Setelah mem-forking proyek ini dan mengkloningnya ke mesin lokal Anda, navigasikan ke direktori proyek dan jalankan:
user@foo(eliza-rs)$ cargo build
Anda mungkin juga ingin menjalankan pengujian unit secara opsional untuk memastikan ELIZA berfungsi seperti yang diharapkan:
user@foo(eliza-rs)$ cargo test
Untuk memulai sesi ELIZA, Anda harus menyediakan jalur ke skrip ELIZA pada biner. Skrip ini berbentuk file json
. Dengan asumsi Anda telah menginstal dari sumber dan ingin menjalankan program DOCTOR yang terkenal, perintah yang akan Anda jalankan dari root proyek akan serupa dengan:
user@foo(eliza-rs)$ cargo run scripts/doctor.json
...
Jika Anda menginstal dari crates.io, maka lokasi doctor.json
akan berbeda. Karena kenyamanan saya memutuskan untuk menggabungkan skrip doctor.json
dengan biner eliza di crates.io. Untuk setiap pengguna, lokasinya akan sedikit berbeda dalam registri peti, jadi saya sarankan untuk memindahkannya ke tempat yang lebih mudah diingat sebelum menjalankannya:
user@foo(~)$ cp .cargo/registry/src/[some_hash]/eliza-[ver]/scripts/doctor.json .
user@foo(~)$ eliza doctor.json
...
Memulai eliza dengan kargo lalu meninggalkan sesi
Keindahan metodologi desain ELIZA membuat peran programmer dan penulis naskah dipisahkan. Properti penting ELIZA adalah bahwa skrip adalah data - bukan bagian dari program itu sendiri. Oleh karena itu, ELIZA tidak terbatas pada serangkaian pola atau respons pengenalan tertentu, bahkan pada bahasa tertentu.
Oleh karena itu, kontributor dapat memutuskan untuk menyempurnakan skrip doctor.json
asli atau membuatnya sendiri sepenuhnya dari awal. Sebuah contoh sederhana dari skrip bajakan telah disertakan untuk menunjukkan betapa sedikitnya yang diperlukan untuk mulai membuat sesuatu yang rapi.
Informasi lebih lanjut tentang struktur skrip dapat ditemukan di dokumentasi modul script
di doc.rs.
Karena sifat ELIZA yang agak deterministik, Anda dapat menulis pengujian unit untuk mengevaluasi aturan skrip. Misalnya, di tests/conversation_test.rs
, Anda dapat menambahkan yang berikut:
# [ test ]
fn your_test ( ) {
let mut e = Eliza :: new ( "scripts/your_script.json" ) . unwrap ( ) ;
assert_eq ! ( "bar" , e.respond ( "foo" ) ) ;
}
Dimana 'foo' adalah input pengguna ke ELIZA, dan 'bar' adalah responnya.
Penting juga untuk dicatat bahwa ELIZA menghasilkan keluaran logging. Untuk mengamati log ini selama eksekusi program, mulai biner dengan variabel lingkungan RUST_LOG=eliza
.