在Mac中学习一些Terminal命令时尝试过Emacs Doctor,当时只知道这个可以和机器聊天小程序是集成在Emacs中的。最近发现Emac Doctor背后是一个早期的人工智能项目——ELIZA,仔细研究了一下,来头不小。
1.Emacs Doctor长什么样?
如下,
2.如何找到她?
Emacs中输入“xdoctor”即可。Terminal中需要先输入“Emacs”,再“shift+esc”。
3.这个Doctor怎么用?
找到Doctor后,输入你的问题,按两下“Return”,Doctor就会回答你的问题。
不过貌似这个精神治疗师的回答会让你更加神经。
下面是我和她的一段对话。
4.Emacs Doctor到底什么来头?
说到Emacs Doctor,就不得不说ELIZA(维基百科-ELIZA)。
Eliza是早期的一项人工智能项目,被MIT的41岁计算机科学家Joseph Weizenbaum在1964-1966年开发出来,并以萧伯纳的戏剧作品《卖花女》(不是《茶花女》)中的主人公的名字命名(因此本文用“她”来称呼)。ELIZA的智能之处在于她能通过脚本理解简单的自然语言,并能产生类似人类的互动。而其中最著名的脚本便是模拟罗吉斯心理治疗师的Doctor。GNU Emacs Doctor则是这个脚本的另一个版本。
ELIZA在1966年被发布出来以后,引起了不小的轰动,与ELIZA“聊天”的用户有时会误以为自己是在和人类,而不是和一个程序交谈。但是实际上ELIZA根本不知道自己在说什么。它只是按固定套路作答,或者用符合语法的方式将问题复述一遍。甚至有一段时间,人们认为这种思路可以做出通过图灵测试的程序。
Weizenbaum很吃惊很多用户会忽视自己面对的是一个机器,而对ELIZA敞开心扉(这种情况也叫做ELIZA effect,ELIZA效应)。虽然Weizenbaum创造的ELIZA使他在人工智能领域成就斐然,但他并不认为AI能与人类的情感和智慧相比。1976年Weizenbaum出版著作《计算机的力量与人类的推理》,书中表示人工智能的滥用可能损害人类生命的价值,并对计算机和人类的关系进行了探讨。
关于这段历史,可以看看《面对互联网:我们已经丧失了人性》。查到有两部关于Joseph Weizenbaum和ELIZA的电影《Weizenbaum. Rebel at Work.》和《Plug & Pray》,打算有时间看一下。
Weizenbaum最早是用SLIP写的ELIZA。后来出现了很多其他语言的版本,著名的有Bernie Cosell重写的Lisp版本,Jeff Shrager的BASIC版本,还有就是GNU Emacs中的Emacs Doctor了。
另外,有一个用Perl写的改进版本的ELIZA(Chatbox-ELIZA),好像只能装到UNIX内核的机器上,我尝试了下。ELIZA体验过程及更多请看文章最后“ELIZA体验”。
作为最早的机器智能的体现之一,ELIZA可以说是一个里程碑。不管它有多么简陋,但它是将人-人互动的感觉带到了人机互动上的第一次尝试。
自己总结一下,ELIZA有以下影响:
* ChatterBot:ELIZA可以说是第一个Chatterbot——聊天机器人,你现在依然可以在很多Chatterbot中发现ELIZA的影子。不得不说的是,两年前Apple的Siri发布时,ELIZA也被再次请出,用来吐槽“智能”的Siri。
* Game:这一点很容易理解,由于ELIZA具有很强的互动性,她对游戏领域的影响是深远的,特别对早期的游戏。一些角色扮演类游戏和文字游戏很大程度上借鉴了ELIZA的设计,具体看这里。2011年的游戏黑客入侵:人类革命(Deus Ex: Human Revolution)也在向ELIZA致敬。游戏中的一个伪装成记者的反派Eliza Cassan最后被主角击杀,并发现她是一个高度智能的AI。
* Smart Assistant:虽然Google Now和Siri等一些智能语音助理能完成各种任务,甚至对它们给予的输入是完全的自然语言,但是它们仍可以判断意思并给出回答。维基百科上说Siri中有个很有意思的彩蛋(前提是语言设置为en),问Siri:“Who would you vote for-Mitt Romney or Barack Obama?”,Siri回答:“I can’t vote.But if I did,I would vote for ELIZA.She knows all.”或者问Siri:“Tell me a story.”最后她会给你讲她是如何被选中给Apple工作的,然后故事中会提及ELIZA。当然你也可以向Siri问ELIZA,然后她会仔细地向你介绍。
* etc.
Emacs Doctor源代码中这样介绍自己
The single entry point `doctor', simulates a Rogerian analyst using ;; phrase-production techniques similar to the classic ELIZA demonstration ;; of pseudo-AI.
Emacs Doctor的脚本是用eLisp语言写的。在Mac中,打开emacs/24.3/Emacs.app/Contents/Resources/lisp/play ,其中的doctor.elc便是Doctor的藏身之处
Gnu Emacs 20.2.2中Emacs Doctor源代码:http://www.csee.umbc.edu/courses/471/papers/emacs-doctor.shtml
写的不好,有错误还请指正。
Eliza体验
安装过程:
$ cd Chatbot-Eliza-1.04
$ ls
Chatbotdebug.cgidoctor.txtsimple
MANIFESTdeutschnorsksimple.cgi
Makefile.PLdeutsch.cginorsk.cgitest.pl
READMEdeutsch.txtnorsk.txttwobots
$ perl Makefile.pl
Checking if your kit is complete…
Looks good
Writing Makefile for Chatbot
$ make test
cp Chatbot/Eliza.pm blib/lib/Chatbot/Eliza.pm
PERL_DL_NONLAZY=1 /opt/local/bin/perl “-Iblib/lib” “-Iblib/arch” test.pl
Attempting to load module…done.
OK, looks good.
$ make install 在这需要权限才行,sudo就行了
Manifying blib/man3/Chatbot::Eliza.3pm
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can’t create ‘/opt/local/lib/perl5/site_perl/5.12.4/Chatbot’
mkdir /opt/local/lib/perl5/site_perl: Permission denied at /opt/local/lib/perl5/5.12.4/ExtUtils/Install.pm line 494
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
at -e line 1
make: *** [pure_site_install] Error 13
$ sudo make install
Password:
Sorry, try again.
Password:
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/.DS_Store
Installing /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/auto/.DS_Store
Installing /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/.DS_Store
Installing /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/auto/.DS_Store
Installing /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/Chatbot/Eliza.pm
Installing /opt/local/share/perl5.12/siteman/man3/Chatbot::Eliza.3pm
Appending installation info to /opt/local/lib/perl5/5.12.4/darwin-thread-multi-2level/perllocal.pod
这算安装好了。
然后”./simple”运行,尝试一下,本来感觉无聊的过程却发现亮点在最后。。。 感觉这个比Emacs Doctor的回答智能多了!
参考资料: