自然语言理解

原文发表在《计算机工程与应用》1987.5)

    自然语言(指用文字形式记录下来的句子或更大的语段)理解已有十几年的历史,大多数研究工作是针对英语做的。读者可以在《The Handbook of Artificial Intelligence》或 Winograd: 《Language as a congnitive Prcoess这些书里找到系统的介绍,本文不打算剪裁拼接了。然而,文献中的多数材料是“报喜不报忧”的,在表面的成就后面隐藏着大量的根本性的问题,被巧妙地回避或绕过了。这方面的批评意见请参看德雷福斯:《计算机不能做什么》一书。这是迄今为止对人工智能的一本最激烈的批评论著,其中有许多发人深思、使人猛醒的意见,但是作者是站在唯心主义立场上看问题的,所以有些议论高深莫测。本文则试图把自然语言理解中会遇到的困难归纳整理一番,给打算做这方面工作的读者参考。正视这些困难 , 才能在具体系统中恰当地对待它们、或设法回避、或采取一些权宜之计、或正面加以解决。反之,如果没有意识到这些困难,只是就事论事、朴素地设法处理, 就会不得要领、东拆西补、顾此失彼。

1、 谈论“理解”, 不可避免地要谈到 “意义”。什么是一段话的意义? 意义倒底是什么?

    语言学家把意义分成了许多方面。其中最重要的是要区分语言学(semantios)和语用学(Pragmaties)这两方面的意义。

    语言是交际工具。一句话的意义是什么,离不开交际的环境和目的。从这个角度谈论的意义叫做用意(即语用学上的意义 ) 。比如说 : “我把车推来了” , 说的是什么“车” ? 哪辆“车” ? 怎么个 “推”法? 这都只能从环境中去寻找答案 , 然后才能实现交际的目的。如果无法从环境中去寻找答案, 听话人就会反问: “什么车”?“ 怎么回事? ”说明交际目的没有达到。把句子孤立于环境之外, 讨沦它的意义就是语义(指语义学的意义) 。如果用P表示用意的集合, 用E表示环境的集合,用S表示语义的集合,那么可以说 S一〔E,P〕。这就是说 , 语义实际是一种映象 , 它使环境对应于用意, 即:一段话的语义就是指出如何对于特定环境确定这段话的用意。因此,我们可以认为理解就是一个从句子到它的语义的变换: 

 U: L ---S 

    其中L是一个语言条对任何 I属于L , U (l) 属于S是它的语义。至于语言 L,不妨把它想象为用某种形式语法给出的语言。

    L,S,F,P这些集合都是非常复杂的。 要利用其中的各种结构来描述它们彼此之间的关系。寻常的语言工作可以说就是这种工作。这些工作做好了, 就可 以指望找到实现 U 的算法和实现每一个U(1) 属于S的算法 , 自然语言理解系统就成了一个寻常的软件工程对象了。不幸的是实际情况与此差 距甚大做自然语言 理 解系统的人实际上 要做许多语言学的工作, 不是自觉地涉足语言学领域就是不自觉嘘E语言学领域中东冲西突。更重要的是: 通过这些工作, 大家越来越认识到 , L , E , S , P这些集合很难给出严格的形式描述 , 甚至它们是否可 以称做集合都有问题。 总之 , 我 们面临着双重困难: (1) 语言学的研究不够充分; ( 2 ) 语言范畴不能或很 难形式化 。本文就以此为线索

2、 把自然语言看做一个可以用形式语法定义的集合L , 有许多根本间题用形式语法定义一个语言 L , 就要把它看成词的序列。 

    那么怎样把用汉字连续组成的句子切分成一个一个的 “词” 呢? 这个问题看来很容易: 只要有了一部词典,剩下的就只是算法间题了。其实不然。汉语是孤立语 , 与英语 (屈折语) 、日语 (粘着语) 有很大的不同。 (科技文献、新闻等文体中只使用汉语的一个子集,是与英语比较接近的一部分。) 在这种语言中, “词”的切分在语言上就有困难。例如“洗澡” , 似乎应认为是一个词 , 因为 “澡” 在汉语中是不单用的。 但是我们却可 以说“洗了个澡”,“连个澡也没洗成” , “洗”、“澡” 又似乎是两个词了。有的语言学家根本怀疑 “词” 这个范畴对汉语是否适用。 即使认为应该有“词 ”, 那末至少也应看到:
(1) 汉语的词汇表是不固定的。 造词极为容易 。 几个汉字临时组合起来, 常常可以取得类似于词的地位。 (2) 汉语的词又是可分的。上举的“洗澡”就是一个例子。 这样一来, 只用一部词典来做切分词的依据就远远不够了。必须把词的切 分问题和句法分析问题联系起来考虑。
3、 即使词的切分问题解决了 , 用形式语法来定义自然语言也还有困难。 

    (1) 一个词列 (由词组成的序列 ) 是否应看成一个句子常常是有争议的。 例如:

贵宾所到之处受到热烈欢迎

    就是一个例子。这说明,做为自然语言句子的集合, L的边缘是模糊 , 并无一个绝对的先验标准 。
    (2) 判断一个词列是否句子可以有不同的标准。例如 : 月亮把数学累得十分轻松。形式上看来似乎可以认为合乎语法。但是词意不搭配 , 在正常情况下不具备交际功能 , 因此实际上没有人说这样的话。这应该不应该算是一个句子呢? 要看标准如。

    (3) 正常的语段往往不合乎书本上的语法规则。 例如: 

—什么时候来的?—昨天。— 住哪儿了? —一 招。

    这可以被解释为“省略”。但是下面的例子恐怕连说话人也没有意识到省略了什么: 

我一天两块八 , 不去就是两块八呀!

 “阿妈尼”是朝鲜语 , 汉语是“母亲”的意思。 

    实际上 , 人们在交际过程中使用语言时, 有两种基本的方法。 第一种方法是把词当作素材 , 把若干个词凑在一 起 (还可以辅之以手势、表情) , 借助于当时的环境 ( 包括双方的客观环境及彼此了 解) , 以达到交际的目的。 这种方法常被 说成是 “意合法 ” . 例如: ”血…绷带… 快… ”、“月光… 沙滩…静悄悄的 ” 。 这时词的顺序并不重要 , 甚至完全断成一个词一个词的断续语 流 。 

    第二种方法是用有结构的词列。这时 , 各词按一定的模式组织起来, 由此决定整个语段的意义。语言学研究的对象就是用这种办法组成的句子。 

    这两种方法在大多数场合是同时并举的、互相渗透的。 语法结构往往只能决定意义的大框架, 细节则免不了要用“意合法”的原则来补充 。如何对待那些主要靠“意合法”组织起来的“不正规”句子呢? 这又是一个困难。总之, 用形式语法来描述自然语言 , 不但技术细节可能非常繁琐 , 而且理论上也有未解决的问题.

4、怎样表示意 义,是另一个需要考虑的问题。
    文献中常用的方法是使用谓词逻辑或语义网络 (参看尼尔逊:《人工智能原理》) 。这种方法的能力是很有限的。 

    比如说一般的名词。在使用谓词逻辑 (或 语义 网络) 表示语义的时候 , 名词总是与某个对象相联系的。 说到 “汽车”, 就认为有一个对象, 它可以用汽车指称, 或者说属于汽车的集合。在讨论 “来了一辆汽车” 或 “ 汽车开走了” 这类句子时 , 这种做法是不成问题的。 循此前进, 表示 “汽车以汽油为动力” 这类句子的意 义, 就要使用全称量词了。 但是在下面的句子中:

汽车是人类的一项技术杰作。

     “汽车” 既不是指个别的汽车, 也不是指汽车的全体 , 而是抽象化了概念。

我梦见 了一部汽车。

    这个“汽车”所指的对象仅存在于梦幻之中, 可能与客观的任何一部汽车都不相同。

你所说的汽车其实是一座房子。

    这里把房子叫做 “汽车”只不过是一场误会。以上这些例子都涉及概念的内涵 , 而谓词逻辑只是外延的逻辑而己。这样的例子可以举出很多, 如“玩具汽车”,“画上的汽车”, “不会走的汽车”等等。甚至Montague学派 (见 《Formal Philosophy》 一车)的内涵逻辑系统 , 虽然已是复杂不堪 , 却仍然难以应付上述这些例子。这些都有待深入研究。
5、即使有了表示语义的适当的符号系统 , 如何确定句子的意义也还会遇到麻烦。这主要是指歧义。 

    按照一定的句法模式组成的句子是有结构的 , 决定其意 义的因素有三个: 结构的句法性质 (主谓结构、动宾结构等等) 、其各成分的意义、这种结构如何把各成分的意义组一织起来。 在以上这三方面都有造成歧义的可能。 

    首先:一个句子或句子的较大成分有时能以不同方式分析为较小的成分的结 构。比如“ 没有钱的间题” , 可 以分析为以下两种结构:

 (没有钱)的问题

没有(钱的问题) 

    这叫做“同形异构”的歧义。这个歧义比较容易注意到, 也容易处理。

    其次是各成分本身的歧义, 归根结底 , 是词汇的歧义。如“吃饭”里的“饭”可能指的是具体的食物 (即米饭) 也可能指的是抽象的活动 (即“早饭”的“饭”) 。因此“吃饭”也有歧义。词汇的歧义有时在更大的结构中可能被消除 (例如“我吃了一顿饭”, “我吃了一碗饭"等句子里的“饭”就没有歧义了) , 但也可 能继续存在 (例如 “就吃了几回饭”, “一天不 吃饭可受不了” ) 。 

    更深刻的歧义是同一种句法结构中意义的组合方式可以不同。这叫“同构异义” 。比如说“名词十`的’+名词” 这种句法结构,一般说来是表示领属关系的。但是以下这些句子里的领属关系性质各异:

小王的牙齿不好。 (身体之一部分) 

小王的儿子不好 。 (亲属关系) 

小王的房予不好 。 ( “小王”拥有`房子 ’ ) 

小王的照片不好。 (照片上是小王的形象 ) 

小王的车间坏好 。( “小王在 “车间工作 ) 

小王的座位不好。(可能是临时关系) 

小王的物理不好。(小王在物理方面的能力或成绩) 

小王的配音不好。(为小王配音的效果 )

    从逻辑上来看 , 以上各种领属关系无法用同样的办法处理。细究起来, “小王 的配音不好”也可以象“小王的物理不好”那样去理解 , 小王的车间不好”也可以象 “小王的房子不好” 那样去理解。 这就出现了“同构异义”的歧义。这种现象说明 “意合法” 在这里仍然起作用。

    汉语由于形态标志少, 这种情况就尤其严重。例如动宾关系:“考物理” 、 “考大学” 、“考研究生” 、“考第五章” 、“考五道题” 、“考50分” 、“考驾驶执照”都是动宾结构 ,但是意义组成方式不同。 “考研究生” 便有明显的歧义。甚至最根本的主谓关系也有歧义。“我修车呢 ”, 修车工人可以说,车主也可以说 , 因此, “我”和“修车”的关系也有两种(甚至更多) 。

    此外, 还应指出, 有时因为用文字记录语音时丢失了某些信息, 从而带来了歧义。比如 :

我就比他高一点儿

    这句话的重音可以放在 “我” 、“他” 、“点” 这几个地方 (至少有这三种情况 ) , 三种情况意义完全不同。如果只谈文字记录, 这个句子是有歧义的。但这在语言学上不算歧义。要把这种种歧义都辨别出来、解释清楚, 是很困难的。
6、 既使做好了一个自然语言理解系统, 怎么知道它是否真正理解了某个句子也是很困难的。 

    表示意义的符号系统是人为制定的,一般说来都比较复杂,只凭直觉很难断定这种系统中的某一组符号是否真正表达了句子的意 义。只有把它们相互联系、相互比较,或者把它们与其他计算机系统连接起来,才能判断理解是否正确。因此,在实践中,自然语言理解系统总是要以各种直觉的方式显示它的能力。 或者对句子进行释义、翻译,或者根据句子做出推 断、摘要,还有的系统则与数据库或别的人工智能系统相连,把自然语言理解系统做为人机接口,让系统更新数据库或解答问题 。 这样做就是为了使人们可以从整个系统的总功能去判断它对输入的句子是否做出了正确的理解。 

    然而 ,这样一来,又遇到了两个新的问题。 

    第一个问题是: 要把自然语言理解系统作为人机接口 , 即做为人与机器之间的交际工具,就要在语用学层面上理解句子,就要把环境也考虑在内,也就是说 , 必须有模拟环境的子系统。而环境是远比语言复杂的东西,它又怎么形式化呢?     另一个问题是: 要系统对句子做出响应,就要有计算、推理之类的子系统。 这就增加了系统的复杂性。比如说,问计算机 : “二加二等于几”,回答是“不知道”。这是不理解呢还是算不出来呢? 

    鉴于以上各种困难,要做一个全面的自然 语言理解系统 , 简直是不可能的。 反过来说 , 一个有实际目的的系统也不必具备这种全面的能力。因此,可以把系统的能力缩小到一个有限的范围之内,做一种“部分的”自然理言理解系统。 

    这种做法意味着: 

    (1) 系统能处理的词汇原则上可以开列一个清单 (即便这个清单可以动态地变化) 。 其中每个词的意义也是有限度的 , 不能无限制地引伸。 

    (2) 在句式方面 , 至少应排除那些“不正规”的、主要依靠“意合法”组织起来的句 子,以便我们能为自然语言(经过限制的) 写出一部实际可行的形式语法。

    (3) 对环境的限制更为重要 。 环境包括整个客观世界与主观世界,对它我们不可能有完全的认识 , 更不可能把它全部用符号表示出来。 我们只能在深度和 广度两方面把环境设想为一个封闭的小世界 , 以便把它全部 (包括事实、推理规则等) 描写清楚、装到一个知识库中 。
    已有的自然语言理解系统无一不是这样做的, 然而做法却可以各不相同。多数系统没有明确说明它有什么限制,只是把这些限制做就在程序之中,要仔细研究才能看出来。 

    这样做的自然语言理解系统当然只能是一种近似的系统。从语言学的角度来看,似乎是极不满意的。 但从应用的角度来看,却是正确的。恰当地选择一个限制范围,乃是系统成败的关键 。

没有更多推荐了,返回首页