专利名称::基于提问的学习方法和系统的制作方法
技术领域:
:本发明大致来说涉及教育领域,具体而言,涉及基于提问的计算机学习。
背景技术:
:由于提问能使我们更好地理解主题内容,所以它是学习中的一个重要方面。与象海绵吸水那样的被动式学习相反,基于提问的主动式学习能够加深理解并有助于记忆。但是,如果一个人师从于计算机系统,则与计算机作一问一答的对话就成了非分之想。提问不仅使我们将注意力集中到主题内容上,而且还弥补了我们理解上的偏差。当我们师从于一位教师时,一般是不可能理解他讲授的所有内容的。随着不理解的东西增加,我们很快就会开始跟不上主题内容,并且对其的兴趣也随之减弱。同样,当我们阅读一本人物繁多的书籍时,如果对他们的名字混淆不清,那么也就失去了阅读下去的兴趣。在这些例子中,通过提问弥补理解上的偏差,可以重新激发起我们对主题内容或书籍的兴趣。用户有关主题内容的问题也表明了其对该主题内容的理解程度。如果用户对某一方面反复地提问题,则说明此方面并非其强项。许多教师认识到提问的重要性,将提问纳入他们的教学之中。其中一个最著名的教师是苏格拉底,他甚至将提问作为其激发思考和教学的主要手段。但是,当采用计算机教学时,用户无法以向教师提问的方式向计算机提问。借助计算机学习有其一定的优点。计算机能使用户按照自己的进度学习。在30分钟的一节课内,教师一般不会仅仅为了向一个学生阐明所讲内容而耽搁其课程。如果学生的理解水平不一,则教师不得不将一些学生甩在后面。当在一个教室内向具有不同文化背景和理解程度的学生讲授时,这种困难局面是很普遍的。计算机可以部分解决这类问题。如果学生由计算机教学,那么他可以控制计算机,来按照自己的进度学习。但是,计算机教学也有其自身的缺陷。当学生需要一个问题的答案时,由于计算机无法理解学生的问题,所以产生了难题。对问题作出响应的计算机是有的。有一种系统在许多图书馆内被用于查找图书。用户可以向系统输入图书的搜索请求。但是与用户通过提问学习一个主题内容相比,该系统还是很初级的。另一种对问题作出响应的系统称作Elisa。它对问题作出响应,并试图仿真精神病医生。用户将问题输入Elisa,Elisa将输入的问题进行改换,以响应用户。例如,用户输入“我感觉很糟糕。”。Elisa也许会问,“您为何感到糟糕?”系统让用户说话,并假定过后用户会感到好受些。系统的目标不是理解用户,而是鼓励用户讲出自己的难题。还有对用计算机语言写成的问题作出响应的系统。在这种系统中,用户将其问题重新程式化为程序以访问和处理来自数据库的信息。不熟悉编程语言的人就无法从这些系统获得答案。显而易见,人们需要一种方法和系统,它能够通过响应用户的问题来教授主题内容。
发明内容本发明是一种可以根据用户的问题来教授主题内容的方法和系统。它与通过被动吸收材料的学习方法不同。在本发明中,用户设定学习进度,控制学习过程,并可以通过提问进行学习。在一个实施例中,系统生成学习材料,向用户介绍主题内容。在研究了所提供的材料之后,用户可以开始提问。系统针对每个问题产生答案,并提供给用户。系统还将问题与用户先前输入的一个或多个问题比较。比较结果确定了用户对该主题内容的理解程度。如果比较结果表明他在某一领域比较薄弱,则系统可以提供有关这些领域的详细的学习材料。系统还存储刚刚提问的问题,以便与用户将来可能提问的问题作比较。一般情况下,用户不会只提一个问题就不再提问了。他可能会提一连串的问题以便能理解主题内容。在系统根据其理解程度来对其问题推出响应之后,系统可以向他提供更多的学习材料。这个过程可以随用户提问更多的问题不断重复直到用户理解了主题内容为止。在另一实施例中,用户可以利用该系统来弥补其对主题内容理解上的偏差。当他通过计算机学习主题内容时,他遇到了不理解或已经忘记的领域。该实施例可以使其获取这些领域中的问题的答案。通过以下结合附图对本发明各原则和实例的详细说明可以进一步理解本发明的其它方面和优点。附图的简要说明图1示出了本发明的一个实施例。图2示出了本发明的答案生成器的一个实施例。图3A-B示出了实现本发明的一个实施例的物理单元。图4示出了本发明分层结构的一部分。图5示出了实现本发明的一个实施例。图6示出了图2所示的实施例所采取的一系列步骤。图7示出了本发明内的预定义无上下文语法结构。图8A-B示出了本发明中应用于名词的语义规则的一些实例。图9示出了本发明中应用于无助动词动词的语义规则的一个实例。图10示出了本发明中应用于形容词的语义规则的一些实例。图11示出了本发明中解决模糊问题的不同途径。图12示出了本发明的答案生成器的另一实施例。图13示出了图12所示实施例所采取的一系列步骤。图14示出了本发明中弥补理解上的偏差的一系列步骤。所有附图中相同的单元采用图1-14中相同的标号。以下参照图1-14,描述本发明的实施例。但是本领域的技术人员很容易理解的是,以下结合这些附图的详细描述是用于说明的,本发明并不局限于这些有限的实施例。实施发明的较佳方法图1示出了本发明系统50的一个实施例。当用户开始学习一个主题内容时,学习材料生成器52利用来自数据库106的信息来生成入门性的学习材料。显示器120显示这些材料。在研究了所显示的材料之后,用户可能需要提问。他通过输入设备56将问题输入到系统50。答案生成器100检索问题,并根据来自数据库106的信息和一组规则64生成答案。显示器120随后将答案提供给用户。问题比较器60还可以将问题与用户先前提问的一个或多个问题作比较。这些问题被存储在数据库106内。比较结果确定了用户对主题内容的理解程度。如果比较结果表明他在某一领域比较薄弱,则学习材料生成器52将从数据库106检索有关这些领域的学习材料。数据库106还存储刚刚提问的问题,以供将来比较之用。图2示出了答案生成器100的一个实施例,该答案生成器回答用日常生活语言提问的自然语言问题。在本发明中,问题被定义为需要答案的问询,而答案被定义为满足问询的陈述。诸如键盘、鼠标或语音识别系统之类的输入设备接收自然语言问题。随后语法结构分析器102根据预定义的无上下文语法结构对问题的语法结构进行分析,将问题分解为语法单元。分析器102利用一组语法规则104和来自数据库106的数据来完成任务。随后编程步骤生成器108根据各单元自动生成一条或多条指令。生成器108利用一组语义规则110和来自数据库106的数据来完成任务。指令流向执行指令的编程步骤执行器112。生成和执行的指令可能不止一组。在至少有一组指令的情况下,当执行该指令时,它查询和处理来自数据库106的数据以生成问题的答案。诸如监视器、打印机或语音合成器之类作为输出设备的显示器120向系统用户提供答案。图3A示出了实施本发明的一个实施例的物理实体150,比较好的是在软件和硬件中。实体150包括服务器计算机152和多个客户计算机诸如154,它们可以是个人计算机。每台客户计算机通过专用通信链路或计算机网络156与服务器计算机152通信。图3B示出了客户计算机154的一个实施例。它一般包括连接多个诸如处理单元160之类的许多单元的总线159、主存储器162、I/O控制器164、外设控制器166、图形适配器168、电路板180和网络接口适配器170。I/O控制器164与诸如硬盘驱动器172和软盘驱动器174之类的单元相连。外设控制器166可以连接一个或多个外设单元,例如键盘176和鼠标182。图形适配器168可以连接监视器178。电路板180可以与音频信号181耦合;网络接口适配器170可以与网络120相连,它可以是国际互联网、内部网、Web或其它形成的网络。处理单元160可以是专用芯片。本发明的不同元件可以位于不同的物理单元内。例如输入设备56、显示器120语法结构分析器102和语法规则可以位于客户计算机内;而学习材料生成器52、问题比较器60、数据库106、编程步骤生成器108和程序执行器112可以驻留在服务器计算机内。在另一实施例内,数据库位于服务器计算机内;输入设备56、学习材料生成器52、问题比较器60、语法结构分析器102、编程步骤生成器108、程序执行器112和规则驻留在客户计算机内。而在另一实施例内,实体50位于客户计算机内。在本发明中,主题内容可宽可窄。在一个实施例中,主题内容可以覆盖数学或历史,或者可以覆盖JAVA编程语言。在另一实施例中,主题内容覆盖了汽车信息,例如ToyotaCarmy,用户想在购买前对商品作一番了解。而在另一实施例中,主题内容覆盖了某一地理区域内的房地产市场,并且用户同样又想在买房前了解一下市场。举例来说,主题内容是美国历史。历史事实和观点按照时间顺序排列。它开始于对1776年以前大英帝国的介绍,随后其它信息按照时间顺序排列。在一个实施例中,发生于某一时间单位内(例如一周)的事件作为一个条目归类在一起。条目可以是分层结构的。可以是日条目、周条目、月条目和年条目。有可能在一段较长的时期内都无重要的事件发生,这使得只有月条目或年条目。再举例来说,主题内容是数学,它按照主标题、次标题和行条目分类数学下的主标题微积分几何学三角学…高中代数高中代数下的次标题小数多项式线性方程式二次方程式…整数整数下的行条目加法&减法(Int+/-)乘法(Int*)除法质数因式分解公共除数分数分数下的行条目带相同分母的加法&减法(Frt+/-w/CommDenom)带整数的加法&减法(Frt+/-,w/Int)不带相同分母的加法&减法(Frt+/-w/oCommDenom)带整数的乘法&除法(Frt*,/w/Int)带分数的乘法&除法(Frt*,/)复分数分数简约(FrtReduction)比率和比例…主标题、次标题和行条目构成示出它们之间关系和相对难点的分层树。每个行条目还包含从1~10的多个难度层次。图4示出了分数下行条目的这种分层结构的一部分。对于图中的每条路径,括号内有数字和字母。数字表示最小难度层次,而字母表示用户有资格进入下一行条目学习之前必须达到的最低程度。例如在用户有资格进入Frt+/-w/CommDenom行条目的学习之前必须至少达到8级难度层次和Int+/-的行条目的B级程度。产生各行条目每级难度层次的学习材料对于本领域内的那些技术人员是显而易见的。在一个实施例中,系统50进一步包括访问门62。当用户想要学习主题内容时,他通过输入设备56将其姓名和密码,连同所要学习的主题名称输入到访问门62。访问门62访问数据库以确定用户以前是否使用过系统或者是否使用系统学习过该主题内容。如果用户以前没有使用系统学习过该主题内容,则访问门62会要求学习材料生成器52为用户检索关于该主题内容的任何入门性学习材料。在另一实施例中,主题内容没有入门性材料,用户通过输入问题开始学习过程。而在另一实施例中,数据库106存储许多以前的用户提过的问题,并且问题比较器60比较被提问的问题以确定是否是普遍提问的问题。以下将描述比较过程。术语“普遍提问的”可以定义为50%以上以前的用户提问的问题或由其它衡量制度来定义。学习材料生成器52检索一组回答普遍提问的入门性问题的学习材料并提供给用户。以下将描述答案生成过程。对于主题内容的不同部分,可能又有一个或更多的被别人普遍提问的问题。当用户开始学习这些主题内容的领域时,可以提供给用户这些问题的答案。在学习了入门性材料之后,用户可以通过将问题输入系统来开始提问。每个问题可以通过语音识别输入设备口头输入系统,或者通过键盘或其它类型的输入设备56输入到系统50。图5示出了实现本发明的一个实施例190。首先答案生成器100检索输入的问题(步骤192)并产生该问题的答案(步骤194)。随后,显示器120显示问题的答案(步骤196),而比较器60将问题与以前用户输入的一个或更多的问题作比较,以确定用户对该主题内容的理解程度(步骤198)。比较步骤(198)和显示步骤(196)的顺序可以被改变,或者两个步骤可以同时进行。在一个实施例中,用户刚刚提问的问题连同其个人身份一起被存储在数据库106内。在另一实施例中,数据库还存储时间戳记,用来表示用户提问的时间。生成被输入问题的答案(步骤194)的方法有许多种。以下先描述回答自然语言问题,这些问题在语法上没有上下文关系,然后再描述其它类型问题的回答。自然语言问题可以用英语或其它语言来表述,例如法语。自然语言问题的实例如下谁是第一任总统?人权法案是什么?得克萨斯首府在哪里?国内战争的直接起因是什么?尼克松总统为什么辞职?谁是第三任总统?约翰.肯尼迪之后谁任总统?莱顿.约翰逊总统是什么时候去世的?尼克松总统何时出生?sin(x+4)相对x的导数是什么?为什么在证明步骤4中采用Δ?不以自然语言为基础的陈述在日常语言中并不普遍使用。例如ForKeyinKey-of(Table)doDowhilex>2在语法上无上下文关系的问题中,其语法不依赖于上下文。问题中的每个单词都拥有自己的语法含义,并且无需其它单词来定义其语法含义。因此,问题的语法结构不依赖于上下文。值得指出的是,“单词”可包括“多个相邻的单词”。在这种情况下,术语包含一个以上的单词,但是只有一个语法含义,例如介词“withrespectto”。问题包含一个或多个语法成分。语法成分带有一个或多个语法含义,它们由一组下面将要描述的语法规则来定义。例如,单词“总统”是一个具有语法含义的名词。所以单词“总统”是一个语法成分。本发明包括一个数据库,它可以是关系数据库、目标数据库或其它形式的数据库。数据库可以驻留在客户计算机或服务器计算机的存储介质内,或者一部分驻留在客户计算机内而另一部分驻留在服务器计算机内。在一个实施例中,数据库包含多张表。表可以作为按照某种共同特征分类的一组信息或数据来处理。每张表内的数据可以进一步划分为不同的区域,并且每个区域用一个属性表示,属性等同于比表内所有数据范围更窄的一组数据的标识符。在本发明中,除了表的范围比属性更宽以外,它们具有类似的功能。如下所述,在某些实例中表是二维的。数据库中的某些值或数据可以是唯一的。例如,如果一个值是个人社会安全号号,则该值是唯一的。这种值被称为关键值,其相应的属性被称为关键属性。值得指出的是,表可以具有一个或多个关键属性,并且一个关键属性可以依次由多个属性组成。数据库106的一个实施例包含了语法表114、一张或多张相关标题表116和两张语义表118A和118B。在通常意义下,语法表114确定问题中每个单词的语法含义,例如单词是名词还是动词。每张相关标题表116将与标题相关的数据以特定的格式归类在一起。语义表分为依赖于标题的语义表118A和不依赖于标题的语义表118B,它们定义了每个单词的语义含义,例如单词是相关标题表中的算法还是数据。语法表114定义了自然语言问题中所用单词的语法含义。如果被输入系统的问题仅局限于一个主题内容,例如历史,则语法表将包含该主题内容的单词和系统用户提问时普遍使用的单词。表中每个单词可以用下列格式来定义<prelisting-type="program-listing"><![CDATA[CREATETABLEGrammatical(wordCharacterstringNOTNULL,∥thewordgrammatical-meaningCharacterstringNOTNULL,∥e.g.“Examiner”∥has“noun”asitsgrammaticalmeaning)]]></pre>每张标题相关表将涉及标题的数据按照特定的格式组合起来。例如一张表包含与美国总统有关的所述数据,而另一张表包含与美国第一夫人有关的所有数据。表可以是二维的,并且包含多列和多行。一列或一行内的所有数据一般具有一个或多个共同的特征。例如一行包含了表示由总统批准的所有方案的数据。对于二维表,行内的数据可以具有一个特征,列内的数据可以具有另一个特征。例如一列内的数据表示总统的身高,而一行内的数据涉及某一位总统;以下描述了行内数据的一个例子<prelisting-type="program-listing"><![CDATA[CREATETABLEPRESIDENTAS(NameCharacterKEY,∥PresidentName-akeyattributePositionCharacterstring,∥President,VicePresidentStart_YearInteger,∥FirstYearofPresidencyEnd_YearInteger,∥LastYearofPresidencyBorn_dateDate,∥DateofBirthDeath_DateDate,∥Dateofdeath)]]></pre>还有一种表结构词典,它定义了相关标题表排列某数据的方式。该词典一般不被视为数据库的一部分。它不包含标题相关数据,但是,它包含数据库内标题相关表的结构。许多数据库管理系统根据定义标题相关表的编程声明(例如,类SQL语言中的CREAT语句)自动生成表结构词典。例如,表结构词典通过指明第一条目表示总统姓名,第二条目表示职位等来定义上述总统表中的数据结构。因此词典包含了表的名称(表名)、表的属性的名称(属性名)和它们相应的数据类型。问题中的单词可能需要一种或两种语义表。不依赖标题内容的语义表118B定义了单词代表的是标题相关表中的算法还是数据。这种表可以被定义如下<prelisting-type="program-listing"><![CDATA[CREATETABLETopic_Independent_Semantic(wordNOTNULL,∥thewordsemantics,∥Indicatesifthewordreferstodatain∥atopic-relatedtable,analgorothmetc.Ifthe∥wordismappedtoanalgorithm,that∥algorithmwillalsobeidentified,aswillbe∥furtherexplainedbelow.synonym,∥Awordmighthavesynonyms,aswillbe∥furtherexplainedbelow.)]]></pre>含义类似的单词被归类在一起并且用其中一个单词表示为该组单词的同义词。如果单词无含义类似的其它单词,则同义词即是其本身。许多单词不涉及算法。它们对应相关标题表中的数据。依赖于标题的语义表118A通过使这些单词与相关标题表中数据匹配来表示它们的语义含义。例如,应用于总统表的形容词“第一的”可以在就职数据属性下来操作数据;另一方面,应用于第一夫人表的形容词“第一的”可以在去世属性数据下来操作数据。这种依赖于标题的表118A可以被定义如下<prelisting-type="program-listing"><![CDATA[CREATETABLETopic_Dependent_Semantic(Table_NameNOTNULL,∥ForatablewithnameTable_NameWho_Attribute,∥Theattributeassociatedwith‘who’When_Attribute,∥Theattributenameassociatedwith‘when’{i-pronoun}_Attribute,∥Theattributeassocaitedwiththe∥{i-pronoun}.Thesymbol{}denotethe∥wordircontains.Here,thewordis∥ani-pronoun.…{Adj}_Attribute,∥Theattributeassociatedwiththeadjective{adj}.Inthis∥example,thewordisanadjective.{Noun}_Attribute,∥Attributenameassociatedwiththenoun{noun}.Certain∥nounsmayreferinsteadtoanalgorithm,suchas“sum.”)]]></pre>在一个实施例中,语法分析器102、语法规则104和语法表114在客户计算机内。编程步骤生成器108、语义规则110、语义表118和表结构词典位于中间件装置内,它可以是Web服务器。编程步骤执行器112与相关标题表在后台服务器内,它可以是数据库服务器。一个实施例包含了对带有语义表118的数据结构进行编码的计算机可读介质。另一实施例包含了对带有语义表118和相关标题表116的数据结构进行编码的计算机可读介质。而另一实施例包含了对带有语义表118和语法表114的数据结构进行编码的计算机可读介质。而进一步的实施例包含了对带有语法表114、相关标题表116和语义表118的数据结构进行编码的计算机可读介质。图6示出了一组实现本发明的一个实施例的步骤200。自然语言问题被输入到答案生成器100。系统分析问题的语法结构(步骤202)从而根据预定义的与上下文无关的语法结构将问题分解为语法成分。该任务采用一组语法规则104和语法表114。随后,系统利用一组语义规则110连同一张或两张语义表118将至少一个成分变换为一条或多条指令(步骤206)。接着,执行一个或多个步骤(步骤208),来访问和处理来自一张或多张相关标题表的数据,从而生成问题的答案。在另一实施例中,编程步骤生成器108利用语义规则110连同一张或两张语义表将问题的所有语法成分变换为指令。随后执行器112执行所有的步骤来访问和处理来自一张或多张相关标题表的数据,以生成问题的答案。语法结构分析器在一个实施例中,分析器102扫描问题,以提取问题中的每个单词。随后分析器102将每个提取的单词映射至用于识别其语法含义的语法表114。例如,单词“克林顿”被语法表识别为一个专有名词;而单词“太阳”被识别为名词。在建立每个单词的语法含义之后,分析器102利用一组语法规则根据预定义的与上下文无关的语法结构建立起问题的语法成分。对于多个单词,它们的语法含义取决于其相邻的单词。在一个实施例中,分析器102将每个单词与其邻近的单词组合以确定其语法成分。例如如果在分析语法含义时单词是“with”,则分析器102将识别其邻接词。如果其邻近的单词是“respectto”,则三个单词组合在一起并被视其为一个介词。因此为了确定单词的语法含义,分析器将识别该单词和随后的多个单词,例如随后的两个单词。分析器102将所识别的单词作为一个整体来分析。如果分析器102无法识别该单词序列的语法含义,则它从序列中去除最后一个单词然后再对其进行分析。该过程不断被重复直到找到语法含义为止或者直到没有更多的单词为止。只要分析器106识别了语法含义,该单词或单词序列就被视为一个整体。在一个实施例中,图7和以下示出了预定义与上下文无关的语法结构<Question>=<i-pronoun><aux-verb><noun-phrase>[<verb-phrase>]这里符号<>表示里面的是具有语法含义的元符号;元符号不在语法表内。符号[]表示括号内的是可选项。<I-pronoun>表示用于提问的疑问代词,它可以是what,when,where,who,whom,whose,which和why中的一个。<Aux-verb>表示助动词,它可以是动词“tobe”或“do”的任何形式。<Noun-phrase>定义为<group-of-nouns>[<prepositional-noun-phrase>]这里<group-of-nouns>定义为[<modify-article>]<adjective>*<one-or-more-nouns>;符号*表示零或大于零的数;<modify-article>定义为修饰冠词,包括a,an,the,this,these和those;以及<one-or-more-nouns>表示一个或多个名词;以及[<prepositional-noun-phrase>]定义为<preposition><noun-phrase><Verb-phrase>表示非助动词,并定义为<non-aux-verb>[<prepositional-noun-phrase]<Preposition>表示语法表中被定义的介词。<Non-aux-verb>表示语法表中被定义的动词,它不是<aux-verb>。<Noun>表示语法表中被定义的名词。<Adjective>表示语法表中被定义的形容词。预定义结构只是阐述本发明的一个例子。也可以应用其它与上下文无关的语法结构。对于本领域内技术人员来说生成不同的与上下文无关的语法结构应该是显而易见的。在本发明中,填入元符号结构的一个单词或一组单词是一个语法成分。例如词组“withrespecttox”是一个语法成分,其语法含义是介词-名词-词组。在本发明中,语法规则和预定义语法结构联系在一起。一旦设定规则,则结构也被确定。同样,一旦结构确定,就可以找到一组规则。例如,根据预定义结构,一条语法规则是“介词名词词组前面的名词组是名词词组”。语法表定义了每个单词的语法含义。在一个实施例中,表是语法规则的一部分。在另一实施例中,所有定义每个单词的语法含义的语法规则与其余的语法规则区分开来,并归类在一起建立语法表114。根据预定义语法结构将问题分解为语法成分的有关分析问题的实例有许多1.Whatisthederivativeofsin(x+4)withrespecttox?从右边开始,(x)是名词所以,(x)是名词组所以,(x)是名词短语所以,(withrespecttox)是介词-名词-短语(sin(x+4))是名词所以,(sin(x+4))是名词组所以,(sin(x+4)withrespecttox)是<group-of-nouns><prepositional-noun-phrase>所以,(sin(x+4)withrespecttox)是名词短语所以,(ofsin(x+4)withrespecttox)是介词名词短语(derivative)是名词(the)是修饰冠词所以,(thederivative)是名词组所以,(thederivativeofsin(x+4)withrespecttox)是<group-of-nouns><prepositional-noun-phrase>(is)是助动词(what)是疑问代词因此,问题的结构是<i-pronoun><aux-verb><group-of-noun><prepositional-noun-phrase>2.Whyisdeltausedinstep4oftheproof?从右边开始,(proof)是名词(the)是修饰冠词所以,(theproof)是名词组所以,(theproof)是名词短语所以,(oftheproof)是介词-名词-短语(4)是名词(step)是名词所以,(step4)是名词组所以,(step4oftheproof)是<group-of-noun><prepositional-noun-phrase>所以,(step4oftheproof)是名词短语所以,(instep4oftheproof)是是介词-名词-短语(used)是由语法表定义的动词所以,(usedinstep4oftheproof)是动词短语(delta)是名词所以,(delta)是名词组所以,(delta)是名词短语(is)是助动词(why)是疑问代词因此,问题的结构是<i-pronoun><aux-verb><noun-phrase><verb-phrase>3.WhydidPresidentNixonresign?从右边开始,(resign)是动词所以,(resign)是动词短语(Nixon)是名词(President)是名词(PresidentNixon)是一个或一个以上的名词所以,(PresidentNixon)是名词短语(did)是助动词(why)是疑问代词因此,问题的结构是<i-pronoun><aux-verb><noun-phrase><verb-phrase>许多问题不可以根据预定义的与上下文无关的语法结构来被分解。在此说明书中,这些问题被视为含义模糊的问题,并且将借助来说明书下面将要描述的方法来对应进行分析。如果在系统内存储有不止一个这种预定义与上下文无关的语法结构,则将根据每种结构来逐个分解被输入的问题。只有根据这样的结构,才能成功地对问题来被分解。如果问题将无法根据所有预定义与上下文无关的语法结构进行分解,则该问题被视为是模糊不清的问题。编程步骤生成器编程步骤生成器108利用一组语义规则和一张或两张语义表来变换问题的至少一个语法成分以生成一组指令。语义规则和语义表依赖于预定义与上下文无关的语法结构,而分解过程止基于这种结构。在一个实施例中,语义规则被嵌入语义表内。在通常情况下,生成器108将问题中的不同语法成分导向相关标题表内的算法或数据。为了有助于阐述本发明,创建了下列多个函数·Keys-Of(Table)该函数提取所识别表内的所有关键属性。·Attributes-Of(Table)该函数提取所识别表内的所有属性名。·Attribute-Names({adjective},Table)当{abjective}应用于表时,该函数识别一个或多个属性。·Attribute-Names({noum},Table)当{noun}应用于表时,该函数识别一个或多个属性。·Attribute-Name({i-pronoun},Table)当{i-pronoun}应用于表时,该函数识别属性。·Tables-Of({propernoun})该函数识别包含作为关键值的{propernoun}的一张或多张表。它可以由下列程序导出<prelisting-type="program-listing"><![CDATA[T-Name=“”;forTablein{allTables}∥{allTables}isalistoftopic-relatedtablesdoforKeyinKeys-Of(Table)doifanyvalueoftheattributeKeyintheTablecontains{propernoun}thenT-Names=T-Names+TableendifendforendforreturnT-Names·Synonym({word})]]></pre>该函数识别对应于单词的同义词。该同义词可以在不依赖标题的语义表内找到。对于本领域内编程技术人员来说,创建上述函数的方法应该是显而易见的。根据多条语义规则,编程步骤生成器108根据问题中的语法成分来生成指令。以下示出了为阐述本发明而生成的不同指令的例子。虽然同样可以采用其它编程语言,但是生成的指令在此采用类SQL、类LISP或类C语言。专有名词问题中的语法成分可以是专有名词,它表明其具有专有名词的语法含义。一组语义规则就是,编程步骤生成器108将专有名词变换为指令,以选择一张或多张相关标题表,并随后,将问题中的其它语法成分变换为指令,以选择和操作表中的数据来回答问题。编程步骤生成器108利用依赖于标题的语义表118A首先检索专有名词作为属性的表。随后,如在依赖于标题的语义表中所示,识别出这些表中所有的关键属性,并且每一个都与专有名词匹配。通过保留问题中的语法成分,任何与专有名词匹配的关键属性的表被选作其它操作。专有名词可以由一个以上单词组成,例如“BillofRight”。专有名词可以是小写单词,例如“moon”。在一个例子中,相应的指令如下所述<prelisting-type="program-listing"><![CDATA[forTableinTable-Of({propernoun})doforKeyinKeys-Of(Table)dox=(SELECT…FROMTableWHEREKeyMATCH{propernoun})}∥Theaboveclausehasthemeaningof“wherethekeyattribute∥inthetablematchesthepropernoun”ifxisvalidthendone∥ItheSELECTfunctionsuccessfullyidentifiesoneormoreattributes,∥xisvalid.endforendfor]]></pre>通用名词通用名词是问题中的一种语法成分。编程步骤生成器108可将通用名词变换为指令以选择相关标题表、属性名、属性名的同义词、属性下的数据,或算法。如图8A所示,如果名词是如依赖于标题的语义表118A所示的相关标题表的名称,则编程步骤生成器将名词变换为指令以选择该相关标题表(步骤252),并根据需要,变换问题中的其它成分以识别表中的数据,并操作它们(步骤254)。如果名词表示如依赖于标题的语义表118A所示的属性名或属性名的同义词,则编程步骤生成器根据名词来搜索和识别属性。生成的指令,例如可以是将SELECT语句修改如下<prelisting-type="program-listing"><![CDATA[forAttributeinAttribute-Names({noun},Table)doSELECTAttributefromTable…endfor]]></pre>在识别出所有相关属性之后,其中的数据被检索出来,以便由问题的其它部分作进一步处理,从而生成答案。如果名词表示属性下的数据,则编程步骤生成器识别数据以及相应的属性和表。生成的指令,例如可以是(1)识别函数Tables-Of({noun})中的每张表;(2)对于每张被识别的表,函数Attribute-Names({noun})返回该表内包含{noun}的相应的属性;以及(3)问题的其余部分在每种属性下操作信息,以生成问题的答案。以下是实现这类目标的一组指令<prelisting-type="program-listing"><![CDATA[forTableinTables-Of({{noun})do…forAttributeinAttribute-Names({noun},Table)doSELECTFromTableWHEREAttribute={noun}…endfor]]></pre>endfor如图8B所示,编程步骤生成器可以识别对应于名词的算法(步骤262);算法随后应用于问题内除通用名词以外的由语法成分选择的数据(步骤264)。例如名词“sum”表示累加的结果;名词“count”表示计算结果的基数;并且数学中的名词“product”表示结果相乘。不依赖标题的语义表118B可以指向获得算法的位置。名词组如果问题包含链接在一起的一组名词,例如X1X2X3…Xn,则X1至Xn-1可以修饰称为基本名词的最后一个名词Xn。换句话说,编程步骤生成器将基本名词作为通用名词或专有名词进行操作,而其余的名词X1至Xn-1进一步操作由基本名词选择的数据/表。非助动词非助动词可以是一种语法成分。它涉及一个或多个具有多个属性的事件或动作;并且可以包含具有类似含义的单词。一种方法是识别具有类似含义的动词。随后问题中的其它成分识别所识别动词的属性内的数据,以回答问题。动词可以涉及许多不同的事件。例如动词“提名”,它可以是布什总统被提名为总统的一个事件,也可以是克林顿总统被提名为总统的另一事件。但是,一个事件涉及一个动词。事件的属性可以包含一个执行事件的主动方,例如提名总统的政党。一般情况下动词前面的名词词组识别出主动方。如果动词是及物动词,则事件可以包含,由事件作用的目标方,例如被提名的总统。每个事件包含一个从开始到结束之间的时期。例如,如果事件是“行走”,则该时期始于脚掌位置从接触地面变为离开地面,然后结束于脚掌再次接触地面。非助动词可以归类在一个事件表内,该表是具有事件标题内容的相关标题表。以下是表内一个事件的实例<prelisting-type="program-listing"><![CDATA[CREATETABLEEVENT(Verb_wordCharacterStringNOTNULL,∥TheverbassociateswiththeeventSubject_AgentCharacterString,∥AgentnameperformingtheeventObject_AgentCharacterString,∥Agentnameacteduponbythe∥eventStart_timeTime,∥StartingtimeofeventEnd_TimeTime,∥EndingtimeofeventDescriptionCharacterString,∥DescribestheeventKeyIdInteger∥Uniquenumberidentifyingtheevent)]]></pre>主动方、目标方等是与事件相关的涉及动词_单词的属性。可能存在具有与问题中的非助动词含义类似的非助动词。这些动词可以由不依赖标题的语义表内的同义词来识别。例如动词breath和inhale具有相似的含义。如图9所示,编程步骤生成器108将问题中的非助动词变换为一条或多条指令,它们选择具有事件表内的属性的一个或多个动词(步骤300)。一个或多个单词具有与非助动词相似的含义。随后,问题中的其它成分识别属性中的数据,以回答问题(步骤302)。所选择的动词可以被输入到如下的临时表或视图(数据库术语)<prelisting-type="program-listing"><![CDATA[CREATEVIEWVerb_View({verb})As∥Viewisalogicaltablethatiscreatedonlywhenitisneeded.∥Alleventsmatching{verb}aregroupedfromtheeventtable∥toformtheview.SELECT*FROMEVENT∥here*denotesalloftheattributesWHERESynonym({verb")=Verb_word;]]></pre>所选动词的属性也被识别出。随后,编程步骤生成器108根据问题中的其它成分,生成附加的指令,以识别所选属性中的数据,从而回答问题(步骤302)。事件可以是相关的。两个事件可以形成先后顺序关系,一个事件在前另一个事件在后,例如吃与喝。两个事件可以构成因果关系,例如刹车和停车,刹车事件导致停车事件。许多小事件可以形成大事件,大事件包含了这些小事件;这导致形成包容关系。事件由于涉及同一主动方还可以相关;并且事件由于涉及同一目标方而可以相关。事件关系表描述了事件之间的关系。它可以具有如下格式<prelisting-type="program-listing"><![CDATA[CREATETABLEEVENT_RELATIONSHIP(KeyId1Integer,∥KeyIdofaneventKeyId2Integer,∥KeyIdofanothereventRelationshipCharacterString,∥Relationship,suchassequential,consequential,containmentetc.)]]></pre>疑问代词根据问题中的疑问代词,编程步骤生成器108生成一条或多条指令,以选择一张或多张表内的一个或多个属性。这些表已经由问题中疑问代词以外的语法成分选定。函数Attribute-Name({i-pronoun},Table)产生对应于{i-pronoun}的属性名。一种产生对应于{i-pronoun}的类SQL指令的方式是将SELECT语句修改如下SELECTAttribute-Name({i-pronoun),Table)FROMTable限定词一组关于限定词的语义规则的实例如下如果限定词是“a”或“an”,则从前面的查询内选择结果。如果限定词是“some”,则从前面的查询中选择一个以上的结果。如果前面的查询只产生一个结果,则选择该结果。如果限定词是“all”,则从前面的查询中选择所有结果。如果限定词是“the”,则用下面将采用实例进行阐述的DISITINCT来修饰下列的SELECT函数。助动词助动词连同其直接的名词词组或非助动词确定了答案是单数还是复数。形容词问题的一个语法成分可以是形容词。如图10所示,根据该形容词,编程步骤生成器识别出属性值或识别出算法。问题中形容词以外的语法成分已经选择了一张或多张相关标题表。如不依赖标题的语义表所示,形容词可以识别属性(步骤350)。函数Attribute-Names({adjective},table)可以检索前面所选的表中的属性。相应的指令可以是<prelisting-type="program-listing"><![CDATA[forAttributeinAttribute-Names({adjective},Table)doSELECT…FROMTableWHEREAttribute={adjective}∥or“Wheretheattributeinthetableisequaltotheadjective.”…endfor]]></pre>例如名词词组为“aredapple”。名词“apple”可以与称为FRUIT的表相关,而Attribute-Names(red,FRUIT)生成属性“color”。形容词“red”被解释为WHEREcolor=“red”如果这种形容词是一个序列,则它们都可以应用于同一张表。WHERE语句将与形容词相连接,例如<prelisting-type="program-listing"><![CDATA[WHEREforAttribute1inAttribute-Names({adjective1},Table)doforAttribute2inAttribute-Names({adjective2},Table)doSELECT…FROMTableWHEREAttribute1={adjective1}andAttribute2={adjective2}endforendfor]]></pre>形容词可以称为与一种算法,该算法由不依赖标题语义表来识别。问题中形容词成分以外的语法成分已经选择了一张或多张相关标题表。如在不依赖标题语义表内所示,形容词识别这些表内的一个或多个属性(步骤352)。随后,算法操作这些属性内的一个或多个数据(步骤354)。例如,形容词是“first”。不依赖标题的语义表指示,该形容词是一种按照升序排列数据列的算法;表还识别出一张或多张相关标题表内一个或多个属性中的数据。对于每个被识别的属性,数据排序之后的第一值就是结果。例如问题是“谁是第一任总统?”所识别的表为总统表。被排序数据的属性为“日期”属性,它识别出每位总统当选的时间。对应于形容词“第一的”的指令可以如下所述<prelisting-type="program-listing"><![CDATA[forAttributeinAttribute-Names(first,Table)doSELECT…FROMTableORDERBYAttributeASC…endfor]]></pre>符号ASC表示升序。同样,如果形容词是“last”,则排序数据的属性是相同的,但是数据按照降序来排列。相应的指令可以如下所示<prelisting-type="program-listing"><![CDATA[forAttributeinAttribute-Names(first,Table)doSELECT…FROMTableORDERBYAttributeDESC…endfor]]></pre>符号DESC表示降序。关于形容词的另一个例子是单词“immediate”。其解释依赖于它修饰的单词。在一个例子中,如果修饰的单词是“行动”,则单词“immediate”的作用与单词“first”一致;如果修饰的单词是“原因”,则单“immediate”的作用与单词“last”一致。形容词可以是一个序列。随后,上述分析按照与形容词出现的相同顺序进行。介词介词可以是一种语法成分。介词可以修饰其前面的名词词组或动词,例如通过不依赖标题的语义表内被识别的算法来对其进行操作。在有些情况下,借助由问题中除介词以外的至少一个语法成分选的一张或多张表,所识别的算法操作一张或多张所选表内的数据或值。在一些其它的情况下,例如,由于介词“of”和“in”的原因,编程步骤生成器处理介词之后而该语法成分之前的语法成分。例如介词“before”可以修饰比较时间的WHERE语句{前一事件的时间}<{后一事件的时间}编程步骤执行器执行器112执行一个语法成分生成的至少一组指令,以至少访问来自数据库的数据,从而生成问题的答案(如果有答案)。在一个实施例中,在编程步骤生成器108生成一组指令之后,编程步骤执行器112就执行它们。这组指令可以由一个语法成分来生成。该过程不断重复直到生成所有指令组并经过执行这些指令组,得到问题答案为止。对于至少一组指令,执行器112访问来自由指令识别的一张或多张相关标题表的数据。在另一实施例中,生成了所有的指令,随后程序执行器112运行指令,该指令包括访问来自由指令识别的一张或多张相关标题表的数据,并处理那些数据,以针对自然语言问题来生成答案。在附录中,有许多阐述本发明的指令实例。它们生成不同类型的在语法上与上下文无关的问题的答案。歧义问题在本发明中,语法结构分析器102可以根据预定义的与上下文无关的语法结构来判定自然语言问题无法分解为语法成分。例如,问题的语法成分无法适合预定义的结构。于是,这样问题就被视为是歧义的并且无法生成答案。歧义的原因可以有很多。例如问题可能包含的单词具有非唯一的语法含义,问题包含的单词可能不在语法表内,或者问题的语法结构与预定义的语法结构不同。图11示出了解决歧义的不同途径。语法结构分析器可以判定一个单词可以具有不止一个的语法含义,例如它可以是名词和动词。在一个实施例中,分析器生成每种含义的答案并忽略没有答案的含义(步骤402)。在另一实施例中,分析器向用户提高,以识别正确的语法含义(步骤400)。例如,问题是“WhenwasthePersianGu1fwar?”单词“war”可以是名词或动词。在一个实施例中,分析器提问用户把单词“war”是名词还是动词。根据用户的回答来分析问题。在另一实施例中,分析器生成单词“war”作为动词和名词的两个问题的答案。如果可能,两种答案都被提供给用户。如果语法结构分析器判定问题包含了一个或更多不在语法表中的单词,则在一个实施例中,分析器去除不认识的单词(步骤404)并处理问题中余下的单词。在另一实施例中,分析器要求用户提供一个不同的单词(步骤406)。分析器可以假定单词拼写错误并要求用户予以纠正;分析器可以用语法表中最相似的一个单词或者用最少的与不认识单词不同的特征来代替该不认识单词(步骤408)。分析器随后将匹配的单词提供给用户(步骤410),以确认真是否为正确的单词。可以向用户提供匹配单词的列表以供选择。例如问题是“WhatexactlyaretheBillsofRight?”单词“exactly”是副词并且不在语法表内。单词被丢失并且分析适合语法结构的问题。在另一实例中,问题是“WhatistheBillofRight?”这里的“BillofRight”应该是“BillsofRight”。分析器可以要求用户重新拼写“BillofRight”;或者分析器可以寻找在拼写上最接近不认识项的项并将其识别为“BillsofRight”。所识别的单词被提供给用户以确认拼写是否正确。在本发明中,所输入问题的语法结构可以与系统内一种或多种预定义的与上下文无关的语法结构不同。在一个实施例中,非实质性的语法成分从问题中丢失。如果一个语法成分可以从问题中去除而不改变问题的答案,则它是非实质性的。例如在某些情况下的助动词是非实质性的。解决这个问题的一种途径是,在生成问题的答案时,忽略丢失的语法成分(步骤412)。另一种途径是将丢失的非实质性语法成分加回到问题中,并提供给用户以确认其是否正确。例如,问题是“WhenPresidentNixonresign?”在单词“When”之后,应该有助动词;将这样的单词输入到问题,然后提供给用户供其认可。在另一实施例中,建议用户重新输入问题,并告之以正确的问题结构。一个建议是要求用户根据预定义结构,重新输入问题,例如使用预定义语法结构中的一个疑问代词。为此例如可以引用可接受的疑问代词列表和利用疑问代词的模型问题列表作为实例。另一种建议是识别问题中的名词和非助动词(如果有的话),并要求用户确认他需要知道的所识别单词。随后由用户选择他所需要的单词。在进一步的实施例中,所识别的单词被插入可替换的语法结构中,并且要求用户从推荐的结构列表中选择一种结构。例如问题是“DoyouknowwhenPresidentNixonresign?”假定这个问题不符合预定义的语法结构。用户被建议利用下列疑问代词中的一个来重新输入问题What,when,where,why和who。在另一实施例中,名词和助动词被识别出来,它们是“PresidentNixonresign.”用户被问道“Youwanttoknowabout‘PresidentNixonresign?”而在另一实施例中,所识别的单词被插入下列问题格式中,并且由用户来选择一个,例如WhatdoesPresidentNixonresign?WhendoesPresidentNixonresign?WheredoesPresidentNixonresign?WhydoesPresidentNixonresign?WhodoesPresidentNixonresign?又例如,问题是“IsthereareasonwhyPresidentClintonsenttroopstoBosnia?”假定问题不符合预定义的语法结构。在一个实施例中,用户被建议利用预定义语法结构中的一个疑问代词重新输入问题。在另一实施例中,名词和非助动词“PresidentClinton”、”troops”、“send”和“Bosnia”被识别出来。随后要求用户选择下列问题中的一个或多个DoyouwanttoknowaboutPresidentClinton?Doyouwanttoknowabouttroops?DoyouwanttoknowaboutBosnia?而且答案生成器100可以根据名词和非助动词向用户提供建议以改换原先的问题的表达方法。随后,由用户选择所需的问题。在某些情况下,有些问题在本发明中没有答案。例如语法表不包含问题中的某些实质性的项X。于是,本发明可以返回下列消息Sorry,IdonotknowanythingaboutX.Youmaywanttocheckwithyourinstructor.Ifyouwish,Iwillinformyourinstructoryourquestion.{clickheretoinformyourteacher}如果用户点击指定区域,则其最后一个问题将作为电子邮件被自动发送至能够直接回答用户的教师。该教师可以由用户或用户的监护人事先选定。问题匹配引擎图2所示的实施例可以回答无限数量的问题。图12示出了答案生成器的另一实施例500,它提供了有限数量问题的答案,但是与图2所示的实施例相比生成答案所需的步骤较少。而且答案生成器500可以回答非自然语言的问题和在语法上与上下文有关的问题。在该实施例中,数据库106包括了含有多个问题的问题表。每个问题都有相应的答案。问题匹配引擎529将所输入的问题与数据库中的问题比较。答案检索器539在匹配所输入问题的数据库内检索问题的答案。图13示出了本实施例的一组步骤550。问题匹配引擎529将所输入的问题与数据库106内的问题比比较(步骤552)。如果与其中之一匹配,则答案检索器639检索对应匹配问题的答案(步骤54)。如果表内没有与输入问题匹配的问题,则答案生成器500可以利用在歧义问题部分描述的方法回答问题。在另一实施例中,输入的问题是自然语言问题。匹配引擎529将自然语言问题的语法成分与数据库106内问题的成分比较。进一步的实施例包括实质性成分提取器,它从输入的自然语言问题中提取实质性成分。只有实质性成分与预先存储的包含实质性成分的问题进行比较。如果匹配,则检索对应匹配问题的答案并提供给学生。例如助动词是非实质性成分。提取器从问题中去除助动词以使匹配引擎529对其余的成分。在另一实施例中,输入的问题是语法上与上下文无关的问题。图2所示答案生成器100可以与图12所示答案生成器500组合。输入的问题首先经由图2所示答案生成器100来分析。如果问题无法根据预定义结构分解为语法成分,则将问题传送至图12所示答案生成器500。如果答案生成器也无法在问题表内找到匹配问题,则将问题视为将由歧义问题部分所描述的方法解答的歧义问题。问题比较器在一个实施例中,比较器60将刚刚输入的问题与用户先前输入的一个或多个问题作比较,以确定其对该主题内容的理解程度。为此例如比较器60比较问题的语法成分。在一个实施例中,非实质性成分被忽略。如果两个问题的实质性成分相同,则这两个问题被视为相同。如数据库内不依赖标题的语义表所定义的那样,等同的单词被视为同义词。如果用户不止一次地问同样的问题,则他对于问题覆盖的领域的理解水平较差。用户问同一问题的次数越多,表明他对问题所覆盖领域的理解越差。在另一实施例中,比较器60根据用户前面所提所有问题统计其刚刚提问问题中每个疑问代词、名词和非助动词出现的总数。如果问题是刚刚输入的Whatisthederivativeofsin(x+4)withrespecttox?前面提问的Whatisthederivativeofcos(2*x)*sin(x+4)withrespecttox?以下为比较器60的单词计数结果what2次,derivative2次,sin2次,x4次名词x被称为未知量词,它是非实质性的单词;它对于确定用户的理解程度无关紧要。在一个实施例中,单词计数忽略这类单词。如果问题是刚刚提问的WhendidPresidentClintonbecomepresident?前面提问的HowmanytermshavePresidentClintonserved?以下为比较器60的单词计数结果When2次,PresidentClinton2次,president1次,become1次。对于刚刚提问的问题还有问题计数。该计数将问题中的单词计数累加并除以问题中实质性单词的总和问题计数=Sum(单词计数)/(问题中的实质性单词的#)除法使问题计数归一化。根据上述统计结果,如果问题具有较高的问题计数,则用户对问题所覆盖领域的理解水平较差。在另一实施例中,单词计数和问题计数还将时间视为一个因子。用户可能在很久以前问过类似的问题。为了使单词计数和问题计数反映其遗忘程度,系统使用了有效单词计数、有效问题计数和时间戳记。有效单词计数利用时间因子来调整单词计数。单词的有效单词计数的一个公式为有效单词计数=1+(单词计数)*c/exp(当前时间戳记-上次时间戳记),这里c为介于0~1之间的正常数;exp为指数函数;时间戳记以时间单位测量,例如每10分钟为一个时间单位,但是,在公式中单位被去除;当前时间戳记表示用户刚刚提问带该单词问题的时间;以及上次时间戳记表示用户在当前时间戳记前提问带有该单词问题的时间。有效问题计数将问题中实质性单词的有效单词计数求和,并除以问题中实质性单词的总和。有效问题计数=Sum(有效单词计数)/(问题中实质性单词的#)除法使有效问题计数归一化。同样,根据上述统计结果,如果问题具有较高的有效问题计数,则用户对问题所覆盖领域的理解水平较差。在进一步的实施例中,比较器60还包含单词意义表,它表示问题中所用单词的意义。主题内容内容中的每个单词都具有介于0~1之间的意义因子。例如非实质性成分(例如数学中的未知量)的意义因子为0;而疑问代词“why”相对疑问代词“what”具有更高的意义因子。在一个实施例中,在比较器60对单词计数求和,来生成问题计数之前,每个单词计数与相应的意义因子相乘。在另一实施例中,根据问题计数的大小,比较器60可以对用户进行测验。测验结果进一步表示了用户对问题所覆盖领域的理解程度。对于那些本领域的技术人员来说,生成某一领域的测验应该应该是显而易见的,此处不再作展开。在另一实施例中,根据用户的理解程度,比较器60线学习材料生成器52发送消息,以便为用户检索学习材料。一种方法是用户对某一领域了解得越少,提供给他的学习材料就越详细。另一种方法是用户对某一领域了解得越少,提供给他的学习材料的难度就越低。例如,如果用户对分数的理解非常差,则显示器120线他提供分数水平1的学习材料。对于本领域的技术人员来说,生成和检索难易程度和详略不一的学习材料应该是显而易见的,此处不作进一步展开。如果用户在系统向其提供详细的学习材料之后仍然提问同一问题,则答案生成器100可以要求其向教师求教。在一个实施例中,数据库106包含了不同主题内容领域的教师名单。经用户许可,答案生成器100可以通过电子邮件或其它手段与一位或多位教师联系,将问题发送给教师。教师可以直接与用户联系。在阅读了问题答案之后,用户可能会提问其它问题,而回答问题的过程又被重复。理解偏差的弥补本发明也可以用于在用户学习主题内容时弥补其理解上的偏差。图14示出了这样一个实施例600。首先,系统50生成主题内容的学习材料(步骤602),并将学习材料提供给用户(步骤604)。主题内容可以是他需要在系统上阅读的小说。小说可以有许多人物。用户混淆了他们的名字,并开始丧失阅读小说的兴趣。澄清人物的身份可能会重新唤回用户对小说的兴趣。同样,主题内容可以是金融方面的,并且用户忘记了一个术语的含义,例如资本资产估价模型。他可能会向系统提问。系统50检索输入的问题(步骤606)并生成问题的答案(步骤608)。显示器120将答案提供给用户(步骤610)。在学习中弥补理解上的偏差是非常重要的。用户一般会随着理解偏差的增多而感到困惑并丧失对学习材料的兴趣。在系统回答了他的问题之后,借助生成用户学习材料的系统50,不断重复该过程。在一个实施例中,该过程一直延续到用户掌握整个主题内容为止。在一个实施例中,在学习主题内容的一段时间之后,用户停止了学习。数据库将其停止学习的时间连同其身份以及学习主题内容的中断之处存储起来。当用户下次进入答案生成器100再来学习同一主题内容时,答案生成器100从用户上次结束处重新开始学习过程。在另一实施例中,答案生成器100要求用户确认他是想从结束之处还是其它部分重新开始学习。这由用户来决定。鉴于对本发明说明书及实施操作的研讨,本发明的其他实施例对于本领域的技术人员将是显然的。希望本说明书及实例仅被看作是样板,本发明的内在范围及精神由以下权利要求表述。附录以下示出了利用图2所示的实施例,自动生成的回答不同类型的在语法上与上下文无关的问题的指令实例。<prelisting-type="program-listing"><![CDATA[1.WhoisthefirstPresident?forTableineachTables-Of(President)doforAttributeinAttribute-Names(President,Table)doforAttribute2inAttribute-Names(first,Table)dores=(SELECTDISTINCTAttribute-Name(who,Table)FROMTableWHEREAttribute1=“President”ORDERBYAttribute2ASC)if(resisnotempty)return{firstelementofresults}endforendforendforreturn{error,nosolutionfound}2.WhataretheBillsofRigh?answer=“”forTableineachTables-Of(“BillsofRight”)doforKeyinKeys-Of(Table)dox=(SELECTAttribute-Name(what,Table)FROMTableWHEREKeyLIKE‘BillsofRight’);answer=answer+xendforendforifanswerisnotempty,returnanswer,otherwisereturnerror.3.WhereisthecapitalofTexas?]]></pre>该问题中有两个名词capital和Texas。在一个实施例中,每个名词与相关标题表关联。介词“of”表示与Texas相关的表应该优先于首府表。该问题可以有两个不同的答案。答案可以是地图上所示的地理位置或者Austin城。一个实施例生成下列指令,x表示Austin,而y表示地理位置<prelisting-type="program-listing"><![CDATA[forTableineachTables-Of(Texas)doforKeyinKeys-Of(Table)doforAttributeinAttribute-Names(capital,Table)dox=(SELECTDISTINCTAttributeFROMTableWHEREKeyLIKETexas)if(xisvalid)thengotofoundendforendforendforifxisnotvalidor(xhasmorethanonevalue)thenreturnerrorfoundforTableinTables-Of(x)doforKeyinKeys-Of(Table)doy=(SELECTDISTINCTAttribute-Name(where,Table)FROMTableWHEREKeyLIKEx)if(xisvalid)thengotofoundendforendforreturn{error,nosolutionfound}4.WhatistheimmediatecauseoftheCivilWar?]]></pre>在该例子中,与名词“cause”连接的单词“immediate”在含义上等同于单词“last”。<prelisting-type="program-listing"><![CDATA[forTableineachTables-Of(“CivilWar”)doforkeyinKeys-Of(Table)doforAttribute1inAttribute-Names(cause,Table)doforAttribute2inAttribute-Name(last,Table)dox=(SELECTAttribute1FROMTableWHEREKeyLIKE“CivilWar”ORDERBYAttribute2DESC)if(xisvalid)thenreturn{firstelementinx}endforendforendforendfor5.WhydidPresidentNixonresign?]]></pre>有关“PresidentNixonresign”的事件被提取入本地表T中。随后识别出所有这类事件的原因。<prelisting-type="program-listing"><![CDATA[CREATELOCALTABLETAS(SELECT*FROMVerb_View(resign)WHEREsubject-agent=“PresidentNixon”);SELECTA.descriptionFROMEVENTA,T,EVENTRELATIONSHIPRWHERER.KeyId1=A.KeyIdANDR.KeyId2=T.KeyIdANDR.relationship=“consequence”;]]></pre>以下6~9实例依赖于诸如上述生成的总统表之类的表。<prelisting-type="program-listing"><![CDATA[6.WhoisthethirdPresident?names=(SELECTDISTINCTNameFROMPRESIDENTORDERBYStart_YearASC)returnthe3rdname.]]></pre>这些指令假定Tables-Of(President)只包含一张表,并且Attribute-Names(‘third’,PRESIDENT)只生成单个属性。<prelisting-type="program-listing"><![CDATA[7.WhoisthePresidentafterJohnKennedy?SELECTDISTINCTNameFROMPRESIDENTWHEREStart_Year>(SELECTStart_YearFROMPRESIDENTWHERENameLIKE“JohnKennedy”)ORDERBYStart_YearDESC;selectthefirstresult.8.WhendidPresidentLyndonJohnsondie?SELECTDeathDateFROMPRESIDENTWHERENameLIKE“LyndonJohnson”9.WhenwasPresidentNixonBorn?SELECTBirthDateFROMPRESIDENTWHERENameLIKE“Nixon”]]></pre>以下示出了利用编程语言Lisp的多个数学实例。有些例子可以利用数学软件包。对于数学问题,可以是称为数学表的一张附加的相关标题表。数学表可包含高级属性,例如分数、比率、导数、定理、复数、矩阵等。每种高级属性可以包含描述数学概念的定义属性;识别覆盖概念的学习材料的参考属性(如果有的话);以及算法属性。在另一实施例中,算法属性指的是一数学软件包。高级属性可以是定理,例如中值(MeanValue)定理。在相应的定义属性内,对该定理作了解释。值得注意的是,在该实例中,依赖于标题的语义表内没有算法属性。大多数数学问题是“what-is”问题。如果问题是“WhatisX”形式(这里X为数学项),则系统生成以下指令SELECTdefinitionFROMTmathematicstableWHERET.name=X;如果问题是“WhatisX<prepositional-noun-phrase>?”,则<prepositional-noun-phrase>修饰项X。系统检索X,并对由介词指示的项进行操作。10.Whatistheratiobetween7and8?属性“ratio”从数学表中被识别出来。根据介词词组“between7and8”的定义,算法属性对两项进行操作。例如(ratio78)11.Whatisthederivativeofsin(x^2+4)withrespecttox?问题的结构再一次为“WhatisX<prepositional-noun-phrase>?”X是“thederivative”,而名词词组为“sin(x+4)withrespecttox”。由数学表中的“derivativeattribute”定义的算法具有两个变量u和v,第一个变量u是紧跟在介词之后的名词。在此实例中,u等于sin(x^2+4),而第二个变量为v。系统可以调用数学软件包来求解微分d(sin(x+4))/dx。以下是一种LISP表示(derivative‘x’(sin(+(*xx)4)))12.Whatistheproductof{matrix-1}and{matrix-2}?以下是LISP表示(matrix-mul<matrix-1><matrix-2>)13.Whatisthesumoftheproductof3and4,andtheratioof7and8?以下是LISP表示(+(*34)(ratio78))并不是所有的数学问题都是“whatis”问题。用户可能在屏幕前学习导数时不理解某些步骤。这类问题一般是“why-is”问题。在一个实施例中,在用户观看的当前屏幕上或前一屏幕上系统识别学习材料。问题中所用的名词大多数来自这些学习材料。通过使问题与学习材料相联系,并访问学习材料中解释项的数据库,系统可以生成问题的答案。14.Whyisdeltausedinstep4oftheproof?<问题的结构是Whyis<nounphrase><verbphrase>.txxy(a)识别对应于数学表中的单词“used”。(b)识别对应于数学表中的单词“used”的一组或多组事件算法。各组算法应用于使用Y的X结构。(c)识别X为(delta)。(d)识别Y为(instep4ofthepnof)。(e)识别疑问代词和助动词为“Whyis”。(f)选择用于解释X与Y之间关系的一组算法。在这种情况下,所选的该组算法解释X使用Y的原因。(g)算法搜索刚提供给用户的材料内的证明步骤4中的Δ。识别证明、步骤4和Δ之后,系统对证明步骤4进行解释,重点在于Δ。权利要求1.一种依赖于提问计算机系统(50)的用户的教授用户主题内容的方法,其特征在于包含以下步骤检索主题内容的学习材料;向用户提供学习材料;在提供学习材料之后,检索由用户输入的问题;生成问题的答案;以及向用户提供答案,从而向用户教授主题内容。2.如权利要求1所述的方法,其特征在于,进一步包含以下步骤将问题与前面由用户输入的一个或多个问题作比较,以确定用户对主题内容理解程度。3.如权利要求1或2所述的方法,其特征在于系统(50)包括数据库(106);问题为自然语言问题;以及生成问题答案的步骤包含以下步骤由系统(50)利用数据库和一条或多条语法规则,根据预定义的与上下文无关的语法结构来分析自然语言问题的语法结构,以便将问题分解为它的语法成分;以及由系统(50)利用一条或多条语义规则和数据库,将至少一个成分变换为一条或多条指令,以便生成自然语言问题的答案。4.如权利要求1或2所述的方法,其特征在于,在执行所述步骤之后,该方法进一步包含以下步骤从检索关于主题内容的学习材料的步骤开始重复步骤。5.如权利要求3所述的方法,其特征在于分析步骤包含以下步骤扫描问题以提取问题中的每个单词;通过对每个提取的单词应用语法规则和数据库来分解问题,以识别其语法含义,并使问题与预定义的语法结构相匹配。6.如权利要求2所述的方法,其特征在于比较步骤包含以下步骤考虑每个问题输入的次数来解释用户的遗忘程度。7.一种根据用户提问来教授用户主题内容内容的装置(50),其特征在于,该装置(50)包含用于检索关于主题内容学习材料的学习材料生成器(52);答案生成器(100),用于在提供学习材料之后检索用户输入的问题;以及生成问题的答案;以及与学习材料生成器(52)和答案生成器(100)耦合以便向用户提供学习材料和答案从而向用户教授主题内容的显示器(120)。8.如权利要求7所述的装置(50),其特征在于,进一步包含用于将问题与前面由用户输入的一个或多个问题作比较,以确定用户对主题内容的理解程度的比较器(50)。9.如权利要求7或8所述的装置(50),其特征在于问题为自然语言问题;装置(50)进一步包括数据库(106);以及答案生成器(100)包括语法结构分析器(102),用于利用数据库和一条或多条语法规则,根据预定义的与上下文无关的语法结构来分析自然语言问题从而将问题分解为语法成分;编程步骤生成器(108),用于利用一条或多条语义规则和数据库将问题的至少一个成分变换为一条或多条指令;编程步骤执行器(112),用于执行指令,以便至少访问数据数据库(106)的数据,从而生成自然语言问题的答案。10.如权利要求8所述的装置(50),其特征在于比较器(60)构置为,考虑每个问题输入的次数来解释用户的遗忘程度。全文摘要一种根据用户问题教唆主题内容的计算机系统和方法。计算机系统(50)使用户能用户可以控制学习进度并有助于理解主题内容。包括数据库(106)的计算机系统(50)向用户提供主题内容的学习材料。通过对提供材料的学习,用户将问题输入计算机系统(50),由其生成问题的答案并提供给用户。随后计算机系统(50)将问题与用户先前输入的一个或多个问题进行比较以确定用户的理解程度。根据确定结果,计算机系统(50)向用户提供何时的学习材料。用户一般提问不止一个的问题并由计算机重复生成答案的过程。文档编号G09B5/00GK1245577SQ97181605公开日2000年2月23日申请日期1997年12月1日优先权日1996年12月2日发明者何志辉,彼得·P·唐申请人:何志辉,彼得·P·唐