H.1 对表示的计算要求
先来思考为什么需要意义表示,以及意义表示应该为我们做什么。为使讨论集中,考虑一个根据知识库向游客提供餐厅建议的系统。
可验证性¶
考虑下面这个简单问题:
(H.1) Does Maharani serve vegetarian food?(Maharani 餐厅供应素食吗?)
要回答这个问题,我们必须知道它问的是什么,也必须知道它所问的内容对 Maharani 而言是否为真。可验证性(verifiability)是系统把某种表示所描述的事态,同知识库所建模的某个世界中的事态进行比较的能力。例如,我们需要类似 的某种表示,系统可以把它同知识库中有关特定餐厅的事实进行匹配;如果找到与这一命题相匹配的表示,就可以回答“是”。否则,如果系统关于当地餐厅的知识是完备的,就必须回答“否”;如果系统知道自己的知识不完备,则必须回答“不知道”。
无歧义表示¶
与我们研究过的其他领域一样,语义也受到歧义的影响。词和句子在不同语境中有不同的意义表示。考虑:
(H.2) I wanna eat someplace that’s close to ICSI.
(我想在离 ICSI 很近的某个地方吃饭。)
这句话既可以表示说话者想在附近某处用餐;也可以按照“说话者是哥斯拉”的解读,表示说话者想吞掉附近的某个地方。这个句子是有歧义的:同一个语言表达式可以有两种意义之一。但意义表示本身不能有歧义。输入意义的表示应该消除所有歧义,使系统可以在“表示只意味着其中一个意思”的基础上进行推理,从而决定如何回答。
与歧义密切相关的概念是含糊性(vagueness),即意义表示对意义的某些部分未作充分说明。含糊性不会产生多个表示。考虑下面的请求:
(H.3) I want to eat Italian food.(我想吃意大利菜。)
“意大利菜”可能已经提供了足以作出推荐的信息,但对于用户究竟想吃什么,它仍然很含糊。对某些目的而言,这个短语含义的含糊表示可能是合适的;而对其他目的,则可能需要更具体的表示。
规范形式¶
规范形式(canonical form)原则认为,意义相同的不同输入应该具有相同的意义表示。这种方法大大简化了推理,因为对于可能范围很广的一组表达式,系统只需处理一个意义表示。
考虑表达 (H.1) 的以下几种替代方式:
(H.4) Does Maharani have vegetarian dishes?(Maharani 有素菜吗?)
(H.5) Do they have vegetarian food at Maharani?(Maharani 那里有素食吗?)
(H.6) Are vegetarian dishes served at Maharani?(Maharani 供应素菜吗?)
(H.7) Does Maharani serve vegetarian fare?(Maharani 提供素食餐点吗?)
尽管这些替代表达使用了不同的词和句法结构,我们仍希望把它们映射到同一个规范意义表示。如果它们的表示各不相同,而系统知识库只包含这一事实的一种表示,那么大多数表示都无法匹配。我们当然可以在知识库中存储同一事实的所有可能替代表示,但这样会给维持知识库一致性带来极大困难。
规范形式确实会使语义解析任务更加复杂。系统必须断定 vegetarian fare、vegetarian dishes 和 vegetarian food 指的是同一事物;having 与 serving 在这里等价;而且所有这些解析结构仍然导向同一个意义表示。再看下面一对例子:
(H.8) Maharani serves vegetarian dishes.(Maharani 供应素菜。)
(H.9) Vegetarian dishes are served by Maharani.(素菜由 Maharani 供应。)
尽管 serve 的论元在两个例子中位置不同,系统仍必须借助语法知识——例如主动句与被动句结构之间的关系——为 Maharani 和 vegetarian dishes 分配相同的角色。
推理与变量¶
更复杂的请求又该如何处理?例如:
(H.10) Can vegetarians eat at Maharani?(素食者能在 Maharani 用餐吗?)
这个请求之所以会得到与前述问题相同的答案,不是因为它们意义相同,而是因为素食者所吃的食物与素食餐厅所供应的食物之间存在常识联系。这是一个有关世界的事实。我们需要把这个请求的意义表示,同知识库中有关世界的这一事实连接起来。系统必须能够使用推理,即基于输入的意义表示和背景知识得出有效结论。系统必须能够判断某些命题的真假:这些命题虽然没有明确表示在知识库中,却可以从其中已有的命题以逻辑方式推导出来。
现在考虑一个稍微复杂一些的请求:
(H.11) I’d like to find a restaurant where I can get vegetarian food.
(我想找一家能吃到素食的餐厅。)
这个请求没有指称任何特定餐厅;用户想了解的是某家供应素食的未知餐厅。由于没有指定餐厅名称,简单匹配不会奏效。回答这一请求需要使用变量,例如下面的表示:
只有当变量 能被知识库中的某个对象替换,并使整个命题随之匹配时,匹配才会成功。替换变量的概念随后可以用来满足用户请求。对任何意义表示语言来说,能够处理这类不定指称都至关重要。
表达能力¶
最后,意义表示方案必须具有足够的表达能力,以处理广泛的主题;理想情况下,它应能处理任何合乎情理的自然语言话语。虽然要求任何单一表示系统做到这一点或许都不现实,但 H.3 节所述的一阶逻辑具有足够强的表达能力,可以处理相当大一部分需要表示的内容。