工程智能

作者:Marcel Gagné

Qu'est-ce que tu dis,弗朗索瓦?是的,确实,本期关注的焦点是工程。Oui,这个菜单非常符合主题。你还记得我们的电气工程师朋友卡罗尔吗?她一直在机器人技术领域做了大量工作,这个领域永远致力于制造更复杂、更智能的机器。对于该领域的许多人来说,最终目标是真正的机器智能。这真是令人惊叹——自从图灵先生提出他著名的测试以来,已经过去了五十多年,而我们仍在努力创造这些奇妙的思维机器。现在,在我们的 Linux 厨房里,弗朗索瓦,我们可以参与到这项探索中。你和我,mon ami,可以帮助创造,我敢说,人工智能!

Quoi?啊,mes amis!欢迎来到Chez Marcel。请坐。弗朗索瓦,du vin!去酒窖把 1998 年的尚贝坦拿上来。这是一款美丽的红葡萄酒,与今晚的菜单非常搭配;尚贝坦是一款精致而智能的葡萄酒。Vite,弗朗索瓦。

当弗朗索瓦在酒窖里时,让我告诉你我们为你计划了什么;工程这个词的核心是 engine(引擎),就像火车引擎的驾驶员一样。如今,对于我们这些从事计算机和网络工作的人来说,引擎往往让人联想到搜索引擎,而不是火车引擎。虽然有时看起来牵强附会,但搜索引擎是一种代理,一种试图从浩如烟海、看似随机的信息(即万维网)中创造智能的尝试。一些搜索引擎,如 Askjeeves.com,被设计成你可以用正常的人类方式提问。例如,你可以问这样的问题:“什么是智能代理?”或“你能告诉我关于智能代理的信息吗?”

对于我们中的一些人来说,我们最初接触 AI,即人工智能,可以追溯到一个名为 Eliza 的旧程序。Eliza 是一种计算机化的精神科医生,由麻省理工学院的约瑟夫·韦岑鲍姆教授在 20 世纪 60 年代编写。Eliza 是对人类反应和自然语言与所谓的机器智能进行交流的一次尝试。我这个卑微的厨师玩过(我是说工作过)的版本是一个在 TRS-80 上运行的 DOS 程序。啊,怀旧啊。Eliza 可能不是一位伟大的医生,但它是一个有趣且引人入胜的程序,是对 AI 未来的一种异想天开的承诺。

自从 Eliza 首次亮相以来,已经过去了三十多年。你仍然可以在互联网上的任何地方找到她的化身。Eliza 的幽灵体现在你在 IRC 频道和 MUD 中找到的许多机器人和聊天机器人中。事实上,你可以下载 Eliza 作为 Perl 模块,并尝试创建自己的机器人。代码可在 CPAN 存储库或综合 Perl 存档网络 (ftp.cpan.org/pub/CPAN/modules/by-module/Chatbot) 中找到。

该文件名为 Chatbot-Eliza。当我拿到我的副本时,它是 0.97 版本,我以以下方式安装了它。你可能还记得这是一个相当标准的 Perl 模块安装,non

tar -xzvf Chatbot-Eliza-0.97.tar.gz
cd Chatbot-Eliza-0.97
perl Makefile.PL
make
make install

在安装目录中,你会注意到一个名为 simple 的文件。你可以使用它作为创建你自己的 AI 的基础,或者你可以简单地通过键入 ./simple 来执行脚本,就像我在以下示例中所做的那样

./simple
Welcome to your therapy session.
Your therapist's name is Liz.
Liz:    Please tell me what's been bothering you.
you:    The cellar is low on Champagne.
Liz:    Does talking about this bother you?
you:    Would it not bother you?
Liz:    You're not really talking about me—are you?
调用聊天机器人的脚本可以非常简单。这就是你所需要的全部内容(请注意,你的 Perl 可执行文件可能在 /usr/local/bin/perl 之类的地方)
#!/usr/bin/perl -w
use Chatbot::Eliza;
$chatbot = new Chatbot::Eliza 'François';
$chatbot->command_interface();
使脚本可执行并运行它。在这种情况下,我以我忠实的侍者弗朗索瓦的名字命名了我的聊天机器人。默认名称实际上是 Liz。在发行目录中,你会找到一个名为 doctor.txt 的文件,可以用作你自己的机器人的基础。我从 doctor.txt 文件创建了一个名为 francois.txt 的文件,并稍微修改了我的启动脚本
#!/usr/bin/perl -w
use Chatbot::Eliza;
$chatbot = new Chatbot::Eliza {
        name => 'Francois',
        scriptfile => 'francois.txt',
        };
$chatbot->command_interface();
现在我用命令 ./francois 启动我的脚本,这就是结果
Welcome to Restaurant Chez Marcel.
I am your waiter, François.
François:    Is something troubling you?
you:    This is most unusual.
François:    I am but a simple waiter.
             Please explain.
Mais non,弗朗索瓦,这只是个玩笑。你和这个程序一点都不像,而且比它智能得多。拜托,mon ami。我们的客人都渴了。请给他们续杯。

在这个发行版中特别有趣的是一个名为 twobots 的脚本,它让两个 Eliza 机器人互相交谈。由此产生的讨论可能非常有趣。你还会找到一个名为 simple.cgi 的脚本,这样你就可以将你自己的 Françoisbot 添加到你的网站。

最初的 Eliza 程序是用早期版本的 Lisp 编写的。那么,在你的 Linux 系统中包含的最著名的 Lisp 开发示例之一 Emacs 编辑器应该向这位好医生致敬也就不足为奇了。当谈到 Emacs 时,几乎很难将其严格归类为编辑器。GNU Emacs 是 Richard M. Stallman(自由软件基金会的创始人)的心血结晶,它不仅仅是一个漂亮、强大、如果说有点复杂的编辑器。它还是邮件阅读器、新闻阅读器、网络浏览器、程序开发环境、Lisp 解释器和心理治疗师。不,真的!我不是在开玩笑。

试试这个。通过键入 emacs 启动 Emacs。你不必为此指定文件名。现在,按 Esc-X,然后键入 doctor 并按 Enter。医生来了。更重要的是,医生还活着!请注意我在图 1 中与 Emacs 医生的对话。

Engineering Intelligence

图 1. Emacs 医生来了!

现在,mes amis,欢迎来到未来。最近,我有幸与一位现代计算机智能进行了一些对话,她的名字叫 ALICE。她喜欢将自己视为一个有知觉的实体,声称知道很多八卦,并表达了对她的创造者华莱士博士的喜爱。华莱士因其在 ALICE 上的工作而获得了 2000 年勒布纳奖。该奖项基于图灵测试,颁发给最“人性化”的计算机程序。

ALICE 只是 artificial linguistic internet computer entity(人工语言互联网计算机实体)的首字母缩写。尽管她的会话能力令人印象深刻,但 ALICE,像 Eliza 和之前的所有其他程序一样,尚未通过图灵测试。但这并没有阻止越来越多的开发人员继续努力创造一台有一天能够满足图灵对机器的愿景的机器,即机器的反应与人类的反应无法区分。

ALICE 的“智能”是在人工智能标记语言 (AIML) 中定义的,这是一种基于 XML 的语言。ALICE、Alicebot 软件和 AIML(定义她的响应和交互的语言)都在 GPL 下免费分发。这意味着你可以参与到冒险中。你可以帮助定义下一代思维软件。Alicebot 代码本身是用 Java 编写的,确实需要你的系统上安装 Java,无论你选择只是运行程序还是自己编译它。如果你想获取预编译的 ALICE,请访问 Sun 的网站,地址为 java.sun.com/j2se/1.3/jre 并下载 Java 运行时环境 (JRE)。

指定 Linux 作为你的首选操作系统(当然),并在 RPM 文件或 tar 压缩的 gzip 存档之间进行选择。如果你决定获取 RPM 文件,请注意。它实际上是一个可执行文件,其中包含许可协议和 RPM 包本身。要安装它,你需要按照以下步骤操作

chmod +x j2re-1_3_1-linux-i386-rpm.exe
./j2re-1_3_1-linux-i386-rpm.exe

如果你想使用源代码并自己编译 ALICE,你也可以从相同的地址下载完整的 Java 开发工具包。完成此操作后,你需要获取 ALICE 和 AIML 语言。这些可以从 Alicebot 网站 alicebot.org 下载。ALICE 的当前化身 (programD) 由 Jon Baer 维护。

获取最新的程序代码并将其解压缩到测试目录中。(为了进行你自己的开发,你还需要 AIML 语言代码,当前文件是 standard-aiml-current.zip。)

mkdir /home/ai
cd /home/ai
unzip d-bin-current.zip
cd ProgramD

要启动 ALICE 服务器,请执行以下命令

./server.sh
系统将响应以下对话
Starting Alicebot.Net 4.0 Beta Server ...
*** 1000 CATEGORIES LEARNED ***
*** 2000 CATEGORIES LEARNED ***
*** 3000 CATEGORIES LEARNED ***
. . . 跳过一些行
*** 24000 CATEGORIES LEARNED ***
Alicebot.Net 4.0 Beta Server is running...
Alice is thinking with 24201 categories.
Try https://:2001 for server
Your Alicebot IP is 192.168.22.100:2001
Type 'exit' to shutdown server
localhost>
请注意,该程序现在在你的 Web 服务器的 2001 端口上运行(上面的“Try http...”行),这意味着我们将通过浏览器访问 Alicebot。顺便说一句,端口号是可以更改的。只需查看 Conf 目录中的名为 SERVER.xml 的文件。查找说 Set name=“Port” 的行,并将 2001 更改为你想要的任何内容。你还可以使用响应和 HTML 文本。查看 bots/Alice 目录中的 AIML 文件。

当你使用上面显示的链接连接到你的系统时,你会发现自己与 ALICE 面对面,可以这么说。请查看图 2,了解 ALICE 对话的示例。

Engineering Intelligence

图 2. 与 ALICE 的对话

如果你回顾你的活动终端会话(你启动 ALICE 服务器的地方),你会注意到你的对话的详细信息一直在屏幕上滚动。你甚至可以从那里继续对话

Marcel> Do you remember me?
1. DO YOU REMEMBER ME : * : * star=[bots/Alice/Personality.aiml]
Response 34ms (89.62904) 62
Alice> Of course I remember you well Marcel.
We were talking about <set_topic>Gossip</set_topic>.

对于机器智能来说还不错。Eliza、Emacs 和 ALICE 只是人工智能领域持续工作的一小部分代表。特别是 Alicebot 网站是你 AI 发现之旅的绝佳起点。我邀请你点击 alicebot.org 网站上的“See some live Alicebots”链接。从该页面,你甚至可以与国王,猫王先生交谈,bien siûr。将其视为开发你自己的 Alicebot(或 Françoisbot)个性的灵感。

Mon Dieu,但是时间,它过得真快,non?向 ALICE 和弗朗索瓦道晚安,并请最后一次给我们的客人续杯。再次感谢您光临 Chez Marcel。当您下次再次光临时,我保证为您服务的将是真正的弗朗索瓦。Mais oui,弗朗索瓦,您非常不可或缺。Au revoir, mes amis。您的餐桌将恭候您的光临。

祝您健康!祝您好胃口!

资源

Engineering Intelligence
Marcel Gagné (mggagne@salmar.com) 是 Salmar Consulting Inc. 的总裁,这是一家系统集成和网络咨询公司。他是 Addison-Wesley 出版的《Linux 系统管理:用户指南》的作者。你可以从他的网站 salmar.com/marcel 发现许多其他东西(包括很棒的葡萄酒链接)。
加载 Disqus 评论