SHRDLU

维基百科,自由的百科全书
SHRDLU
原作者特里·威诺格拉德
首次发布1968
编程语言Micro Planner, LISP
操作系统PDP-6
平台DEC
类型自然语言理解

SHRDLU是由特里·威诺格拉德于1968年至1970年在麻省理工学院开发的一种早期的自然语言理解电脑程式 。在该程式中,用户可以与电脑对话,对这种精简的“ 积木世界”的内部状态进行移动物体、命名集合、查询等操作(积木世界本质上是一个虚拟盒子,内部充满了不同积木)。[1]

SHRDLU是以Micro PlannerLisp编程语言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的著名演示: [2]

人:Pick up a big red block.
电脑: OK.
人:Grasp the pyramid.
电脑:I DON'T UNDERSTAND WHICH PYRAMID YOU MEAN.
人:(changing their mind): Find a block which is taller than the one you are holding and put it into the box.
电脑:BY "IT", I ASSUME YOU MEAN THE BLOCK WHICH IS TALLER THAN THE ONE I AM HOLDING.
电脑:OK.
人:What does the box contain?
电脑:THE BLUE PYRAMID AND THE BLUE BLOCK.
人: What is the pyramid supported by?
电脑:THE BOX.
人:How many blocks are not in the box?
电脑:FOUR OF THEM.
人:Is at least one of them narrower than the one which i told you to pick up?
电脑:YES, THE RED CUBE.
人:Is it supported?
电脑:YES, BY THE TABLE.
人:Can the table pick up blocks?
电脑:NO.
人:Can a pyramid be supported by a block?
电脑:YES.
人:Can a pyramid support a pyramid?
电脑:I DON'T KNOW.
人:Stack up two pyramids.
电脑:I CAN'T.
人:Will you please stack up both of the red blocks and either a green cube or a pyramid?
电脑:OK.
人:Which cube is sitting on the table?
电脑:THE LARGE GREEN ONE WHICH SUPPORTS THE RED PYRAMID.
人:Is there a large block behind a pyramid?
电脑:YES, THREE OF THEM: A LARGE RED ONE, A LARGE GREEN CUBE, AND THE BLUE ONE.
人:Put a small one onto the green cube which supports a pyramid.
电脑:OK.
人:Put the littlest pyramid on top of it.
电脑:OK.
人:Does the shortest thing the tallest pyramid's support supports support anything green?
电脑:YES, THE GREEN PYRAMID.
人:What color is it?
电脑:BY "IT", I ASSUME YOU MEAN THE SHORTEST THING THE TALLEST PYRAMID'S SUPPORT SUPPORTS.
电脑:RED
人:How many things are on top of green cubes?
电脑:I'M NOT SURE WHAT YOU MEAN BY "ON TOP OF "IN THE PHRASE "ON TOP OF GREEN CUBES " .
DO YOU MEAN:
1 - DIRECTLY ON THE SURFACE
2 - ANWHERE ON TOP OF ?
人:2
电脑:THREE OF THEM.
人:Had you touched any pyramid before you put the green one on the little cube?
电脑:YES, THE GREEN ONE.
人:When did you pick it up?
电脑:WHILE I WAS STACKING UP THE RED CUBE, A LARGE RED BLOCK AND A LARGE GREEN CUBE.
人:Why?
电脑:TO GET RID OF IT.
人:Why did you do that?
电脑:TO CLEAN OFF THE RED CUBE.
人:Why did you clear off that cube?
电脑:TO PUT IT ON A LARGE GREEN CUBE.
人:Why did you do that?
电脑: TO STACK UP THE RED CUBE , A LARGE RED BLOCK AND A LARGE GREEN CUBE.
人:Why did you do that?
电脑:BECAUSE YOU ASKED ME TO.
人:How did you do it?
电脑:BY PUTTING A LARGE RED BLOCK ON THE TABLE ; THEN LETTING GO OF IT ; THEN PUTTING A LARGE GREEN CUBE ON IT ; THEN LETTING GO OF THAT CUBE ; THEN PUTTING THE RED CUBE ON THAT CUBE; THEN LETTING GO OF THAT CUBE.
人:How many objects did you touch while you were doing it?
电脑:FOUR OF THEM.
人:What did the red cube support before you started to clean it off?
电脑:THE GREEN PYRAMID.
人:There were five blocks to the left of the box then.
电脑:NO, ONLY FOUR OF THEM: THE RED CUBE, TWO LARGE GREEN CUBES AND A LARGE RED BLOCK.
人:Put the blue pyramid on the block in the box.
电脑:OK.
人:Is there anything which is bigger than every pyramid but is not as wide as the thing that supports it?
电脑:YES, THE BLUE BLOCK.
人:Does a steeple
电脑 (interrupting):SORRY, I DON'T KNOW THE WORD "STEEPLE".
人:A "steeple" is a stack which contains two green cubes and a pyramid.
电脑:I UNDERSTAND.
人:Are there any steeples now?
电脑:NO.
人:Build one.
电脑:OK.
人:Call the biggest block "superblock".
电脑:OK.
人:Have you picked superblock up since we began?
电脑:YES.
人:Why did you drop it?
电脑:BY "IT", I ASSUME YOU MEAN THE SUPERBLOCK.
I CAN'T EXPLAIN A NON-EXISTENT EVENT.
人:Is there anything to the right of the red pyramid?
电脑:YES, FOUR THINGS: THE BOX , THE RED CUBE, THE BLUE PYRAMID AND THE BLOCK NAMED SUPERBLOCK
人:Thank you.
电脑:YOU'RE WELCOME!

影响[编辑]

SHRDLU被认为是人工智能一次极其成功的演示。这导致其他AI研究人员过分乐观,但后来的系统试图处理现实中的更具模糊性和复杂性的情况时[来源请求],这种乐观情绪很快就消失了。后续与SHRDLU同型的工作(例如Cyc )则倾向于专注为程式提供更加丰富的资讯,借此从中获得结论。

尽管不是有意为之,但是SHRDLU被认为是文字冒险游戏第一个已知的正式实例,这是因为用户能够以简单的指令在虚拟环境中移动物体来进行互动,尽管缺乏了常见于文字冒险游戏中特有的故事叙述。 1976-1977年的游戏《巨洞冒险》被广泛认为是文字冒险游戏的第一个真正作品。 [3]

参见[编辑]

参考文献[编辑]

  1. ^ Winograd, Terry. Procedures as a Representation for Data in a Computer Program for Understanding Natural Language. 1971-01-01 (美国英语). 
  2. ^ SHRDLU. Stanford Human-Computer Interaction (HCI) Group. (原始内容存档于2020-08-16). 
  3. ^ Montfort, Nick. Twisty Little Passages: An Approach To Interactive Fiction. Cambridge: The MIT Press. 2003: 84–85. ISBN 0-262-13436-5. 

外部链接[编辑]