我们知道,钢铁战士保尔柯察金是在残酷的革命斗争中炼成的。我要说:语言学家是在 瞎琢磨中炼成的。下面这个故事就是证明。

《立委说文解字:好,好不?》

语言现象中,有逻辑的成分,也有不逻辑的成分:约定俗成是语言的天则,只要语言共同体认可,逻辑不逻辑不是问题。前不久跟朋友聊天就聊到了这样一个现象。

朋友说:你是做NLP(自然语言处理)的,汉语是不是特别难做?

我说:亦难亦不难,要看谁做了。要是我全心去做,那就不难,=)连欧洲语言我都弄服帖了,到了母语我还不能驾轻就熟?(哈,一不留神,吹起牛来了:正做得上瘾呢,想不吹都难。)

朋友于是问:那比如汉语中不逻辑的现象。否定式当作肯定用,譬如 “好不高兴”实际上等价于“好高兴”,你怎么处理?

我笑道:这是个小 case 啦,记住,对于NLP,凡是可枚举的语言现象,统统不是问题(【 成语从来不是问题 】),因为电脑擅长的就是记忆,可枚举的现象全部扔进海量词典即可。具体到你说的这个现象也是如此。我们知道,程度副词(很/太/极/真/顶/忒/极为/非常 等)可以修饰形容词,它的否定式之一加上一个否定词“不”即可,这条规则是逻辑的,compositional 的语义叠加:

肯定式:程度副词 + 形容词
否定式:程度副词 + 不 + 形容词
如:
很高兴 / 很不高兴
非常漂亮 / 非常不漂亮

现在我们遇到了一个反例,就是作为程度副词的 “好” (顺便一提:“好”通常是形容词,但是在口语中也可以做程度副词用),其否定式 “好不” 不遵循上述规则,否定肯定说的都是一个意思(语言真地不讲道理,这肯定否定怎么能一样呢?没办法,语言这个monster本身就是不讲理的事儿,你最好服从,没法反抗)。怎么办呢?简单,就把它放到词典里面去,把“好不”作为“好”的同义词即可,用法是位于形容词前:

肯定式:好 + 形容词 = 好不 + 形容词

(这是所谓词典个性规则,因为这条规则是由两个具体的词“好”/“好不”驱动的)

好开心 = 好不开心
好漂亮 = 好不漂亮
好恶心 = 好不恶心

自以为得意,心想这样的问题太容易了,扔进词典标注清楚就完事:整个的文法规则系统一点儿也不要变动。汉语处理中确实有一批真正的难题(等以后找机会再另文专谈汉语分析的挑战性),但这种封闭类的现象不是。

本来此事就算了结了,我也顺手把“好不”加进了系统,问题似乎解决了。可是我这个人没什么其他爱好,没事就爱瞎琢磨语言。回答完朋友的问题后,一路还在顺着这个问题想。真所谓,天下本无事,就怕瞎琢磨。这一琢磨,问题来了。

上面这个对例外“好不”的解决方案原来还有例外,真是应验了那句老话:对于自然语言,可以说是无一条规则没有例外,无一条例外不是规则。这个例外发生在形容词“容易”前:虽然 好容易 = 好不容易,但是它们却不是肯定的语义:“好不容易见到你”,说的是不容易见到;“好容易见到你”,说的也是不容易。

怎么办呢?easy,记住:凡是个性的、可枚举的现象,对于电脑就不是问题。既然其他形容词与“好不”搭配都没有问题,只有“容易”才有问题,就把这种搭配放进词典不就完了吗:

否定式:好不容易 = 好容易 (语义结论:“容易”的否定式+强调语气)

兵来将挡,水来土囤。我几乎得意了自己的天才。

我于是把“好容易”/“好不容易”请进了词典,这事就这么过去了-- 直到昨天。昨天不知道是什么trigger的,我又鬼使神差地琢磨起来。天下本无事,就怕瞎琢磨。这一琢磨,问题又来了。原来, “好(不)容易” 并不那么容易,也不总是表示否定,如下面这个对比的句例:

否定式:好不容易(才)见到你 = 好容易(才)见到你

肯定式:这个问题好容易啊 ≠ 这个问题好不容易啊。

这是怎么回事呢?原来,“好容易” 有时候强调的是“不容易”,有时候却强调 “容易”。在表示“不容易”的时候,它等价于“好容易”:好容易见到你=好不容易见到你。但是,在表示“容易”的时候,其否定式“好不容易”却不再等价于其肯定式 “好容易”,而是遵从否定式的共同规则:“这个问题好容易啊” 说的是“容易”,而 “这个问题好不容易啊”,说的却是“不容易”(困难)。

怎么办?easy,可枚举现象只要人能分析清楚其用法的条件,扔进词典即可。具体说,这词典的相关个性规则就是:

1. 否定句型:好容易+VP(动词短语)= 好不容易+VP
2. 肯定句型:NP(名词短语)+ 好容易
3. 否定句型:NP + 好不容易

Wow,这么个破词折腾了这么大一圈儿。好在罗嗦是罗嗦,终于搞定了,也实现在正研发中的中文系统里。Everything works perfectly -- until now, at the time of writing this post: 瞎琢磨的毛病又犯了,这次想到的是与“好”有关的另一个个案现象,就是“好坏”,表述如下:

“好” 的一个插曲是,当 “好” 遇到 “坏” 的时候(when a girl meets a boy),在通常的正反形容词并列结构的逻辑或意义之外,e.g【无论】好坏=好或坏;大小(=大还是小)【不是问题】,也一样有程度副词的语义,imagine 你要吃豆腐时你女友的娇嗔:你好坏!

电脑实现起来就是放进专家词典,其词典规则就是:

【“好坏”规则:(1)承继【“好”规则】,好坏=很坏:通常用作谓语;(2)形容词并列结构,常与连词【无论】等搭配,做主句的让步状语】

生命不息,瞎琢磨不止,如果你是语言学家。如果你读到这儿嫌烦了,你就做不了语言学家。这比真假马列主义的试金石还灵。如果你读此文津津有味,而你并不是语言学家,只能对你表达遗憾,本来是语言学家的材料,一定是年轻时不小心入错行了,错过了语言世界的大好风光。

突然想到:汉语怎么这么磨人啊,规则有例外,大例外里面还套着小例外?我们是 native speakers,可能不觉得,要是洋鬼子来学,他们会不会诅咒这个据说是博大精深的东方语言怪物啊?幸好,我们现在有电脑,电脑不懂得抱怨,只要你教它,它就永远记住,讨厌的例外反而是它的拿手好戏。

【后记】为避免“瞎琢磨”引起的误导,特说明如下。本文所谓瞎琢磨,只是强调作为语言学家的语言敏感性。事实上瞎琢磨不仅不是工业开发的“正道”,而且可能引入歧途。笔者见过被语言学家 “过度开发” 的系统,其结果是低效率,系统没必要的庞杂,维护费用高,甚至不堪使用。系统开发的正道应该是数据制导(data-driven,怎样实施数据制导,里面很有讲究):由数据而不是拍脑袋来引导系统开发。绝不能由着语言学家瞎琢磨的性子来。正确的理解是,本文的“瞎琢磨” 自嘲大于自夸,调侃在我们这些“迂腐”的语言学家身上常见到的执着和痴迷。实用系统的规则编制,一定要遵循投入产出的原则,不能事无巨细,面面俱到地穷举。做到这一点的一个办法就是利用机器学习把统计上最有价值的现象粗略筛选提供给语言学家,避免他们走入死胡同,做无用功或低效功。
[附:围脖的有关留言讨论]

鲁鹏一:这不能依靠着人工穷举,而是需要有能够处理句法结构上的机器学习算法,如果有了这一个,才能在机器识别遇到困难时,再编辑规则。这样可以在大语料的基础上,保证规则的完整性和可行性//@算文解字: 规则-专家词典,看上去是个简单有效的办法。但人工穷举,会不会出现低覆盖率的瓶颈?如果有,如何克服 (3月1日 18:25) 

米拉宝鉴:从规则系统角度看,低覆盖率的问题可以由共性规则去解决。专家词典是解决低准确率的问题。语言系统因此成为一个hierarchy。理论上,低覆盖率的问题可以由机器学习去做,这样一个规则与学习的混合系统,可以发挥规则的高精度的长处,也可以发挥学习高覆盖率的长处。实际做起来,这话就长了 (3月1日 21:21)删除| 回复

鲁鹏一:回复@米拉宝鉴:求数据制导的方法或思路,这实际上是现在汉语语言处理的难点,如果能够机器识别句子的结构,确实就可以进行制导了。 (3月1日 21:07) 回复

http://blog.sciencenet.cn/blog-362400-542678.html

13  曹聪 武夷山 谢鑫 金小伟 程智 庄世宇 彭思龙 黄晓磊anonymity bridgeneer tuner sowhathen paulings

发表评论评论 (11 个评论)

删除 回复[11]苏晓路  2012-3-7 09:32
cyc做的不是常识,知网也不是,至少不是最基础的常识,正是因为少了最基础的部分,所以效果不好。

删除 回复[10]苏晓路  2012-3-6 18:53
为什么一定要形式化呢?把上下文的词语按照在语句中的关系组成拓扑网络,用几何方法也可以得到有意义的结果

删除 回复[9]sowhathen  2012-3-3 10:14
谢了,博主的指教。很专业,我不理解,但有点明白意思。
还想请教下:
1。开发的专家辞典的用途,人机对话?实时翻译?。。。
2。澳洲Monash大学开发过一个后现代学术论文的生成器,由于是后现代文章,以博主的解释,只要大约做到第一、第二两步就可以了。博主的专家辞典系统能走到第几步?
3。承上面问题,电脑写作、类似siri模式状况下理解幽默甚至发生幽默、通声传译等是不是还很遥远?
博主回复(2012-3-5 15:00)1. 专家辞典是实施 lexicalist approach 的一个有效而且有力的工具,所谓语法词典化。学界的共识是,lexicalist approach 是NLP的必由之路。
2. 不懂澳洲这个什么学术论文生成器,也不想懂,因为听上去似乎不靠谱。
3. 电脑写作、写诗作为玩具是可以的,拿它揭示写作中可以形式化的部分也许也有一定的意义,但总体上是忽悠嫌疑较大。Siri 则是另一回事,Siri 的本质是自然语言理解用在限定的范围或app内,是一个可以使用的人机交互技术(见我的4篇评论Siri的博文)。是的,理解幽默很遥远。机器同声传译也很遥远。遥远到笔者无法预测的程度。

删除 回复[8]苏晓路  2012-3-3 07:58
语言本身也能形成上下文,只要把整段,整篇综合起来,再加上一些常识知识,出错的概率就明显减小。人脑思考和讲话,所用到的知识是有局部性的,相邻的句子和段落跨度不会太大,这是现在的技术可以处理的。
博主回复(2012-3-5 15:13)整段整片上下文,那叫篇章语言学(discourse study),可以形式化的模型不多,不太好把握。Discourse 这块地上比较靠谱的是所谓 alias association (联接一物多名,譬如 IBM 和 International Business Machines)和 coreference (譬如代词所指的识别),任务的本质是把 entity 在语言中不同表达串起来。因为 entities 是关系和事件的节点,跨句串起来的 entities 可以支持信息的整合。常识则是另一个 monster,以人工智能著称的 cyc 项目做了多年常识及其推理,虽然理论上很有意义,但一直不能真正有规模地实用。 除了 overhead 太大和机器推理的繁琐和error-prone 外,还因为语言处理中的多数现象根本并不需要常识的参与,这一点是有数据支持的。舍近求远,能够用语言学手段解决的问题硬要诉诸常识推理,工程上是可笑的。

删除 回复[7]sowhathen  2012-3-2 21:42
   就这样轻飘飘地一句“例外”,好像让人不大信服啊。这个例外是统计学意义上的,还是。。。?
“在真实语料中没有统计意义”是指这样的例外本身没有统计意义,还是指“这样往下追,超过三层”以后的结果才没有统计意义?
语言的变化似乎有加速的趋势,不但是语料的增减,语法的新创造更活跃。“覅忒时髦哦”(不要太时髦哦)这样的方言进入流行语已经十多年了,赋予语料以特定语境下的新语义正成为一种竞争性的潮流,随着传播手段的日益私人化而高速增长。
相信词库和语法库很有用,也会很方便使用。但是不带人工智能的语境判断的库,毕竟不能算“理想”产品。或许“理想”产品还很遥远,那根本就不是一个关于“语言”的问题。
博主回复(2012-3-3 03:30)最终当然是有统计意义的质量检测 (data quality QA)来确定一个hierarchical 的规则系统应该走到第三步还是第四步就可以停止,感觉上最多不超过四步,在往下的真的是没有统计价值了。可以大体这样来定义“步”:

1.  第一步是建立在词类(名形动副等)基础上的共性规则;
2.  第二步是建立在子类(subcat)基础上的句型规则
3.  第三步是单词驱动的一条腿走路的个性规则:所谓一条腿走路就是驱动词是一个具体的词,但规则中的替他成分依然是对词类或者子类的限定:譬如, 好/好不 + 形容词 这样的规则
4. 第四步是单词驱动的多条腿走路的个性规则或者成语搭配:所谓多条腿走路就是规则中的成分至少有两个以上是具体的词,而不是类别,包括多词“成语”(刻舟求剑,不管三七二十一,好不容易),也包括固定搭配,如 吃+(NP)+豆腐。

走到第四步的专家辞典,语言学上差不多就到头了。至于超出语言学的情境或者其他手段(如表情,如知识背景和常识推理),它们也可以影响语义(如有些讽刺、双关、正话反说等),但那是另一层次的事情了。统计上大多可以忽略。即便统计上不能忽略,形式化的挑战性往往超出目前可以实现的程度。

删除 回复[6]sowhathen  2012-3-2 18:19
请教:
小狗看见我拿根骨头,好不高兴跑过来,尾巴直摇。
等到走近一看发现骨头是泥巴做的,弄得它好不高兴,尾巴也耷拉下来了。
============
第一个好不高兴是好高兴;第二个好不高兴是很不高兴。尾巴直摇是尾巴直立+摇动,还是尾巴一直摇。
或者:小明有个怪脾气-天气不好不高兴。当然很口语,口语排除?
博主回复(2012-3-2 18:45)哈哈。语言中的例外现象,可以这么一路追下去,特别是创造了一定语境以后。搞过realife 系统开发的人都有这个体会,这样往下追,超过三层,就没有意义了。不仅人和机器都会抓狂(难以维护),更重要的是在真实语料中没有统计意义,换句话说,做了白做。一句话,还是要数据制导,而不是追求所谓情景语义,走入死胡同。所以语言学家的 “瞎琢磨” 完全可能成为开发的障碍,而不是优势。

删除 回复[5]苏晓路  2012-3-1 11:30
脱离上下文,研究纯语义,属于缘木求鱼。
没有具体场景,单纯只是语言,连人脑的智能有时候也会搞错。
和具体场景结合起来,哪怕只是孤立的几个词,完全没有语法,也能把意思表达清楚,没有歧义。
语言只是沟通的工具,脱离了沟通研究纯语言没有意义。
博主回复(2012-3-1 21:12)讲的是语言系统的开发,不是纯语义研究。你所谓的上下文,已经超出了目前可以形式化开发的限度。easier said than done,窃以为还是从看得见摸得着的(tractable)现象着手比较靠谱。

删除 回复[4]庄世宇  2012-3-1 10:37
对英汉句子对译的难题有何看法?
博主回复(2012-3-2 18:51)问题太泛,无从回答。机器翻译是NLP中最古老,也是最广泛的应用。由于这个领域的海量双语对照语料库的存在,机器学习的方法取得了突破性进展,传统的规则系统退居其次。Google Translate 的广泛应用就是例证。

删除 回复[3]程智  2012-3-1 10:35
表面上看问题是解决了,但哪天人的习惯一改,你这个字典也要改了。
博主回复(2012-3-1 20:43)那当然。人还要活到老学到老,怎么可能做出一个一劳永逸无需改变的系统呢?系统当然是需要不断更新的,连操作系统还不断为新发现的安全漏洞打补丁呢。

另外,要说明的是,所谓“瞎琢磨”应该是自嘲大于自夸,自嘲语言学家常见的迂腐和执着。实际上,瞎琢磨是很容易走进死胡同的,希望不要造成对年轻人的误导。实用系统的规则编制,一定要遵循投入产出的原则,不能事无巨细,面面俱到地穷举。做到这一点的一个办法就是利用机器学习把统计上最有价值的现象粗略筛选提供给语言学家,避免他们走入死胡同,做无用功或低效功。所谓瞎琢磨,只是强调作为语言学家的语言敏感性的重要,并不是工业开发的“正道”。

删除 回复[2]anonymity  2012-3-1 09:55
嗐,昨晚糊涂了,是很简单的事儿。

删除 回复[1]anonymity  2012-3-1 01:10
某某队+大胜/大败+某某队,怎么解决?
记得英语里也有类似的一个说法,忘了怎么说的了。
博主回复(2012-3-1 08:18)没问题,专家词典(expert lexicon)里面个性规则如下:
1. 带宾语的时候,二者是同义词,“大胜”=“大败”:【火星队】大胜/大败 火箭队
2. 做定语的时候,二者则是反义词:大胜的火星队;大败的火箭队

专家词典系词汇驱动的个性规则集合。

作者 liwei999

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注