关于人工逻辑语言

本文试图定义「人工逻辑语言」,借此帮助读者了解话题的范围以及范围内的主要问题。

欢迎讨论与贡献。

什么是语言

语言的使用包含着非常多的现象,且在整个社会生活中起到非常基本的作用,很难通过穷举现象的方式对这个概念的范围予以厘清,本文暂不尝试这样做。

尽管我们直觉上大概知道我们所在谈的是什么,但「语言」这个词的所指范围往往会有一些值得注意的分歧:

  • 研究对象是否可以用不很复杂的形式规则刻画,且语言使用者可以借助对这种刻画的认识来选择、改变自己所遵循的规则?
    • 是:结构主义的 1

    • 否:非结构主义的

  • 如果对象有结构/规则,研究对象是规则本身,还是对规则的应用实例?
    • 规则:索绪尔的langue

    • 实例:表达,索绪尔的parole

  • 如果对象有结构/规则,更偏好于以下何者?
    • 更低的规则复杂度

    • 更强的规则解释力

  • 宣称对以下哪些现象负有解释的责任?
    • 人际交流:作为交流工具的语言

    • 内在的言语推理:作为逻辑思维的形式表示的语言

    • 非逻辑的,如辱骂用语:作为思维的外在体现的语言

    • 未习得、正在习得语言的婴幼儿的概念认知:作为认知的组合性的体现的语言

  • 何种研究目标?
    • 研究语言使用的基本规律:科学视角的

    • 研究作为工具的语言:工程学视角的

    • 语言现象的收集与演化规律:历史学视角的

    • 研究语言对其他社会活动的影响(如地域性语言文化)等:其他

以上分歧没有预设的对错之分,只是不同的研究对象,这些对象是我们从纷繁复杂的语言现象中抽象出来的概念和研究方法。

1

在其他文本中,「结构主义」通常不是取本文的含义。那些“结构主义”通常是与哲学、历史视角的语义学相对,具有反心理主义、反历史主义、反地域主义特征。

什么是逻辑语言

据暂未考证的传言,人工语言设计者圈子中对「逻辑语言 Logical Language」一词的使用源于1990年代的两个人工语言设计方案 loglan 和 lojban 。最早的大量出现则是在1955年的 loglan 中。 在人工语言设计者中,这个词大体上代表着一种「基于形式逻辑」的印象,并被未经审视地使用着。 这个词同样有多种定义,本文会列出它们并尝试予以分析。

被声称为是逻辑语言的人工语言

名称

创始年份

Loglan

1955

Lojban

1987

Guaspi

1989

Liva

1995

The Toaq family

2014, 2017

Ceqli

1990(?)

Xorban

2012

对这些语言的设计的分析在计划中,但尚未开始。原则上可以基于这些分析来给出定义。

逻辑语言的特征

在2004年维基百科词条 https://en.wikipedia.org/wiki/Engineered_language#Logical_languages 创建时, 「工化语言 Engineered language」被等同于「逻辑语言 Logical Language」,其被描述为:

  • 是「人造语言 Constructed Language」

  • 构造的意图在于服务某些逻辑的或哲学的实验

  • 允许「无歧义的 Unambiguous」表述

  • 基于某种形式逻辑,最为典型的是基于谓词逻辑

  • 最为著名的实例是「loglan」及其后继者「lojban」

后来词条中的定义更改过表述(2005),包括:

  • 将逻辑语言和工化语言区分开来

  • 区分「句法歧义」和「语义歧义」

但它在根本上没有什么改变。这个词的许多内涵也仍在被现在的语言设计者使用。

这些定义看上去非常符合 loglan 与 lojban ,难免让人怀疑是“先开枪再画靶子”的结果。 但这种抽象概念的产生,体现的是人们已经意识到同时期出现的多种人造语言具有某种共性。根本上,它们是20世纪的语言逻辑研究与民间的世界大同语梦想相结合的产物。

下面介绍一些较多地被现代造语者所认同的定义。

关系符号-常数符号带来的树结构

在汉语语句 我知道我活着 中,它可以被看作这样一个具有树结构的表达式 知道[我, 活着[我]]

flowchart TB a[知道] --> b[我] a --> c[活着] c --> d[我]

这种结构较好地刻画了含义的组合性,组合性允许你将 天是蓝的 一语中的 换掉从而得到 海是蓝的 ,后者仍是可理解的句子。

其对应的一维表达式可写作 是蓝的[天]是蓝的[海] 。其中我们称 这两个「常数符号」指向一个固定的「对象」,而 是蓝的 这个符号则无法单独构成句子来表意,被称为「不饱和符号」。由于这些不饱和符号往往描述了对象上的一种性质或对象间的关系,它们在逻辑中常被称为「关系符号」。

这些符号将是讨论语法乃至语义的基本单元,坚持使用它则相当于是假定:总是可以选取足够好的基本单元,使得各种需求得到满足。

单解析性:消除句法歧义

现代语义学正在试图用逻辑的(包括谓词逻辑、类型论等)框架去分析自然语言语料,多数情况下我们都可以分析出一个句子的“语法树”乃至“语义树”(暂不澄清什么是语法/语义树)。难道所有的自然语言都能算是逻辑语言吗?

为了给出否定的答案,我们一般对逻辑语言有更强的要求。一个典型的要求就是所谓的「单解析性 Monoparsing」:对于每个语句,其有且仅有一个树表示。

不具备单解析性的一个案例是 I saw a man with a telescope 。从英语语法理论看来, with a telescope 可以是 man 的补语,也可以是 saw 的补语,那么 根据这个理论 所构造的语法树就有多种可能结果。

从「单解析性」的定义不难注意到,单解析性的存无在一定程度上取决于语法树构造方法的选择,它是刻画语法树构造方法的指标之一。 但它并不是语言设计者关心的核心指标。 实际上很容易构造一个具有单解析性的语法树构造方法,比如给每个词编号,然后用这些编号数字作为数位来构成一个数,这样得到的数可以与词所构成的句子一一对应。 但这显然不是我们想要的——几乎没有任何语言不具备这种意义上的「单解析性」。

你可以通过要求句子对应于「树」这样的对象而不能是「数」来拒绝上面的构造方法,但有一个问题值得思考:「我们为什么要求用「树」来表示句子?它的特点、优势在哪里?」 要回答这个问题,就不可避免地要谈语义的 组合性

我们之所以希望赋予句子另一种表示,是希望借助这种表示来(令人或机器)更好地认识句子语义的组合性。 I saw a man with a telescope 这个句子可以表示为这样一个树 List[I, saw, a, man, with, a, telescope] ,但这样的表示显然并不能满足我们的认识需求,它仅比字符序列多提供一点点帮助(用程序语言术语来说,它只完成了「Tokenize」)。

这里要强调的是:不可能脱离语义上的考虑而谈一种纯粹的“文法的单解析性”,否则那绝不是我们在乎的。用生成语法理论的术语说就是:「什么是「 Logical Form 」」是一个至关重要的问题。

然而,这并不意味着我们完全不能在不弄清楚这个问题的前提下进行逻辑语言设计。 Toaq 语 的作者在博文 Logical Language Misconceptions 中如此说道:

Depending on the theoretical framework, linguists may differ on how “early” the syntactic object is “sent off to the semantics module”, and whether scope is resolved post-syntactically or not (e.g. whether quantifier raising is syntactic or post-syntactic, if it exists at all — it does not in my analysis of Toaq).

.…..I myself don’t find the monoparsing definition underwhelming (with or without monosemy), as it is challenging enough to get that part right.

句法原子与语义原子间的同构

经过上面的考虑,我们发现我们在乎的似乎是一个含义的最佳表示与字符序列之间的转换方法的性质。造语者中已有人在使用比较符合这一观点的一个定义,他们说:「句法和语义同构的语言是逻辑语言」。

但这一定义仍是含糊的:

  1. 既然声称句法和语义之间有一个同构,那么被映射的成员是什么?

  2. 考虑到句法和语义都有其各自的组合性,这个映射还应该是“保组合”的。要谈论这一点,又有了新的问题:语义的组合性是什么?组合的“原子”有哪些?

这实际上是语言哲学的一个中心问题。

在一些神经、认知、心理等领域的研究者看来,它们认为对神经冲动等底层现象的描述才有可能足够完美地解释「一个句子的含义是什么」、「为什么组合性的现象存在 2 、这现象什么时候不存在」。但对于语言设计者而言,我们无法逃避用简单的形式规则去刻画含义的组合性的任务。

2

对这个问题的一个经典回应是 思想语言假设

尽可能避免语义歧义与模糊

以上的定义都是较为“激进”的,它们试图给出一个语言的评判指标来判断一个语言是不是逻辑语言。 但我们也可以用一个保守的定义:「为避免某些不利的语言现象作出了刻意努力的语言是逻辑语言」。 这样一来,「逻辑语言」的定义的问题就变为了对「某种不利的语言现象」的定义的问题。 我们可以通过描述、检测现象的存无来完成定义。

有多种与「语义模糊」有关的语言现象。我们可以借助以下方法来确定多种含义的存在:

  1. 令一个词的多种含义在同一个句子中被用到,且影响整个句子的含义(如真值)。如:
    • 多义的合取测试法
      • The colors are light. (正常)

      • The feathers are light. (正常)

      • The colors and the feathers are light. (奇怪)

  2. 观察含义理解(如真值判断)的稳定性:一个相同的句子在不同人、不同时刻的判断中可能有不同的真值。如:
    • 由于过去常见到的周遭的人的身高分布不同,不同人作出「张三很高」的判断的可能性也不同。

  3. 观察判断的自信程度:一个人可能对于自己是否能作出判断感到疑虑。如:
    • 堆垛悖论:一粒沙子不能构成沙堆,两粒显然也不行,那么多少粒可以?我们往往难以对此作出判断。

  4. 真值的语义蕴含:如果对于一些乃至所有的句子模板 \(f\) ,句子 \(f(x)\) 为真时 \(f(y)\) 也总是为真,那么我们认为 \(x\) 语义蕴含了 \(y\) ,逻辑上一般记作 \(x\vDash y\) 。一个词可以真蕴含于多个词。
    • 例: 这里有一头猪 为真时, 这里有一只动物 总是为真。

这里命名一些常见的涉及多种含义的现象 3

  • 「多义 Polysemy」
    • 使用者通常能清楚地认识到多义的存在。

    • 这些含义通常差别较大,之所以会有相同的形式,可能是因为经历了外来词的合并与转写等历史过程。

    • 有一些词的不同含义具有不同的语法范畴地位,但也有一些词有多种作为同一词性的含义。有时可以借助以下测试方法辨别它们。(待翻译/本地化)
      • 合取测试法
        • The colors are light. (正常)

        • The feathers are light. (正常)

        • The colors and the feathers are light. (奇怪)

      • 量化测试法
        • Each thing exists on the ground is a crane. (假定此刻地上确实有一只鹤和一台起重机.)

      • 矛盾测试法
        • That bank isn't a bank. (可能的)

        • That dog isn't a dog. (不可能的)

  • 「模糊 Vagueness」
    • 「语境 Context」
      • 我们能够可靠地理解句子,但影响理解结果的因素不全在句子内部有对应。

      • 我说「张三高」是因为看他需要抬头看对方的脸,通过这种体验的稀有性意识到对方高身长的稀有性。这种判断是自信的,但作出这判断的信息要素在句子内找不到,不保证他人能复现这一理解。

      • 在具有较丰富的使用实践的语言中,此类模糊一般来说可以通过向句子补充信息消除。

    • 「无知 Ignorance」
      • 我们不能够稳定、自信地判断句子的真假,说明这个句子本身缺乏一种现存的理解方式。这种模糊的根源是知识的缺乏。

      • 一些句子的模糊可以在未来获取更多的知识后被消除。如:
        • 你可以说「这栋楼高100米」而不能说「这栋楼高10000厘米」,是因为你在说话时暂未进行精确的测量,这种测量在未来是可行的。

      • 有一些概念,如「堆垛」,可能根本没有一种实证手段可以完全消除模糊。这意味着知识的缺乏是必然的、源于概念本身的缺陷,尽管这不影响这些概念的实用性。
        • 如果认为「颗粒计数」和「堆垛描述」是对物体的同一数量性质的描述,那么可以把前者看作后者的精确版本,那么这种广义的「堆垛」概念的模糊也就成为可消除的了。

    • 「广延 Generality」
      • 我们有足够的知识来可靠地理解句子并作出真值的判断,但知识状态有高低之别。

      • 我们理解句子所需的要素要么是公共知识,要么已包含在句子中。

      • 通常一个词总是语义真蕴含它的广延化。

      • 例: 动物 更加广延。

这些现象有时是我们需要的,有时是我们想要避免的。要提高语言的性能,一方面我们需要改善语言设计来提高我们对上述各种现象的掌控能力,另一方面也要研究清楚哪些场景会需要它们、哪些场景会想避免它们,然后针对性地提高设计上的支持。

常见的需要容许甚至刻意利用模糊的原因有:

  • 希望降低表达的成本
    • 消除多义要求引入更多的可区分的标识符,这自然会提高表达长度的下界。

  • 希望允许对知识的缺乏。这可能是因为:
    • 实用的目的不需要那么多知识。如:我们使用「堆垛」概念只是用于指称一些颗粒集体,其内容的精确数量我们不关心。又如上面所说的「楼高」的例子——精确到米和毫米的测量有着很不同的成本。强制使用精确表达会导致以下两种情况之一:
      • 在缺乏知识的情况下强行认为选取一个精确的表达(如 1.0000米 ),而令其他人对你所掌握的知识水平有误解。

      • 强制要求语言使用者去获取精确的知识。这会大幅提高表达和理解成本,极端情况下可以高到人类无法承受的地步。

    • 我们目前无法摆脱这非常有限的认识水平

    • 对神秘感的艺术追求等
      • (暂时懒得翻译) A boy said “buy a surprising gift for me” (and might have narrowed the range of acceptable gifts by “expect toys”). If you bought a hat for him, you can say “this hat is that surprising gift”. But this is impossible for the boy to know this sentence while he was expressing his demand, otherwise it won’t be surprising.

以上的描述是一个“远观”的现象视角。更好的定义可能应当基于知识论等。理解方式和解决方式的选取仍有些争议,在此暂时不表。

3

命名尽量使用了主流的名词,但选取的方式可能是非主流的,以确保它们在本文档内部有恰当的区分度。

什么是人工语言

「人工语言 Artificial Language」或「人造语言 Constructed Language」一词主要是要区分于「自然语言 Natural Language」。

一般来说,自然语言是“野蛮生长”的,随时可能有新的词汇为某种表达需求而创造,然后传播到更广阔的人群中。自然语言的文法往往也不被严格遵守,常有新的用法的创造。

与其相对,人工语言通常遵循中心化的规则,具有更可控的自我拓展方式。借助对表达需求的更长远的考虑与更积极的支持,它可以普遍地令语言的规则成为明文的、简单而很少有例外情况的。而自然语言若要舍弃历史包袱,则用户很可能要付出不比学一门新语言小的代价。

总的来说,讨论「什么是人工语言」本身的意义并不大,我们实际上需要讨论的是类似「如何维护一个语言的生态,使其得以免于大幅的更改和大量例外规则的补正」的问题。