5.2 ShRDLU的对话
从下面威诺格拉德与ShRDLU的对话[2]中可发现,ShRDLU似乎是非常有效的。对话中的仿宋体部分是威诺格拉德输入到计算机中的文字,斜体文字为计算机的应答。对话间其他文字是对计算机展现的一些特征所作的评论。每次作出应答约需10秒。
1.拿起一个红色的方块。
好的。
当执行这个命令的时候,系统回答“好的”。为了拿起这个红色的方块,必须将绿色方块移开,并找到一块空地放置这个绿色方块。
2.拿起一个角锥。
我不知道你想要哪个角锥。
共有三个角锥,因此这个程序没有作出任何反应和动作。
3.找到比你现在正拿着的方块还要高一点的那个方块,然后将它放进盒子内。
这时系统要运用推理弄清楚“那个”和“它”的具体含义,决定哪个方块要被拿起。
我假设你所说的“它”指的是比我现在所拿着的方块高的那个。
系统如上打印出来。
好的。
它的手放下红色方块,拿起一个比它高的蓝色方块。
4.盒子里面装了什么?
蓝色角锥和蓝色方块。
5.这个角锥是被什么支撑着?
一开始系统应答“这个角锥”时说:“不知道你说的是哪个角锥”,但是现在它假设我们所指的这个角锥就是刚刚提到的那一个。
是那个盒子。
6.多少方块不在这个盒子里?
否定词像“没有”和“不”都会被操作,无论它们出现在句子中还是出现在词组中(如没有盒子(no boxes))。
有四个。
7.它们之中是否至少有一个比我要求你拿起的那个小呢?
这个句子中“它们之中是否至少有一个”必须根据前面提到过的问题以及“我要求你拿起的那个”来分析,回到方块上来。有的名词词组会比较复杂,诸如“至少一个”、“多于三个”、“正好是七个”等等。先前的记忆用来推断出“哪个方块是你叫我去拿起来的”。注意到在这个复杂的句法结构中的“那个”,需要对这个句子进行两步分析才能获得。
是的,有,是那个红色的立方体。
8.它有支撑吗?(is it supported?)
被动语句不使用“by…”的句子表示。
是的,它由桌子支撑。
9.这个桌子可以拿起这些方块吗?
不能。
根据语义规则这是一个没有语义的问题,必然作出否定性的回答。
10.一个角锥能够放在一个方块上面吗?
是的,可以。
这个推理系统找到了一个实际的例子,所以它知道这个是可能的。
11.一个角锥可以放在另一个角锥上吗?
我不清楚。
这个问题的答案是可以,但是在这个情景中没有提供这样的例子,所以对于机器来说作出回答并不是一件容易的事。
12.将两个角锥重叠起来。
我不能。
机器人试了试,但是失败了。
13.那个蓝色角锥是我的。
我明白。
这个数据加进了数据库。
14.我有(own)了不是红色的方块,但我没有可以支撑角锥的东西。
我知道了。
创造了两个新的法则,说明“有(owning)”的含义。
15.我有(own)盒子吗?
没有。
盒子能够支撑所有装在里面的东西,包括角锥。
16.我能有(own)盒子里的什么东西?
蓝色方块和蓝色角锥。
17.能不能将两个红色方块或者与一个绿色立方体或者与一个角锥一起重叠起来呢?
可以。
逻辑连接词像“与”、“或者……或者”受语法和语义两方面控制。一个命令只有当它看起来像一个问题时才被执行。命令的执行过程分为下面的一系列步骤:它将绿色立方体放在了红色方块上(注意到,它选的绿色立方体上面没有任何东西),然后将小的锥体从小的红色立方体上移开,然后用这个立方体按照规定执行……
18.哪一个立方体立在桌子上?
用来支撑红色角锥的那个(the…one which)大一点的绿色立方体。
一般来说,系统满足“大一点的绿色立方体”的回答。问及“哪一个立方体”,它需要作出一种更加确切的回答。机器回答使用了指代名词(“the…one”)和代名词(which),使对话过程更符合自然语言习惯。
19.有没有一个大的方块在角锥后面?
有三个:大的红色方块、大的绿色立方体和蓝色立方体。
20.在支撑角锥的绿色立方体上面放一个小的。
“一个小的”必须与一个先前的句子“一个大的方块”进行对比,因此这意味着“一个小的方块”。
好的。
21.把littlest的那个角锥放到它的上面。
“(littlest)”字典里并没有这个单词,但是它的意义可以从词根“little”变化得到,即“最小的那个角锥”。
好的。
22.有多少东西在绿色立方体的上面(on)?
我不是很确定你说的“在上面”是什么意思。
你是说①最直接地摆在上面的东西?还是②任何一个处于其上面的东西?
当有很多解释且没有一个是更好的时候,系统将会向使用者询问更多信息。这种模糊不清的词组源于字典中对“上面(on)”的定义,当启发式方法不足以解决模糊概念时,对更多信息的要求就会自动提出。当代词,如“它”或者“它们”不清楚时也会发出这样的疑问。
{22a我意思是}②。
有三个。
23.当你把那个绿色角锥放在小的立方体上的时候,有没有接触过(had touched)一个角锥?
有的,接触过那个绿色角锥。
系统从它的记忆中作出推断,此刻涉及哪些东西以及与它相关的其他东西。这种分析包括复杂的动词时态,并且能够清楚地解释不规则动词的含义,如“have”。
24.你什么时候将它拿起过?
当我将一个红色立方体、一个大的红色方块和一个大的绿色方块叠起来的时候。
时间是通过其时所做的一些重要工作来描述。
25.为什么?
系统通过回忆前面的句子,以理解这个问题和随后的问题。
能够获得红色方块。
通过对其原始子目标树状图的回溯进行选择,系统开始对自己的动机有所了解。
26.你为什么要那么做(do that)?
清除红色方块上面的东西。
“那么(that)”指代问题中的行动。
27.你为什么要清除那个(that)方块上面的东西呢?
“那个(that)”指代刚刚提到的方块。
将它放置到一个大的绿色立方体上面。
28.你为什么要那么做?
将一个红色立方体、一个大的红色方块和一个大的绿色方块重叠起来。
29.你为什么要那样做?
因为你让我这么做的。
它记得之前做过什么,但并不记得被要求做的命令。
30.你是怎么完成它(do it)的呢?
“它(it)”指上一个问题中提到的行为,而不是它对问题的回答。
通过将一个大的红色方块放到桌子上;然后把一个大的绿色立方体放在上面;然后将一个红色立方体放在这个立方体的上面。
这是完成最终目标需要进行的各个子目标的描述。
31.在你做这件事情时(while),你接触到了多少个物体?
表达时间跨度的时间指称,可用“在……时(while)”。
四个。
32.那个红色立方体在你清理它之前支撑着什么?
绿色角锥。
它记得移动过什么东西,所以可以推断这个场景之前的画面。它可以理解如“在你清理它之前”这样的句子。
33.之后(then),盒子的左边有五个方块。
“之后(then)”指上一个句子中提到的时间。
不是,只有四个:一个红色立方体,两个大的绿色立方体,一个大的红色方块。
在前面的对话中,有关“有(owning)”的新信息作为初步值被接受。但系统知道关于这些物体特征的全部基本信息,包括方位。它能够检验一切关于位置或者其他有关物体特征的信息,之后表达对陈述的认同与否。
34.放置蓝色角锥盒子里的方块上面(put the blue pryamid on the block in the box)。
这个句子有些含糊,但当这么理解时就不会含糊不清了。按照当下的情景,如果将这句话理解为“放置盒子里方块上的蓝色角锥(put the blue pryamid which on the block in the box)”,是没有意义的。因此,意指“放置蓝色角锥到盒子里的方块上面(put the blue pryamid on the block which is in the box)”。
好的。
35.这里有没有一个东西(anything)比每一个(every)角锥都要大,但是并不与支撑它(it)的东西一样宽?
系统能够理解数词,如“每一个(every)”、“任何一个(any)”、“一些(some)”,也理解如“比……大”、“与……一样宽”这样的句子结构。“它(it)”指代同一个句子中的一个名词,但“它”与其所指代的名词却有不同的含义。
有的,那个蓝色方块。
36.有没有一个尖塔(steeple){…}
对不起,我不知道“steeple”是什么意思。
系统很快对它不认识的词语作出反应。
37.“尖塔(steeple)”是指将两个绿色立方体和一个角锥叠起来的东西。
这样的说明标志着我们正在定义一个新的词语。
我理解了。
38.那么现在有没有尖塔?
没有。
这个新定义用来作为识别尖塔描述。
39.建造一个(build one)。
好的。
上面所作的定义的描述足够让系统叠出一个那样的尖塔并且能够进行识别。其中“一个(one)”指的是“一个尖塔”,然后建造计划要开始了。首先,它通过移开一个红色立方体和两个锥形体,从而得到一个大的绿色立方体。然后将两个绿色立方体和一个大的红色角锥叠加起来,满足那个描述。
40.称那个最大的方块为“超级方块”。
好的。
可以给物体命名。
41.从开始到现在,你有没有拿起过超级方块?
是的,有过。
42.你为什么将它扔了?
我将你说的“它”,理解为那个超级方块。我不能够解释一个不存在的事情。
在记忆中没有记录任何一个方块曾被扔过。
43.红色角锥的右边有没有别的什么东西?
有的,有四个:一个盒子,一个红色立方体,一个蓝色角锥,一个超级大方块。
当一个物体有了新的名字时,系统会使用新名字进行回答。
44.谢谢。
不客气。
可以定义习语,但不必考虑语法。
注意到,ShRDLU能够对不同的陈述、问题和命令作出反应;使用已有的知识;对输入作句法和语法的分析;解释和报告它的计划,并且具有对话策略(包括假定谈话者的目标);作出符合常识习惯的应答。