8.2.2 STUDENT 1968年美国麻省理工学院的博士研究生D.Bobrow完成了另一个基于模式匹配的自然语言理解系统STUDENT。系统能理解和求解像下面这样的中学代数题: If the number of customers Tom gets is twice the square of 20 percent of the number of advertisements he runs,and the number of advertisements he runs is 45, what is the number of customers Tom gets? (汤姆招来的顾客数是他所做广告数的百分之二十的平方的两倍,已知他所做的广告数是45,问汤姆招来的顾客数是多少?) STUDENT用来识别输入句子的关键词模式如: (WHAT ARE * AND *) (WHAT IS *) (HOW MANY *1 IS *) (HOW MANY * DO * HAVE) (HOW MANY * DOES * HAVE) (FIND *) (*(*1/VERB)* AS MANY * AS *(*1/VERB)*) (FIND * AND *) (* IS MULTIPLIED BY *) (* IS DEVIDED BY *) (* IS *) (*(*1/VERB),*1*) 符号"*"可以同任意长的一个词串相匹配,"*1"只能同一个词匹配,而"(*1/VERB)表示被匹配的元素必须是一个动词。 STUDENT首先把输入文本分割成若干核心语句,每个核心语句对应于一个恒等式,以便同那些事先存储在系统中的关键词模式进行匹配。于是经过分割处理后的输入文本具有如下形式: ((The number of customers Tom gets is twice the square of 20 percent of the number of advertisements he runs) (the number of advertisements he runs is 45) (unknown is the number of customers Tom gets)) 接着,系统把上述核心语句分别翻译成如下所示的LISP等式: ((EQUAL (THE NUMBER OF CHSTOMERS TOM GETS) (TIMES 2.0 (SQUARE(TIMES 0.2 (THE NUMBER OF ADS HE RUNS))))) (EQUAL(THE NUMBER OF ADS HE RUNS)45) (EQUAL(UNKNOWN) (THE NUMBER OF CUSTOMERS TOM GETS))) 最后,STUENT调用SOLVE模块来处理这个代数方程组和待求的未知量。如果SOLVE失败,STUDENT便调用某些启发式信息,例如扩充成语,把两个原先"略有区别"的变量合并,或寻找事先储存在REMEMBER模块中的专门知识,如: (FEET IS THE PLURAL OF FOOT) FEET(英尺)是FOOT的复数 (ONE HALF ALWAYS MEANS.5) 一半通常意味着0.5 (DISTANCE EQUALS SPEED TIMES TIME) 距离等于速度乘时间 (ONE FOOT EQUALS l2 INCHES) 一英尺等于12英寸 如果所有这些办法都未能奏效,STUDENT将请求用户提供额外的信息。 STUDENT最终利用回答模式: (<变量>IS<值) 来生成代数习题的答案,本例的回答是: (THE NUMBER OF CUSTOMERS TOM GETS IS 162)。 STUDENT依靠简单的模式匹配技术,加上一些精心设计的启发式信息,使得系统在分析中学代数的文字题时表现杰出。 |