数学无处不在:语言、文字与数学

(拜托转载时请用红色加粗字体标明,这是我古今数学思想课的期中论文,免得老师以为我是反过来抄的网上的文章。这门通选课的期中论文要求写数学与自己所在专业之间的联系。)

    我们每天都在说话,每天都在用语言进行交流。语言文字对我们是如此的平常,以至于绝大多数人都不会注意到语言中一些非常难以解释的现象。昨天的汉语虚词研究课上,我们就谈到了这样一个有趣的问题:在表示“仅仅”的含义时,什么时候能够用“只”,什么时候能够用“光”?若不细想的话,大家或许会认为两者的用法完全一样。“我只吃苹果”可以说成“我光吃苹果”,“光有知识还不行”也可以说成是“只有知识还不行”。我们还可以举出更多的例子来,如“别光坐着”/“别只坐着”,“光说不做”/“只说不做”等等。凭借天生的归纳性思维,一个正常人有充分的理由猜想,在表示“仅仅”的含义时,“只”和“光”是通用的。而事实上,现代汉语词典中正是把“光”字解释为“只”。有趣的是,在我们质疑只找了四个例子是否足以说明二者等价时,殊不知这句质疑本身就成了一个反例:“只找了四个例子”不能换成“光找了四个例子”。类似地,“大会只来了748个人”也不能说“大会光来了748个人”。我们继续猜想,是不是“光”不能用在数量词前面呢?也不见得。当数量词不是实指而是虚指时,我们有时也能用“光”来修饰带有数量词的名词。例如,在表示“只吃几个苹果”、“只吃一些苹果”的意义时,“光吃两个苹果”的说法是很顺口的。另一些例子则表明,“光”的用法似乎与它所修饰的名词无关。“我只当到团长”不能说成是“我光当到团长”,但怪就怪在“我只认识团长”却又偏偏可以说成是“我光认识团长”。“当到团长”和“认识团长”有什么不同呢?仔细揣摩两者的意思,我们似乎体会到了一些微妙的差别:“当到团长”是一个阶段性的、进度性的、里程碑性的概念,它必须事先经过“当到连长”、“当到营长”等事件;但“认识团长”就不一样了,没有任何规定限制我们在“认识团长”之前必须“认识连长”。同样的,“找出四个例子”是以“找了三个例子”为前提的,“来了748个人”也不是一下子就能实现的。

    问题算是想通了,但怎么来阐述它呢?在这个问题上,语言学陷入了一个困境。此时,引入数理逻辑语言对于解释这种语言现象出乎意料的方便。我们说,在副词“只”修饰的事件所处的“域”中如果存在蕴含关系,则这里的“只”不能用“光”来替代。例如,提起“吃两个苹果”,我们脑海中形成的事件集合一定是“吃一个苹果”、“吃两个苹果”、“吃三个苹果”等等,而后者必然蕴含前者,因此“只吃两个苹果”不能说成“光吃两个苹果”。类似的,“当到团长”必然推出“当到连长”,但有“认识团长”不见得有“认识连长”,因此两者与“只”和“光”的搭配情况是不同的。


    有人或许会说,为什么不直接说这是由“事件发生有无必然的先后顺序”所引起的?事实上,不仅仅是事件先后顺序,在更抽象的领域里,上述理论同样起作用。例如,我们可以说“x只是一个有理数”,但绝不会说“x光是一个有理数”,原因就在于,“x是整数”、“x是有理数”、“x是实数”等事件是有蕴含关系的,虽然它们之间并没有时间先后的联系。

    在研究语言学,特别是语义学时,数理逻辑符号能够如此有效地解决问题,以至于语言学家们完全借用了整个数理逻辑体系,开创了一个语言学分支叫做“形式语义学”。形式语义学不但把自然语言中的个体、行为、联结词、谓词进行符号化,还引入了一些新的符号来表示会话中一些更加复杂的情形。例如,“明天可能要下雨”是真的,但“昨天可能要下雨”就不见得为真了。但由于数理逻辑中没有“可能算子”,这种普遍的会话将得不到数理逻辑形式。至于一些的确存在真假但却很可能永远无法判定其真假的命题,如何确定其语义形式就更加困难了,例如“Goldbach猜想可能是真的”、“当初Fermat可能根本就没有证到Fermat大定理”。还有一种更特殊的情况:假如一个人说“微积分的创立完全有可能提前100年”,虽然与事实相悖,但从会话目的上看这句话确实为真。为了解决这些问题,形式语义学引入了模态算子,将命题的“真值”扩充为可能的、必然的、偶然的(可能但不必然的)三种,这种可能性通常解释为“所有逻辑上可能的平行世界中是否成立”。如果在某些世界中命题成立,我们称之为“可能的”;如果在所有的世界中命题均成立,我们称之为“必然的”;如果命题在我们所处的世界中碰巧为真,但在其它世界中不见得为真,这就被归为“偶然的”。模态算子有两个,□算子(必然算子)和◇算子(可能算子),它们之间存在关系□p↔¬◇¬p和◇p↔¬□¬p。另一些常用的公理有□p→p、□(p→q)→(□p→□q)、p→□◇p等等。有了这些符号,数理逻辑便可以用于解释各种会话场合中的语句。

    利用形式语义学,自然语言中的含混和歧义能够被非常有效地消除,便于深入研究语义关系,也便于将其转化为计算机能够理解的语言。语言学家甚至借用数学中的公理化方法,构建了公理语义学体系,将语义推导的过程彻底地程序化。

    学科之间的促进作用永远是相互作用的。上个世纪初,在语言学迅猛发展之时,语言学家借用并且发展了数理逻辑符号,促使数理逻辑模态算子的产生。但是,估计语言学家们再怎么也不会想到,随着计算机的发展,数学科学反过来解决了语言学中的一些大问题。

    随着网络的高速发展,搜索引擎系统急需要开发出一套中文分词技术。如何用计算机将一句话中的词语切分出来?建立一个词典并不难,难就难在当划分方案不止一种时该如何取舍。上世纪末,不少人都在这个课题上做过尝试。一种比较好想的算法是,从前往后不断匹配最长的单词。很多场合下这种方案都是可行的,但算法的反例也有不少,例如“北京大学/生活/动/中心”显然错了,这句话其实应该划分为“北京/大学生/活动/中心”。还有人曾经提出过“最少词语切分方案”,即当一句话有多种切分方案时,取词语数最少的方案。这种方案的效果也不好,例如“我/也/考虑/过去/北京”显然不对,正确的应该是“我/也/考虑/过/去/北京”。

    统计语言模型出奇简单地解决了这个问题。假设x_1, x_2, …, x_n是一个分词结果,我们想要计算该序列是一个合法句子的概率P(x_1, x_2, …, x_n),它相当于P(x_1)·P(x_2|x_1)·P(x_3|x_1,x_2)·……·P(x_n|x_1,x_2,…,x_n-1)。为了使问题变得更加简单,我们采用Markov假设,认为一个词出现的概率仅仅与它前面那个词有关。于是有P(x_1, x_2, …, x_n) = P(x_1)·P(x_2|x_1)·P(x_3|x_2)·……·P(x_n|x_n-1),而每个P(x_i|x_i-1)的值(词语x_i出现在x_i-1之后的概率)都可以在分析了大量语料之后统计得出。接下来,我们只需要在众多切分方案中选择成句概率最高的那一个即可(这一最优化问题还可以利用动态规划进行加速)。

    这一个模型异常简单,但实际效果出人意料的好。事实上,这一模型不但解决了分词问题,连语音识别、多音字注音、输入法智能成句输入等问题都一并解决了,识别准确率提升了一个数量级。

    数学思维已经不止一次帮助人们设计语言文字的机器处理算法了。这里我们还可以再看看拓扑学在文字识别方面的贡献。OCR是一种能够把以图片方式储存的文字信息转换为文本的技术,它可以用于将打印稿成批地扫描并还原回文本文件。设计OCR系统的一大难点是,即使图形近似匹配算法能够非常准确地识别出文字,若每处理一字就要与字库中的上万个字一一匹配,其处理速度无论如何也不能投入实际应用。一种容易想到的权宜之计便是首先匹配字库中的常用字,若匹配成功则继续处理下一个字。这种办法并不能从根本上解决问题。另一种颇具启发性的想法便是将字库中的字形按照所占平面空间的多少进行排序分类。这可以在一定程度上缩小匹配检索的范围,速度有了一些提升。此时,拓扑学再一次显示出了它强大的力量。我们可以从拓扑不变量出发,寻找字形的本质特征,把字库中的每个字进行编码分类。例如,“估”字就是一个有两个连通分量、一个环、两个度为三的点、一个度为四的点组成;或者通俗地说,“估”字有两个相互分离的部份,有一个“洞”,有两个三叉路口,有一个四叉路口。我们就把“估”字编码为2121。对于一些模棱两可的字形,不妨允许它存在多个编码,同属于几个不同的组。识别文字时,我们只需要计算出该字的编码,然后尝试和字库中有相同编码的字形进行匹配即可。这种算法简洁、美观而有效,并且更加神奇的是,这种算法能够直接用于各种不同的字体,甚至当图片上的文字倾斜、颠倒、大小不一甚至扭曲时该算法仍然能够有效地分析出文字的结构。拓扑思想又一次向人们展示出了它那独特的魅力。

21 条评论

  • XieXnot

    我的sf

  • Dan

    板凳…
    膜拜下~

  • starwing

    为什么总是抢不到沙发呢…………

  • Ai.Freedom

    yanyang是不是也上这个课? 她的论文呢?

  • leeveenee

    我大学主修课程是数学,看到你的博客才意识到数学是多么美丽和神奇,呵呵
    很佩服你!!!

  • cgy4ever

    不错,例子都很经典

  • tnczae

    有意思

  • 阿企

    不错,比我写的好,呵呵。

  • turtleizzy

    看到M67牛的文,我仔细思考了一下最后这个有关汉字识别的问题-w-
    拓扑等价性来区分汉字不是充分的,例如凹凸二字显然拓扑等价。然而作为一种剪枝措施应该是很有效的。
    我相信人脑对汉字的识别是基于加强的拓扑等价性,至少需要加入「折角的相对方向」「斜线的相对方向」两个参量。
    汉字的书写是有方向和参考线的,可以利用这些来确定相对方向。
    1.一般来说把汉字倒过来看比斜过来看要难理解得多(难理解的具体表现是识别时间变长,大概是人脑需要把图片倒过来再加入识别过程),说明人脑对汉字图片的处理是具有方向性的。这种方向性大概是来源于后天的教育和长期的习惯。简单地说,汉字是有水平参考线的。
    2.汉字总体给人的感觉是方正。字形大多是在水平参考线的基础上垂直扩展开的。这样就是说,汉字是有竖直参考线的。
    因此识别汉字的过程我想首先需要找到这两条参考线,然后根据参考线来判断「斜线」和「折角」。人脑的鲁棒性是很强的,这些参考线既可以是直的也可以是直线加上一些抖动,但是这些抖动如果超过了某个阈值,人脑就难以识别了。例如http://img121.imagevenue.com/img.php?image=96457_111231_122_249lo.JPG(这儿大概是不能用ubb代码的,也不知道能不能贴图,就直接给地址了)。虽然都是王字,而且拓扑等价(虽然上述加强的拓扑关系如果不考虑参考线的话是不等价的),但我们更容易识别前两个而不容易识别第三个。此外,「折角」和「抖动」的差别也存在一个阈值。就不再举例了。

    然而只考虑拓扑,有时候也会出现问题。例如如下几个情况
    http://img257.imagevenue.com/img.php?image=97333_1121112_122_525lo.jpg
    1是利用了人脑的补完机能(可以参考http://mindhacks.cn/2009/03/15/preconception-explained/)
    23是一些错误的拓扑关系,3还包含一些只能靠人脑的推断来消除的错误
    4是具有对称性的汉字的参考线存在二义性,以及根据上下文消除的二义性。

    [color=white]P.S:上面两张图中有一处明显的错误,只是考验考验大家是不是也对某人有那独特的爱而已……

  • wuzhengkai

    膜拜

  • NULL

    顶一下10楼

  • key4ever

    日月两泉明白水。

    大家对对下联。

  • Fanjun

    的确 数学是现代自然科学与社会科学的基石

  • Destiny.Sky

    同地下室~如果67MM也上这个,好想看她的论文~呵呵~~

  • wcj4ever

    同下地壳

  • Cara

    一看题目想起Chomsky,仔细再一看是关于中文的,也很棒啊,很棒。

  • wll.杰

    当到团长这句,不要”到”字,只和光可以互换.如你只当团长,也可以说成你光当团长!

  • 放养的夏天

    今天无意翻到这篇老文章 很有趣的例子

回复给 cgy4ever 取消回复