SHRDLU是由特里·威诺格拉德于1968年至1970年在麻省理工学院开发的一种早期的自然语言理解计算机程序 。在该程式中,用户可以与电脑对话,对这种精简的“ 积木世界”的内部状态进行移动物体、命名集合、查询等操作(积木世界本质上是一个虚拟盒子,内部充满了不同积木)。
SHRDLU是以Micro Planner和Lisp编程语言在DEC PDP-6电脑和DEC图形终端上编写而成 。 后来在犹他大学的计算机图形实验室进行了补充,加入了对SHRDLU“世界”的完整3D渲染。
名称“SHRDLU”衍生自ETAOIN SHRDLU, ETAOIN SHRDLU是Linotype排字机上字母键配置,也就是照字母使用频率,以降序方式排列的12个字母序列。
SHRDLU主要是一种语言解析器,它允许用户使用英语术语进行互动 。 用户指示SHRDLU在“积木世界”中移动各种物体,包含各种基本物体:积木(块体)、锥体、球体等。 SHRDLU的独特之处在于将四个简单想法的组合起来,这些想法加总在一起,使得在对“理解力”的模拟上,更具说服力。
其中一个原因是,SHRDLU的世界非常简单,以致于整个物体和位置的集合可以透过大约50个单词来描述:名词如"积木"(block)和"锥体"(cone),动词如"放置在"(place on)和"移动到"(move to),以及形容词如"巨大的"(big)和"蓝色的"(blue)。这些基本的语言建筑模块的可能组合相当简单,程式完全有办法弄懂用户的意思。
SHRDLU还包括一个基本内存来提供语境。人们可以要求SHRDLU“把绿锥放在红块上”,然后“把锥子拿下来”;“锥体”会被认为是指刚才说的绿锥。在大多数情况下,当提供了额外的形容词时,SHRDLU可以透过互动进一步回溯寻找合适的语境。用户也可以问一些历史问题,比如“在捡到锥体之前,你有没有捡过任何东西?”
这种内存的附带效果,也是SHRDLU标准配置的基本规则,即该程式可以回答关于世界上什么问题是可能的,什么问题是不可能的。SHRDLU会透过寻找例子推断出积木可以堆叠,但在尝试过三角形后,会了解到三角形不能堆叠。“世界”包含了使积木掉落的基本物理机制 ,而这与语言解析器无关。
最后,SHRDLU还可以记住物体的名称或它们的排列方式。例如,人们可以说 "尖塔是一个高大的长方形上面的小三角形";SHRDLU就可以回答积木世界中关于尖塔的问题,并建造新的尖塔。
这是SHRDLU的著名演示:
SHRDLU被认为是人工智能一次极其成功的演示。这导致其他AI研究人员过分乐观,但后来的系统试图处理现实中的更具模糊性和复杂性的情况时,这种乐观情绪很快就消失了。后续与SHRDLU同型的工作(例如Cyc )则倾向于专注为程式提供更加丰富的资讯,借此从中获得结论。
尽管不是有意为之,但是SHRDLU被认为是文字冒险游戏第一个已知的正式实例,这是因为用户能够以简单的指令在虚拟环境中移动物体来进行互动,尽管缺乏了常见于文字冒险游戏中特有的故事叙述。 1976-1977年的游戏《巨洞冒险》被广泛认为是文字冒险游戏的第一个真正作品。