ไบนารี่สนิมนี้เป็นการใช้งานของโปรแกรม 'chatbot' ELIZA ในยุคแรก ๆ โปรแกรมดั้งเดิมได้รับการพัฒนาตั้งแต่ปี 1964 ถึง 1966 ที่ห้องปฏิบัติการปัญญาประดิษฐ์ของ MIT โดย Joseph Weizenbaum
ELIZA จำลองการสนทนาโดยใช้ การจับคู่รูปแบบ และ วิธีการทดแทน ที่ให้ผู้ใช้เข้าใจถึงภาพลวงตาในส่วนของโปรแกรม คำสั่งเกี่ยวกับวิธีการประมวลผลอินพุตมีให้โดย 'สคริปต์' (เดิมเขียนด้วยภาษา MAD-Slip ปัจจุบันเป็น json) ซึ่งทำให้ ELIZA สามารถมีส่วนร่วมในวาทกรรมโดยทำตามกฎของสคริปต์ ความตั้งใจของไวเซนบัมคือการแสดงให้เห็นว่าการสื่อสารระหว่างมนุษย์กับเครื่องจักรเป็นเพียงผิวเผิน บทภาพยนตร์ที่มีชื่อเสียงที่สุดอย่าง DOCTOR จำลองนักจิตบำบัดชาวโรเจอร์เรียน
Weizenbaum, J. (1996), ELIZA - โปรแกรมคอมพิวเตอร์สำหรับศึกษาการสื่อสารภาษาธรรมชาติระหว่างมนุษย์กับเครื่องจักร การสื่อสารของ ACM เล่มที่ 9 ฉบับที่ 1
หากต้องการติดตั้งไบนารีสนิมนี้ สามารถทำได้จากแหล่งที่มาหรือจาก crates.io ไม่ว่าในกรณีใด คุณจะต้องติดตั้งคอมไพเลอร์และคาร์โก้สนิมบนระบบของคุณ
การติดตั้ง eliza
จาก crates.io นั้นค่อนข้างง่ายกับสินค้า:
user@foo(~)$ cargo install eliza
หลังจากฟอร์กโปรเจ็กต์นี้และโคลนมันไปยังเครื่องของคุณแล้ว ให้ไปที่ไดเร็กทอรีโปรเจ็กต์แล้วรัน:
user@foo(eliza-rs)$ cargo build
คุณอาจต้องการเลือกรันการทดสอบหน่วยเพื่อให้แน่ใจว่า ELIZA ทำงานตามที่คาดไว้:
user@foo(eliza-rs)$ cargo test
หากต้องการเริ่มเซสชัน ELIZA คุณต้องระบุเส้นทางไปยังสคริปต์ ELIZA ให้กับไบนารี สคริปต์นี้อยู่ในรูปแบบของไฟล์ json
สมมติว่าคุณได้ติดตั้งจากแหล่งที่มาและต้องการรันโปรแกรม DOCTOR ที่มีชื่อเสียง คำสั่งที่คุณจะเรียกใช้จากรูทโปรเจ็กต์จะคล้ายกับ:
user@foo(eliza-rs)$ cargo run scripts/doctor.json
...
หากคุณติดตั้งจาก crates.io แทน ตำแหน่งของ doctor.json
จะแตกต่างออกไป เพื่อความสะดวก ฉันจึงตัดสินใจรวมสคริปต์ doctor.json
เข้ากับไบนารี eliza บน crates.io สำหรับผู้ใช้แต่ละคน ตำแหน่งจะแตกต่างกันเล็กน้อยภายในรีจิสทรีของลัง ดังนั้นฉันขอแนะนำให้ย้ายไปยังที่ที่น่าจดจำกว่านี้ก่อนที่จะเรียกใช้:
user@foo(~)$ cp .cargo/registry/src/[some_hash]/eliza-[ver]/scripts/doctor.json .
user@foo(~)$ eliza doctor.json
...
เริ่มเอลิซาด้วยสินค้าแล้วออกจากเซสชั่น
ความสวยงามของวิธีการออกแบบของ ELIZA ทำให้บทบาทของโปรแกรมเมอร์และนักเขียนบทละครต้องถูกแยกออกจากกัน คุณสมบัติที่สำคัญของ ELIZA คือสคริปต์คือข้อมูล ซึ่งไม่ได้เป็นส่วนหนึ่งของตัวโปรแกรม ดังนั้น ELIZA จึงไม่ได้จำกัดอยู่เพียงชุดรูปแบบการจดจำหรือการตอบกลับชุดใดชุดหนึ่ง แม้แต่ภาษาใดภาษาหนึ่งโดยเฉพาะด้วยซ้ำ
ด้วยเหตุนี้ ผู้ร่วมให้ข้อมูลอาจตัดสินใจปรับปรุงสคริปต์ doctor.json
ดั้งเดิมหรือสร้างสคริปต์ของตนเองขึ้นมาเองตั้งแต่ต้น ตัวอย่างง่ายๆ ของสคริปต์ละเมิดลิขสิทธิ์ถูกรวมไว้เพื่อแสดงให้เห็นว่าจำเป็นต้องใช้เพียงเล็กน้อยในการเริ่มสร้างสิ่งที่เรียบร้อย
ข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างของสคริปต์สามารถพบได้ในเอกสารประกอบสำหรับโมดูล script
บน doc.rs
เนื่องจากลักษณะที่ค่อนข้างกำหนดได้ของ ELIZA คุณสามารถเขียนการทดสอบหน่วยเพื่อประเมินกฎของสคริปต์ได้ ตัวอย่างเช่น ใน tests/conversation_test.rs
คุณสามารถเพิ่มข้อมูลต่อไปนี้:
# [ test ]
fn your_test ( ) {
let mut e = Eliza :: new ( "scripts/your_script.json" ) . unwrap ( ) ;
assert_eq ! ( "bar" , e.respond ( "foo" ) ) ;
}
โดยที่ 'foo' เป็นอินพุตที่ผู้ใช้ป้อนให้กับ ELIZA และ 'bar' คือคำตอบ
สิ่งสำคัญที่ควรทราบคือ ELIZA สร้างเอาต์พุตการบันทึก หากต้องการสังเกตบันทึกเหล่านี้ระหว่างการทำงานของโปรแกรม ให้เริ่มต้นไบนารีด้วยตัวแปรสภาพแวดล้อม RUST_LOG=eliza