#nlp #chat-bot #linguistics #pattern-matching #artificial-intelligence #user-input #weizenbaum

bin+lib eliza

1966年由Joseph Weizenbaum开发的自然语言处理程序ELIZA的Rust实现

10个版本 (6个稳定版)

2.0.1 2023年12月26日
2.0.0 2020年1月16日
1.2.0 2020年1月16日
1.1.0 2019年10月3日
0.1.3 2017年11月15日

模拟类中排名第19

Download history 5/week @ 2024-07-03 71/week @ 2024-07-24 21/week @ 2024-07-31

每月下载量92

MIT/Apache

46KB
794

eliza-rs

Crates.io Documentation Build Status

这是一个Rust二进制文件,是早期“聊天机器人”程序ELIZA的实现。原始程序由1964年至1966年在MIT人工智能实验室由Joseph Weizenbaum开发。

简介

ELIZA通过实现模式匹配和一种替换方法来模拟对话,给用户造成程序理解的部分错觉。如何处理输入的指令由“脚本”提供,最初用MAD-Slip编写,现在用json编写,允许ELIZA通过遵循脚本规则进行对话。Weizenbaum的意图是表明人与机器之间的通信是肤浅的。最著名的脚本DOCTOR模拟了一个罗杰斯心理治疗师。

Weizenbaum, J. (1996), ELIZA - 一款用于研究人与机器之间自然语言通信的计算机程序, Communications of the ACM, vol 9, issue 1

安装

要安装此Rust二进制文件,可以从源代码或从crates.io安装。在两种情况下,您需要在系统上安装Rust编译器和cargo 安装

从crates.io安装

使用cargo从crates.io安装eliza非常简单

user@foo(~)$ cargo install eliza

从源代码安装

在从GitHub分叉此项目并将其克隆到本地计算机后,导航到项目目录并运行

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脚本与crates.io上的eliza二进制文件捆绑在一起。对于每个用户,它在crates注册表中的位置会有所不同,所以我建议在运行之前将其移动到更容易记住的地方。

user@foo(~)$ cp .cargo/registry/src/[some_hash]/eliza-[ver]/scripts/doctor.json .
user@foo(~)$ eliza doctor.json
...

running

使用cargo启动eliza然后离开会话


编写自己的ELIZA脚本

ELIZA的设计方法的优点在于程序员和剧作家的角色是分开的。ELIZA的一个重要特性是脚本就是数据——它本身不是程序的一部分。因此,ELIZA不受特定识别模式或响应集的限制,甚至不受任何特定语言的限制。

因此,贡献者可以决定改进原始的doctor.json脚本,或者从头开始完全创建自己的脚本。为了展示创建有趣内容所需的最少内容,已经包含了一个海盗脚本的简单示例。

有关脚本结构的更多信息,请参阅doc.rs上的script模块的文档。

测试

由于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启动二进制文件。

依赖关系

~4–14MB
~153K SLoC