标题:C++ 模拟实现 Joseph Weizenbaum 1966 年的 ELIZA

我用 C++ 编写了一个我认为是对原始 ELIZA 的准确模拟。这是一个控制台应用程序,它将原始格式的脚本文件(看起来像一系列 S-表达式)作为输入,然后等待用户键入一行文本,再用它自己的一行文本作为响应。

一个模拟的模糊 CRT 终端屏幕,显示 ELIZA 正在运行,以及著名的“男人都一样”对话的开始。

ELIZA 是一个聊天机器人——第一个聊天机器人——由 MIT 电气工程教授 Joseph Weizenbaum 在 1964-1966 年间编写,并得到美国国防部 Project MAC 的部分支持。 它通过一个“脚本”进行配置,其中最著名的是 DOCTOR。 该脚本包含简单的模式匹配规则,ELIZA 使用这些规则来反映用户键入的文本的部分内容。 Weizenbaum 的目的不是为了加深我们对智能的理解,而是为了创造 ELIZA 理解了所说内容的假象,从而展示人们是多么容易被愚弄。

我是在 ELIZA 源代码被发现之前制作的这个,并在第 1 部分中对此进行了描述。

第 2 部分描述了在发现 ELIZA 源代码后我所做的更改。

第 3 部分是关于 HASH 函数的,现在它也被找到了。

脚注中,我记录了尝试从 RFC439 重现 PARRY/DOCTOR 对话的过程。

我的儿子 Max Hay 和我用 JavaScript 重新创建了 ELIZA,在这里。 在这里尝试一下。

我添加了 serial I/O 以在 ASR 33 电传打字机上运行 ELIZA。

我帮助证明了 1966 年的 CACM ELIZA 是 Turing complete。 在这里有几个 Turing machine ELIZA 脚本。

在 Jeff Shrager 的 elizagen.org 上有一个关于 ELIZA 的大量信息集合。

我和 Jeff 以及其他人一起为一本关于 ELIZA 的书做贡献。 该网站是 findingeliza.org

感谢 Rupert Lane,你现在可以运行原始的 MAD ELIZA 代码。(Jeff 的 ELIZA Reanimated paper。)

构建和运行 ELIZA

请注意,整个 ELIZA 都在一个文件 eliza.cpp 中(除非你也想使用上面提到的 serial I/O 代码)。

POSIX(例如 macOS)(我使用了 Xcode 自带的 Apple clang version 15.0.0):

clang++ -std=c++20 -pedantic -o eliza eliza.cpp
./eliza

Windows(我使用了 Microsoft Visual Studio 2019 Community Edition Command Prompt):

cl /EHsc /W4 /std:c++20 eliza.cpp
eliza