5.1 根据问题提取答案
词库由有序的个例行(见3.3.1和3.6.6)构成,个例行中陈列着核心属性值相同的相互关联的命题因子(见3.3.1,3.6.6)。到目前为止,我们已经讨论了词库数据结构的两个应用,一是用来(i)在听者模式下存储内容;二是用来(ii)在最基本的思考模式下提取接续命题因子,也就是在固定格式的基础上自由组合命题因子,这是说者的概念化过程。现在,我们来看一下由词库数据结构支持的另一种思考方式,即(iii)沿个例行移动。
假设主体想到一个女孩。这意味着要激活下面这样一个个例行:
5.1.1 个例行示例
如图所示,相关命题因子(子记录)的属性“fnc”和“mdr”的值表明,主体恰巧看到或者听到一个年轻的女孩走路、一个金发女孩睡觉、一个小女孩吃东西和一个聪明的女孩读书。
遍历给定概念的个例行的程序由下面的LA语法驱动,这个语法称作“LA-think.LINE”:
5.1.2 定义LA-think.LINE
核心属性值由取代变量“RA.1”(见4.1.3,C.3.2)表示。属性“prn”的值“n”、“n+1”和“n-1”延续了传统的方法:“n+1”代表同一个个例行内紧跟在当前命题因子“n”之后的命题因子,“n-1”代表同一个个例行内当前命题因子的前一个命题因子。规则“rforward”按照时间顺序从左向右(向前)遍历个例行。规则“rbackward”按照与时间相反的顺序从右向左遍历个例行。
5.1.1当中,有一个命题因子的属性“prn”值为“12”。下面看一下规则“rforward”应用于这个命题因子的情况:
5.1.3 LA-think.LINE规则应用示例
匹配过程中,取代变量“RA.n”被替换为属性“noun”,绑定变量“α”和“n”分别绑定值“girls”和“12”。该规则在5.1.1中的个例行上的应用结果是:
5.1.4 LA-think.LINE规则应用结果
显然,这种沿着已激活概念的个例行移动的方法可以用来回答问题。基本的问题有两种,称作(i)wh-问题和(ii)yes/no问题。注64下面举一个和5.1.1中的个例行相关的例子:
5.1.5 自然语言当中的基本问题
wh-question(特殊疑问句) Which girl walked?
yes/no-question(一般疑问句) Did the young girl walk?
数据库语义学当中,这些问题可以翻译为下面的命题因子格式:
5.1.6 表示两种基本问题的查询命题因子
在wh-问题的查询命题因子当中,属性“mdr”的值为变量“α”,属性“prn”的值为变量“n”。在yes/no问题的查询命题因子中,只有属性“prn”的值是一个变量。技术上,要回答一个问题,需要把查询命题因子的变量绑定上合适的值。下面看一下5.1.6当中的wh-问题的查询格式在5.1.1所示的个例行上的应用:
5.1.7 应用wh-问题查询格式检查个例行
图中所示的匹配尝试的结果是失败,因为命题因子查询格式的属性“fnc”的值(即“walk”)和命题因子个例的(即“read”)不兼容。把命题因子查询格式向左移动匹配下一个命题因子个例,情况也一样。只有到达最左边的命题因子个例时,匹配才成功。这时,变量“σ”绑定“young”,变量“n”绑定“10”。相应地,问题“Which girl walked?”的答案是“The young girl(walked)”。这个过程可以用下面的LA-think语法来形式化表示:
5.1.8 定义LA-think.Q1(wh-问题)
起始状态下的命题因子、规则和最终状态组合起来构成一个查询格式,其中“RV.1”和“RV.2”是核心属性和接续属性值的取代变量,“σ”、“n”和“n-1”是绑定变量。例如,将格式应用于5.1.6中的wh-问题,“RV.1”被“girl”取代,“RV.2”被“walk”取代.
要匹配的特征“[fnc:¬ RV.2]”必须和输入不兼容。在5.1.8的LA-think.Q1的定义当中,“r1”的第一个起始状态、句首和下一个词,“r2”的句首,以及第一个最终状态,对此都有明确的规定。与之相应的特征“[fnc:RV.2]”出现在“r2”的第二个句首、下一个词和第二个最终状态,它必须和输入兼容。
如果个例行的最后一个命题因子和查询格式不匹配,那么规则“r1”和“r2”都被激活(见第一个起始状态的规则包)。如果倒数第二个命题因子也匹配不上,那么规则“r1”成功;否则“r2”成功。只要个例行中有使“r1”应用成功的命题因子(即匹配失败),求导就继续。所有个例都遍历到了之后,算法进入第一个最终状态,实现为英语“I don’t know”。如果求导过程以“r2”应用成功来结束,那么算法进入第二个最终状态,实现为和匹配命题因子相应的一个英语名词短语,这里是“the young girl”。
Yes/no问题也用类似的方法来处理。例如,“Did the young girl walk?”把5.1.6的yes/no查询格式应用到5.1.1中的个例行上,得到的答案是“yes”,因为查询格式和“prn”值为“10”的命题因子匹配成功。如下面的LA-think.Q2所示:
5.1.9 定义LA-think.Q2(yes/no问题)
在LA-think.Q2当中,“RV.1”、“RV.2”和“RV.3”都是取代变量,而“n”和“n-1”是绑定变量。答案建立在最终状态的基础之上。第一个最终状态代表答案“no”,第二个代表“yes”。例如,根据5.1.1中的个例行来回答问题“Did the blonde girl walk?”查询结果是失败。把“r1”应用到所有的命题因子上之后,LA-think.Q2在第一个最终状态时结束,实现为英语的答案“no”。回答问题“Did the young girl walk?”结果是第二个最终状态,实现为英语的答案“yes”。进一步讨论参见9.5。