周锡令:
甲:
在有关自然语言处理的资料中,常常可以看到“要将自然语言形式化”的说法,例如,有一次我在一份资料中看到:
自然语言文本中的信息主要是面向人的,其内容(语义)没有形式化的表示,所以计算机是难以处理的、
或者说:
而要计算机对信息内容进行处理的一个先决条件就是信息内容的形式化。要建立严格的形式化理论,为基于内容的智能信息处理提供坚实的理论基础.
这种说法和做法常常使我感到一些疑惑,什么叫做“内容的形式化”?如果自然语言(的内容)真的能够被“形式化”,那它还能够叫做自然语言吗?你说说,“形式化”这三个字到底是什么意思?我真希望有人给出“形式化”的一个“形式化定义”。你看到过这种定义么?
乙:
我也觉得“形式化”这个术语的意思难以把握?谈到“形式化”,就令人联想起“精确”、“无歧义”、“正式”、“正规”……这些概念;可是这些并不能算是“形式化”的定义。我也想查找“形式化”这一术语的“形式化”定义,但是至今没有找到。在国内出版的计算机百科全书中,也找不到“形式化”这一词条。
汉语中原来似乎没有“形式化”这种说法。“形式化”这个术语大概是从英语 formalize 翻译过来的,因为 form 对应于汉语“形式”,所以 formalize 就译成“形式化”了。如果在第一次翻译的时候首先想到 formal (而不是 form),那么,fomalize 可能就会被译成“正规化”、“规范化”或者类似的名称了。
甲:
“形式化”是不是“只要形式,不要内容”的意思?
乙:
“形式化”这一译名确实可能产生误导,使人以为是“只要形式,不要内容”。英文术语“formalize”也没有这种意思。不过,我想可以将就这一约定俗成的译名,把它理解为:力求使一切我们所关心的内容都要有相应的形式上的表述。
甲:
为什么“一切我们所关心的内容都要有相应的形式上的表述”?
乙:
我们在研究客观事物时最常用的方法就是“建立模型”。
把某一个东西“形式化”就是对所研究的事物进行抽象,去掉“无关紧要”的细节,保留对研究目的来说有重要意义的方面,为它建立起一个模型,并获得该模型的精确完整的“形式化表示”。如果所建立的模型“简繁得当”,它的行为就会和原来的研究对象基本一样,又因为经过了适当简化,我们就能够用数学工具来处理它。这就是大家常说的“建模”过程。
换句话说,虽然对客观事物的考察或者描述无论在广度或者深度上都是可以无穷尽地拓展下去的,但是在“模型”中我们可以只收入对我们的研究目标有意义的那些东西,为了使建立起来的模型有效,我们所关心的内容当然在模型中都要有相应的形式上的表述才行。
甲:
对于“自然语言处理”,大家是不是也在通过“建模”来进行研究呢?
乙:
我想是的。在我所认识的从事“自然语言处理”工作的专家中,有不少都是“理工科出身”,很自然地,他们会把工程技术中最常用、最有效的研究研究方法转用到这一领域。
不过,“自然语言”这一研究对象和天文学的天体、电子学中的器件和网络、生物学中的动植物……这些对象有些不同,因为后者是完全独立于我们主观世界以外的客体,而“自然语言”则和我们的主观世界有密切关系,最主要的差异有两点:
1)自然语言中的各种成分:字词、短语、语块、句子、句群、段落、篇章……只是大脑使用的一些“符号”,并不是像“地球、氧气、昆虫……”那样,是具有稳定不变的属性、独立于我们主观世界以外的物质实体。因此,把自然科学研究中的思想方法一成不变地用来研究自然语言中的各种成分就会出现困扰。关于自然语言中的“词”是否具有确定甚至是唯一不变的“词性”的争论就来源于此。【比如,在“化学”中,我们可以根据某一元素与其他元素的化合能力,以及所生产的化合物来判断它是什么元素,在周期表中处于什么位置。如果把这一思想方法用到语法理论中,用“词和词之间的结合能力”(也就是朱德熙先生所说的‘语法功能’)来划分词类,就令人生疑。因为,昨天你还不能把被认为只能是名词的“青春”,“中国”,“环保”……放在副词“很”字后面,今天由于“流行”,你也跟着大家一起说:“她穿这条裙子很青春”,“我的脸很中国”,“这种食物很环保”,……。于是它们又可以是形容词了。可是,化学领域中的“氧”元素就是“氧”元素,决不可能今天是“氧”,明天又可以是“氢”或者“氯”。】
2)自然语言中语句的生产和理解都离不开大脑的加工。所以在“建模”时,本来应该把人类大脑中的处理过程包括在内。然而,以Chomsky为代表的经典的语言理论就完全没有涉及这一环节。因此这些理论虽然对“仅供计算机处理的”计算机编程语言作出了很大贡献,但是在自然语言面前就显得无能为力。
从外行的角度观察,我觉得多年以来语言理论专家对这一差异的认识和重视程度不够。不过,现在情况似乎已经开始改变了。
甲:
你觉得传统语言理论中“没有把人类大脑中的处理过程包括在内”主要表现在什么方面?
乙:
我觉得主要表现在没有模拟大脑的联想、推理(判断)与选择过程。
在处理语言的时候,大脑与计算机最大的不同是:计算机是“死脑筋”一根,而人采取的却完全是“活用”的态度。而“活用”的两个最主要的方面是:对接收到的语句进行的信息“补充”和“校正”。
l 自然语言的陈述中,常常有很多“零部件”被省略。这些“零部件”在形式上不出现,然而,实际上是存在的。人们在叙述或者解读这些陈述时会在生活常识的基础上通过联想非常自然地补充上去。
l 自然语言的陈述中,也常常有很多不合语法、不合常理的地方,听者在解读这些陈述时会在生活常识的基础上自然地加以校正。
甲:
能不能举一两个例子。
乙:
比如说,有一次,当我坐出租车通过三环路上某一过街天桥时,看到桥上挂着的交通指示牌涂写着如下字样:
100C.C.以上
初一看真不知道这几个字是什么意思。可是,结合当时当地的语境,调动我所拥有的全部关于现代城市交通规则的知识加以联想以后,马上理解到它的意思是:
“本车道仅供气缸容量在100C.C.以上的车辆行驶”
显然,我所添加的这些补充信息仅仅从“100C.C.以上”的字面上是看不出来的。
甲:
这个例子太极端了,一般的谈话和文章中遇到的这类说法的数量恐怕很少吧?
乙:
那么你看下面这样一句话是不是很普通、很常见的?
那天在商店里,看见一盆花,漂亮极了,但是价格很高,买回去恐怕要挨骂。
任何人听了都会在生活常识的基础上迅速地通过“联想、推理(判断)与选择”理解为:
那天(我)在商店里,(我)看见一盆花,(这盆花)漂亮极了,但是(这盆花的)价格很高,(如果我把它)买回去恐怕(我)要挨(家里人的)骂。
没有生活常识和推理、判断能力的计算机能作出这样合乎情理的补充吗?
甲:
你这个例子倒使我想起了中学时读过的《桃花源记》,其中有这样的句子:
见渔人,乃大惊,问所从来,具答之,便要还家,……
其中每两个逗号之间的字句也是省略了问和答的主体,但是通过说话和动作的具体内容你完全能够分辨得出来是谁在那里说话和行动:
(村里人)见渔人,乃大惊,问(渔人)所从来,(渔人)具答之,(村里人)便(邀请渔人)到(他们自己的)家里去,……
看来,这样的言简意赅的简略表达方式乃是汉语的传统。
不过,以上这些个例子都是有关“信息补充”的,那么关于“信息校正”的例子呢?
乙:
“恢复疲劳”和“救火”是两个经典的例子。实际生活中,需要“信息校正”的说法还在不断的产生。前两天我在当代电视节目中听到有人说:“我认为这种食品是很环保的!”把名词性的“环境保护”放在“很”后面是很不“规范”的,但是我们会正确地把它理解为“我认为这种食品是很符合环境保护的思想(原则)的!”
有一次我还在电视上听见昌平的一位义务交通协理人员对着记者的镜头自豪地说:“我们昌平这里在周末还是很高峰的。”这种说法虽然突兀,但是我依然能够从“地理上山脉的高峰”联系到“表示交通流量曲线上的高峰”又联系到曲线上的这一高峰意味着“交通的堵塞”,从而正确地理解了这位义务交通协理员的话。
甲:
你说的这些例子很“刁钻”,实际生活中语言的大部分恐怕都比较平实,并不“缺胳膊少腿”,也不需要转弯抹角地去理解吧!
乙:
你说这些例子很“刁钻”?大概是认为它们只是一些特例。实际上很多一般的语句也都有类似的“刁钻”性质,只不过程度上低一些,不那么明显而已。为什么经过几十年的努力,机器翻译的正确率始终上不去?有人说正确率只有30%。如果这个数据是可以接受的,恐怕就暗示70%的句子多少都带有“刁钻”性。
甲:
对于你所举的这种“刁钻”例子,好像只有两种对策:
1)提高计算机的智能水平(把大脑的联想、推理(判断)与选择过程)也纳入语言处理模型中去。
2)凡是打算让计算机处理的文章中,都禁止使用这类“刁钻”句子。
乙:
最近几年,已经有一些团队在按照你所说的第一种办法(提高计算机的智能水平,让计算机模仿人们联想、推理、假设、验证)攻关,并且取得了瞩目的进展。
甲:
他们恐怕会遇到很大困难吧?
乙:
当然,其中的艰难只有走这条路的团队才有体会和说得清。从旁观者的角度猜想,如果要计算机能够像人的大脑那样进行联想、推理(判断)与选择,你就要把背景知识全部装进计算机,并且设法使计算机具有“运用”这些知识的能力。可是,自然语言和人类千百年来所积累的知识是密切关联的,因而知识不仅是无涯的,而且还是在爆炸性地增长的,这就使这类系统的开发者面临着一个无底的黑洞,不知何时可以到头。所以,对于这些在第一线进行艰苦奋斗的科研团队,我们除了表示充分的敬意以外,特别关心他们是如何确定他们的“技术边界”和划分“工作阶段”的。
甲:
那么,第二种途径呢?
乙:
第二种途径比较现实。它所涉及的问题就是:如何写出比较“形式化“的文本,也就是努力设法使写出来的文件中“刁钻”的语句尽量少、甚至没有。
甲:
对,你刚刚讨论的是“过程的形式化”,并且把它归结为“建模”问题。而“文本的形式化”或者“陈述方式的形式化”好像是另外一种“形式化”问题。
一般认为,用计算机编程语言写出来的计算机程序是一种形式化的文件;而一般用自然语言写出来的文章不是形式化的文件。这一区分是从哪里来的呢?所谓“文本的形式化”应该怎样理解呢?
乙:
对于“文本的形式化”,普通的英英词典中倒有解释。例如,《Longman Dictionary of Contemporary English》中对“formalize”一词的解释是:“To put (an agreement, plan, etc.) into clear written form.”
甲:
这话在某种程度上是“说到了点子上”,有一些启发的意思。不过,这种解释是从日常社会生活的角度出发的;计算机软件领域中的术语“formalize”继承了该词原来的主要精神,在这一领域中使用这个词时当然会向其中添加计算机软件的色彩,因此还应该结合计算机领域进一步阐明才好。在没有找到权威性的定义之前,我们何不在此来讨论一下,看看能不能从普通人(非专家)的视点和常识的角度,提出一点想法,以期得到有识者的指正。从而逐步弄清“形式化”这个术语应该包含哪些内涵。
乙:
首先要“写下来”,一切信息都应该“黑字落在白纸上”。这样作除了避免“口说无凭,秋后赖帐”以外,还有一个重要原因,就是口里说的话常常会受到周围语境、包括说话人面部表情的干扰。当说话人说:“你可真行啊!”的时候,脸上带着诚挚还是冷笑的表情,意思就完全不一样。而写成书面语言以后,脱离了说话现场,这种干扰就可以大大减少。
其次,要“说清楚(make it clear)”。怎样才算说清楚了呢?这倒是一个不容易说清楚的问题。
甲:
是的,同样一种表述,对人是“说清楚”了,对计算机就往往“没有说清楚”;对大人算是“说清楚”了,对小孩就往往“没有说清楚”;对专家算是“说清楚”了,对一般人就往往“没有说清楚”。一段正确的C语言程序对于装备有‘C编译器’的计算机算是“说清楚”了,对没有装备有‘C编译器’的计算机就“没有说清楚”。
乙:
所以,“说清楚”的第一个必要条件就是“给出的信息所表达的内容能够和对方已有的知识相结合”,能够为对方所“理解”。
甲:
你的意思好像是:如果你这个条件能够满足,也就是说对方的知识水平足以理解你要叙述的内容,你还可以采取“形式化”和“非形式化”两种陈述方式。那么,它们的区别又在哪里呢?
乙:
我觉得可以用听话的一方“是否只需通过常规的脑力劳动(照章办事型信息处理)即可完成理解过程”作为判断的依据。
甲:
什么叫做“常规的脑力劳动(照章办事型信息处理)”?
乙:
我想通过一个例子来说明。请考察以下两个数学题目的区别。其中第一题是普通的四则运算;第二题是当前北京小学里正在开办的“华(罗庚)数(学)班”给出的题目。
1) 35×24 = ?
2) 李明和王波同时计算两个整数的乘积。李明把被乘数的个位数看错了,得出计算结果为255;王波把被乘数的十位数看错了,得出计算结果为365;问:真正的乘数和被乘数分别是什么?
第一个问题可以通过“照章办事型脑力劳动”加以解决。这种劳动的特点是:
l 有算法可以依循
l 被处理的信息是完备的,也就是说不会发生需要的信息找不到的现象
l 而且信息的来源地是确定的
l 处理有确切的“结果”(答案)
计算机现在进行的工作也大多属于这一类劳动。社会上,凡是“本本主义、一律照章办事”的人都是在进行这种劳动。
与第一个问题相反,第二个问题需要通过“智能型脑力劳动(创造型脑力劳动)”才能解决,它的特点是:
l 没有确定的算法(至少一般人都不知道有什么确定的算法)
l 信息不完备,有时只有“提示性”的点滴信息。缺失的信息需要处理者自己想办法“聪明地”从周围环境中选取信息加以补充。换句话说,部分信息的来源地是不确定的
l 处理不一定会有确切的“结果”(答案),可以有多种“结果”(答案),也可以从中选用“最可能(最佳)的“结果”(答案)
日常生活中的“猜谜”, “通过肖像漫画识别肖像的主人”等等都属于这一类。
在自然语言中,像“张三打李四”这样的句子对于一般人来说只要从字面上理解就行了,属于只需通过常规的脑力劳动就能处理的信息。可是,我们也经常遇到一些“不完全的句子”,需要阅读者“转一下脑筋”,根据“语境”来填补缺失的信息。比如上面提到过的“100C.C.”的例子。
甲:
按照你的这种说法,“说清楚(形式化)”了的文件可以用常规的脑力劳动加以处理;或者反过来说,凡是可以用常规的脑力劳动处理的文件就是形式化了的文件。你能不能进一步说说,怎样去书写一个文件,才能使它用常规的脑力劳动就可加以处理呢?
乙:
文件的撰写者应该认定:
首先,“阅读者只会从文件的字面意义来理解文件内容”,也就是说,双方均按照共同认定的词典和语法规则来书写和阅读文件内容。因此,话语要讲得完整。如果语句有了“零部件缺省”现象,阅读者决不自行添加。【编译程序就是以这种态度来对待程序员交来的程序】
其次。由于自然语言的语法并没有像计算机编程语言的语法那样精心地经过设计,所以会有“歧义”现象,经典的例子如:“乒乓球拍卖完了。”既可理解为“乒乓球 拍卖 完了。”,又可理解为“乒乓球拍 卖完了。”。如果文件的撰写者意识到这一点,应该设法添加标记(例如以‘空白’或者‘引号’作为分割标记),或者换一种说法,例如“乒乓球都拍卖完了。” “乒乓球拍都卖完了。”
第三,所书写的文件可以引用其他地方的文本信息,但是必须通过明确的方式来指明,到哪里去取得这些信息。计算机程序中的SVC, API以及C语言中的 .h文件都遵守这一原则。相反地,大街上的交通指示牌上的文字经常要求阅读者从当地的交通环境、政府颁布的交通规则那里补充信息的做法就违反了这一原则。
甲:
要是文件的撰写者写出了一个有歧义的句子而自己并没有意识到,怎么办?
乙:
这的确是个难题。有时出现的“歧义”是非常隐蔽的。像下面这个笑话就是由于初看起来不会有歧义的“牙”这个词的歧义引起的。
小明的叔叔:“小明,现在你的牙还疼不疼呀?”
小明:“我的那只牙已经留在医院里了,我不知道它现在还疼不疼。”
认真地说,小明使用的是“牙”的本义,而小明的叔叔却用“牙”来泛指口腔中的“牙床”,于是产生了歧义。
不过,“形式化”并非“全有或全无”的一种属性,而是可以有程度上的差别。以上我说的只是一些原则,遵从这些原则可以提高所撰写出来的文件的“形式化”程度。当然,还可以设想研制一种计算机软件用来客观地检验一个文件中可能出现的“歧义”情况。
最后,我还想强调指出:“形式化与否”并非仅仅是“文本”本身的属性,一个“文本”是否是“形式化”的,除了这个“文本”写得如何以外,还和你要进行什么样的处理有关。
甲:
为什么?一般我们说到某种叙述是“形式化”的,或者不是“形式化”的时候,从来不涉及“处理”的种类,
乙:
我就是想强调指出:“形式化与否”并非仅仅是“文本”本身的属性,一个“文本”是否是“形式化”的,除了这个“文本”写得如何以外,还和你要进行什么样的处理有关。
例如,“蠕虫是一种病毒”这一描述,对于“自然语言理解”(例如要把这一叙述作为一条新的知识放进计算机中)的处理任务来说,是不够“形式化”的。因为“病毒”既可以理解为“生物病毒”,也可以理解为“计算机病毒”,存在着二义性。在没有澄清这一含糊性以前,你不知道应该把它放进知识库中的那个领域里。因此“蠕虫是一种病毒”这一描述,对于“知识更新”的任务来说,不是一个形式化的文本。
但是对于汉译英机器翻译来说,情况就有所不同。“蠕虫是一种病毒”这一描述可以被认为是一个形式化的文本。因为不论“病毒”是什么含义。它可以唯一的方式被翻译为“virus.”。对于机器翻译来说,处理工作到此为止;下面的事用不着过问。
至于一些更加简单的处理任务(例如“词频统计”),对文本的形式化程度的要求就更低了。
甲:
我现在倒产生了一个问题,既然“形式化”的叙述方式更精密,不易产生误解,那么为什么人们在日常生活中偏爱使用非形式化的交流方式?
乙:
首先,“形式化程度要求的下降”大大减轻了写作者的负担。
反过来,“形式化程度的下降”当然增加了阅读者的负担,因为阅读者要通过高级脑力活动来“解惑”。但另一方面,由于叙述文本中文字符号数量的下降,却减轻了阅读过程中辨识一个一个文字、理解句子的这种低级脑力劳动负担。更加重要的是,形式化的文本通常繁冗罗嗦,使重要的中心字眼淹没在大量的、不那么重要的其他词语的海洋中。两相比较,对具有较高智慧、善于进行联想、推理和模式匹配的人脑来说,总的负担增加不多,甚至还减轻了。【在这一点上,计算机和人正好相反,计算机从来不会嫌麻烦和琐碎,但是要它去进行联想和推理它就会不知所措。】
还有一点,人脑的“短期记忆”是有限的。高度形式化以后产生的过长的句子使人无法把握。反过来,计算机在记忆方面没有问题。这就是为什么 .html 文件同时提供给人看的“浏览”格式和冗长得不得了的给计算机看的“代码”格式的原因。
换句话说,“形式化文本”是为当代计算机这种“木头头脑但是手脚飞快的脑力劳动奴隶”准备的;而“非形式化文本”是为以人为代表的“智慧生物”准备的。
当然,这里面有一个“分寸”问题,即使对于人,话也不是讲得越简略越好。话讲的过于简略就会引起误解。
甲:
讨论到这里,是不是小结一下,看看我们形成了哪些观点
乙:
l 虽然当代计算机所处理的文件大多是“用形式语言书写的形式化文件”,但是“非形式化文件”并不是不能处理。只不过处理过程中要包含模拟推理、联想、搜索、假设并检验等高级“脑力劳动”,而目前计算机技术的水平在这方面还很差,所获得的效果往往不能令人满意。
l 所以,按照处理过程中“是否需要推理、联想、搜索、假设并检验等高级脑力劳动”的介入,以及介入的程度,来判断被处理的文本的“形式化程度”是适宜的。
l 这一划分当然和“进行什么样的处理”有关
l “形式化”程度高的文本可以通过信息的缺失、扭曲而退化,使得其中“形式化”成分的比重下降。
l 反过来,“非形式化文本”-例如用自然语言书写的文章-可以通过向其中添加、补充信息来提高“形式化”成分的比重。按照XML格式来改写(补充)用自然语言书写的文章,从而便于计算机处理,就是一种典型的做法。
l 因此,我们现在是按照两头逼近的方式来解决NLP的问题:一头是丰富计算机的知识库、提高计算机的知识运用能力;另一头是通过人工标注、或者借助(两栖语言)工具直接书写出便于计算机处理的形式化程度比较高的文本。这两种进展会在隧道中的什么地方碰头,有待于今后的观察,让我们拭目以待。
甲:
最后,我还想提一点。对于“用自然语言写出来的文章”的性质目前好像还有两种不同的认识。
l 一种是认为:“非形式化”是自然语言的本质,是不可改变的事实;
l 另一种观点则认为:我们现在之所以把自然语言看成是一种非形式化的语言,那是因为我们还没有找到足够精巧、具有足够包容能力的语言模型。因此我们应该继续努力研究和发明各种越来越精巧或者复杂的语言模型,最终在此模型之上为自然语言建立起完善的形式化系统,到那个时候,就可以想现在这样对待计算机编程语言一样地对待自然语言了。
乙:
这两种观点到底那一种对,可能跟“什么是形式化”也就是“形式化”的定义有关。
甲:
而按照我们刚刚讨论下来所建立的看法,明显是属于第一种观点了。
乙:
是的。不过我们也没有资格就此决然推翻第二种观点。也许持第二种观点的人也能够提出与他们的观点相适应的“形式化”的定义。让我们期待着他们的阐述,使我们的认识更上一层楼。