1.2.1 基于规则的方法

基于规则的自然语言处理方法的主要思想是通过词汇、形式文法等制定的规则引入语言学知识,从而完成相应的自然语言处理任务。这类方法在自然语言处理早期受到了很大的关注,包括机器翻译在内的很多自然语言处理任务都采用此类方法。目前,仍有很多系统还在使用基于规则的方法。基于规则的自然语言处理方法的基本流程如图1.3所示,主要包括数据构建、规则构建、规则使用和效果评价四个部分。

图1.3 基于规则的自然语言处理方法的基本流程

基于规则的方法的核心是规则形式定义,其目标是使语言学家可以在不了解计算机程序设计的情况下,能够容易地将知识转换为规则。这就要求规则描述具有足够的灵活性,并易于使用和理解。规则引擎的目标是高效地解析这些人工定义的大量规则,针对输入数据,根据规则库进行解释执行,从而完成特定的任务。这种方式使语言学家不需要编写代码就可以完成规则库的构建。

常见的规则包括产生式、框架、自动机、谓词逻辑、语义网络等形式。例如,产生式规则是以“IF-THEN”形式构建的,表示如果满足条件,则执行相应的语义动作。举例来说,对于机器翻译任务,可以构建如下规则库:

IF源语言主语=我THEN英语译文主语=I

IF英语译文主语=I THEN英语译文be动词为am/was

IF源语言=苹果AND没有修饰量词THEN英语译文=apples

在条件判断中也可以结合正则表达式,增强规则的泛化能力。例如,可以根据英语词典,构造有限状态自动机(Finite State Automaton,FSA)进行英语单词的拼写检查。此外,非确定有限状态自动机(Nondeterministic Finite Automaton,NFA)和有限状态转换机(Finite State Transducer,FST)还被广泛应用于词法分析、词性标注、句法分析、机器翻译等众多方面。

基于规则的方法,从某种程度上可以说是在试图模拟人类完成某个任务时的思维过程。这类方法的主要优点是直观、可解释、不依赖大规模数据。利用规则所表达出来的语言知识具有一定的可读性,不同的人之间可以相互理解。规则分析引擎通过规则库所得到的分析结果,也具有很好的可解释性,所使用的规则可以作为系统做出判断的依据。规则库的构建也能够完全不依赖大规模的有标注数据,可以仅根据人类背景知识来构建规则库。但是,基于规则的方法也有明显的缺点,主要包括覆盖率差、大规模规则构建代价大、规则库维护难度大等。使用人工构建的规则可以较为容易地处理常见现象,但是对于复杂的语言现象则难以描述。由于语言现象的复杂性,使得基于规则的方法整体覆盖率很难提升到非常高的程度。并且,规则库达到一定的数量之后维护困难,新增加的规则与已有的规则也容易发生冲突。不同的人对于同一个问题的解决思路的不同,也造成了大规模规则库中规则的不一致性,从而使得维护难度进一步增加。