语义学是对意义(meaning)的研究。本书(除了后一章)主要关注的是语言表达的意义,这里的语言表达指的是句子或者更长的文本,而不是计算机程序、数学公式或者更广泛的符号学所关注的意义。一般来说,语义学更多指的是单词的意义,但是Urban Dictionary将语义学定义为:
讨论单词或词组在特定语境中的意义的研究,通常是为了赢得某种形式的争论。注意,不要陷入语义学的泥潭中。
这一领域可以被归类到语言学、计算机科学、哲学或认知科学中的任意一个学科内。本书在页边将一些段落特别标记为Ling(语言学,linguistics)、Comp(计算机科学,computer)、Phil(哲学,philosophy)或者CogSci(认知科学,cognitive science)。本书的这种组织方式也反映了语义学这一学科的模糊性。因为没有人能成为所有这些领域的专家,所以本书会分别讨论每一个领域的基础知识。
谁应该阅读本书?
我们的目的是提供概念化(conceptual)和形式化(formal)的工具,用于建立能够理解文本的语义系统。该系统既面向信息提取、问答等特定任务,也面向语义网等更宽泛的任务。我们的目标是介绍工作系统(working system)所依赖的基本思想,这主要针对对开发语义系统感兴趣的计算机科学或者工程专业的学生。本书理想的读者是黑客,即喜欢深入了解系统内部工作原理的人,他们不仅愿意尝试和实验不同的事物,而且乐于研究数学模型。从这个角度来说,本书是比较难理解的,因为书中所使用的句子很长,有很多很长的单词,也没有使用类似侧边栏材料的排版技巧,所以无法根据关键字快速粗略地阅读。而且我们还假设读者会花时间完成练习题,并在读不懂时查阅相关的资料。
本书的重点在于思想,但是我们也在GitHub上准备了很多相关的代码(大约2500行)。我们希望读者的学习计划以实践为主,从代码开始,只在需要时才参考书中的内容。不过,我们也必须提醒这些以实践为主的读者,书中所讨论的内容中只有大约三分之一附有代码,其余的部分需要自己解决。其他更传统的阅读建议可以参见1.5节。
如果你学习语义学是想通过代码来执行语义任务,那么可以从本书代码的文档参考中找到相关的网站文本和不断增加的Python代码之间有双向超链接。本书是为有经验的软件开发人员准备的,没有介绍Python,也没有为代码提供详细的文档。强烈建议读者参与到代码更新中,见https://github.com/kornai/4lang(需要在比GPL更弱(更宽容)的CC Attribution或类似许可下,允许商业重用,并且不能对代码的其余部分产生任何病毒式的影响(GNU LPGL、BSD和类似的许可证都可以))。
以计算为导向的读者,比如计算机科学/工程专业的研究生或高年级本科生,会发现除了第2章总结的数学基础知识以外,其他章节是相对独立的。在本书的其余部分,我们会针对自然语言(而不是程序语言)进一步开发和探索这些数学基础知识。由于我们选择自然语言作为研究主题,这些内容与现在在程序语言语义学中被视为理所当然的数理逻辑基础知识几乎没有共同之处。程序语言语义学的核心是用程序证明(proof as program)。在程序语言语义学中,一个有趣的事实是,逻辑学家在对数学原理证明的分析过程中所使用的词汇表(在2.6节中有简要介绍)与计算机科学家为了研究计算理论所建立的词汇表有很高的重叠度。对于熟练的程序员或者逻辑学家而言,这种奇妙的联系是非常吸引人的。但是对自然语言的处理只需要更简单的零阶(zeroth order)理论,即带有一些模态扩展的命题演算,而更复杂的问题是有关概念的可学习性。
为了建立一个能处理自然语言输入的系统,需要大量的语言学知识,而在本书中,标记为Ling的段落是面向不熟悉语言学知识的读者的。限于篇幅,我们不可能介绍全部常用的语言学技术机制,因此,这些段落实际上只是对语言学知识进行了简单的介绍,更基础和详细的内容需要读者自己从这些段落的参考文献中获取。而且,由于本书所介绍的内容都是为了解决实际的语义学问题,所以本书引用的语言学文献并没有涵盖语言学的全部范围,甚至并没有包含当代语言语义学的全部范围。Jacobson(2014)出版了一本详细且系统地介绍成分语义学(compositional semantics)的优秀书籍,因此本书将把更多的篇幅放在词汇语义学(lexical semantics)上。
语言学专业的学生,尤其是具有计算思维的学生,可能更容易掌握这些需要学习的内容,尽管本书所涉及的内容与经典的语义学课程有很大区别。那些缺乏计算机基础的学生可以先阅读Jurafsky和Martin(2009)或者Bird、Klein和Loper(2009)的书籍。本书涉及哲学或者认知科学的内容比较少,但涵盖一些重要的数学基础,我们将在第2章中讨论。
标注Phil的段落通常讨论的是哲学相关的话题,比如语言哲学、科学哲学等。当我们需要从根本上讨论一些问题的时候,需要大量地运用哲学思想,比如在第3章中。在本书中,我们会经常将所讲述的内容与哲学观点相联系,但是本书所包含的哲学内容并不是对哲学知识的系统性介绍,也不适合没有哲学基础的人自学使用。相反,本书是为那些已经有一定哲学基础的读者准备的,目的是引导这些读者了解本书所讨论的内容如何与相关的哲学观点和讨论联系起来。
我们为一些著名的哲学难题提供了新的解决方案,特别是谷堆论证(又称连锁悖论)和分外功行(supererogation),但是我们的讨论都是面向实际问题的(因为我们实际上是在系统设计的过程中涉及了相关的话题),而不会提供完整、详尽的哲学论述。一般来说,哲学专业的学生会对一些宏观的问题进行深入的学习,比如,什么是意义?什么是知识?什么是真理?但这里并没有对这些问题进行系统的哲学论述。我们提供的是一种高技术含量的模型,能够从计算机和数学(更多的是基于代数学而不是逻辑学)的角度,对意义(meaning)、知识(knowledge),以及真理(truth)进行建模。
我们没有在(哲学)逻辑学相关的章节中引用计算机和数学相关的基础知识。在1.5节中,我们提供了一个针对哲学的阅读计划。在阅读本书的时候,哲学家需要明白,我们不会得到一门非常专业化的技术性语言。在分析权利(right)时,我们针对的是日常概念,而不是经过简化后的权利概念。当然,我们将区分right1 dextra与right2bonus和right3ius,但对后一项的定义只是法律,而法律又被定义为rule, system, society/2285 HAS, official, ACCEPT, ABOUT can/1246[person[=TO]](这些定义的形式化理论见6.5节)。粗略地说,法律是社会的规则体系,被官方认定并且被人们所接受,定义了人们可以做的事情。但与此同时,我们也容易想到,不是也存在不为人们所接受的不公正的法律吗?难道没有超越社会的权利吗?我们认为,这些问题虽然很有价值,但不能在研究日常语言的过程中得到很好的解决。引用Kornai(2008)的一段话:
由于几乎所有的社会活动终都依赖于语言交流,因此很多人试图将其他研究领域的问题简化为纯粹的语言学问题。与其理解精神分裂症,也许不如首先思考多重人格(multiple personality)这个词的含义。数学已经提供了多重的概念,但什么是人格?一个人又怎么会有多个人格呢?对后缀-al和-ity的正确理解会是解决这个问题的关键吗?
初,理解系统(understanding system)是由一些研究人工智能的学者比如Allen Newell和Herbert Simon建立的,他们试图对人类的认知系统进行建模,或者借鉴对人类思维组织系统的已有研究来设计自己的系统。一些系统(如SOAR或ACT-R)仍在使用中,而另一些则被OpenCog等新的认知架构取代。
随着功能磁共振成像技术(functional MRI)的出现,这一领域得到了极大的发展,但本书很少涉及这一快速发展的领域。除了作者本身的局限性外,另外一个重要的原因是,试图从自然中借鉴思想进行自然语言处理已经被证明是一个死胡同。
主流的语义系统,比如IBM的Watson,并不是巨型的电子大脑,实际上,它们从生物系统中借鉴的内容很少。一些组件可能使用的是神经网络,但更多的情况是一些统计模型,如支持向量机,这些统计模型并没有从生物学借鉴任何内容。在BICA Society的领导下,认知科学家正尝试研究新的生物启发模型,但到目前为止,他们在语义学的核心问题上还没有获得太大进展。
随着算法的设计越来越仿照人类社会,面向自然语言理解设计的算法架构可能也会引起哲学家和认知科学家的兴趣,第3章和第9章将包含很多相关的材料。不过,这些学科所涵盖的范围很广,超出了本书的范围。强烈建议哲学专业的学生参考Boden(2006)的书的第16章,认知科学专业的学生应该阅读Boden(2006)的全部两卷,以及Gordon和Hobbs(2017)的书。这些不是本书的基础知识,而是为了帮助你获得更深入的理解。本书在很大程度上是对Boden(2006)的补充,因为本书将非常详细地介绍当代语义学的技术机制,并且因为在Boden(2006)之后出版,所以本书将涵盖许多Boden没有介绍的内容。
本书高度赞同具身认知(embodied cognition)的主张和思想,但是会借助形式化的符号来处理问题,因为本书关注的是构建能够执行语义任务的算法,如图解推理(schematic inferencing)(见7.1节),即使这种形式化是以牺牲认知现实主义(cognitive realism)为代价的。本书是为那些对制造飞行器感兴趣但不关注鸟是怎么飞的人准备的。对认知科学专业的学生来说,的安慰就是一些技术设备(technical apparatus)(不妨理解为空气动力学原理)会与认知科学有一定的共通性。1.5节中为认知科学家提出的阅读计划将强调这一共通性。
排版说明
针对那些我们认为读者已经知道但可能需要深入了解的概念和观点,书中用黑体表示并给出了其维基百科(Wikipedia,WP)、PlanetMath或斯坦福哲学百科全书(Stanford Encyclopedia of Philosophy,SEP)的链接。这些链接可以从http://hlt.bme.hu/semantics/external获取。在给出一个术语的正式定义之前,我们可能会非正式地使用这个术语。本书中所使用的符号约定不一定与上述链接中的一致,例如,我们使用表示有序对,而维基百科中用(a,b)表示有序对。
虽然本书涉及的技术资料多种多样,但是这种多样性将包含在统一的方法论中。哲学和逻辑
译者序
前言
第1章 引言 1
1.1 语义合成性和语境性 1
1.2 选择主题 3
1.3 信息内容 5
1.4 本书内容概览 7
1.5 阅读计划建议 9
1.6 扩展阅读 12
第2章 线性空间、布尔代数和一阶逻辑 15
2.1 代数和布尔代数 15
2.2 泛代数 18
2.3 滤子、超滤子和超积 19
2.4 命题演算 22
2.5 一阶公式 27
2.6 证明理论 29
2.7 多元统计 32
2.8 扩展阅读 41
第3章 预述法 43
3.1 理解 44
3.2 小化理论 47
3.3 空间和时间 49
3.4 心理学 54
3.5 规则 56
3.6 规律 60
3.7 标准理论 64
3.8 必需条件 68
3.9 连续的向量空间模型 72
3.10 扩展阅读 77
第4章 图形和机器 79
4.1 抽象有限计算 79
4.2 形式语法 85
4.3 小的机器 93
4.4 图形和机器操作 94
4.5 词素 97
4.6 内部语法 102
4.7 扩展阅读 107
4.8 附录:定义词 108
第5章 表型语法 112
5.1 层次结构 113
5.2 形态学 115
5.3 句法 121
5.4 依赖关系 131
5.5 代表知识和意义 137
5.6 头脑中的想法 141
5.7 语用学 145
5.8 估值 152
5.9 扩展阅读 155
第6章 词素 157
6.1 词条 158
6.2 概念 160
6.3 词汇类别 164
6.4 字义 167
6.5 正式模型 175
6.6 词素的语义 178
6.7 扩展阅读 180
第7章 模型 182
7.1 原理推论 182
7.2 外部模型 186
7.3 情态 190
7.4 量化 197
7.5 扩展阅读 200
第8章 具体化 202
8.1 认知能力 203
8.2 行为 209
8.3 副词 215
8.4 扩展阅读 217
第9章 人工生命的意义 219
9.1 道德哲学 220
9.2 道德法则的经验基础 223
9.3 元理论注意事项 227
9.4 正式模型 230
9.5 总结与结论 232
9.6 扩展阅读 234
部分练习提示 235
部分练习解答 236
参考文献 237