98. 这司马懿真是一条鳟鱼啊!
在上一节中我们讨论了量词这一对东亚语言来说非常重要的语言现象。在这一节中,我们则将要讨论一个几乎对所有的人类自然语言来说都非常重要的语言现象:隐喻。不过,“隐喻”是一个稍微有点门槛的修辞学术语。我们的讨论将从大家都知道的“打比方”说起。
打比方的两种形式:明喻和隐喻
“打比方”的意思我就不做解释了。它的术语化的说法就是“比喻”。比喻分两种:一种叫明喻,一种叫隐喻。什么叫明喻?“姑娘就像花一样”,这就是一个明喻。为什么是“明”的?因为这句话里面明明白白地出现了一个字:“像”——你听到“像”这个字,就知道这是一个比喻了。当然也不一定要用“像”,你也可以用其他的表达式去传达类似的意思,如“仿佛”——比如下面这个句子:“小芳读了这封信以后,脸颊上仿佛是泛出了两片红晕”。这句话里面的“仿佛”,也是在提示大家这是一个比喻。
至于隐喻,也算是比喻的一种,但是其特点是:句子里不会出现像“像”“仿佛”这样的词来明确地告诉别人:这是一个比喻。听话人得自己体会出这是一个比喻。
比如说,1939年秋天日军的将领阿部规秀被八路军击毙后,日方的报纸就哀叹“帝国之花凋谢在太行山上”。这句话里,“帝国之花”指的就是阿部规秀——但是报纸上的标题并没有明说“阿部规秀像帝国之花”——它直接就用“帝国之花”这个表达式了。所以,这句话的字面意思似乎就是说一朵花凋谢了,但实际上它是指一个人死了。所以,看这份报纸的人,得想一想才能弄明白它到底是在说什么。这就是人类使用隐喻的一个案例。
人工智能可听不懂隐喻
在所谓的明喻和隐喻之间,哪个表达方式更让我们在哲学上感到困惑呢?我认为是隐喻。为什么呢?就是这句话里并没有出现“像”这个字,所以,语言哲学家就需要问一个问题:听话人是怎么知道这是在打比方呢?
这可不是一个非常容易回答的问题。我敢打赌说,大多数人工智能专家就没想明白这个问题,因为目前主流人工智能系统对于语言的自动化处理方案是很难精确地识别隐喻的。那么,为何偏偏是隐喻——而不是明喻——给人工智能提出了一个难题呢?
其道理并不难想见。明喻里毕竟有“像”“仿佛”之类的字眼。看到这些字眼,计算机就知道这是一个比喻了。但是,对于计算机系统来说,只要一个句子里面没出现“像”“仿佛”这样的字眼,它就有可能被句子的字面意思所迷惑,而无法了解到说话人到底在说啥了。
我们举个例子:我在我的手机上装了某个牌子的软件——其实就是一个聊天机器人。我和这个机器人聊天就故意使用了隐喻。我这样问这个机器人:“司马懿是一条老狐狸吗?”机器人的回应就让人感到很无语。“你很关心这种问题吗?要不要找其他专家聊聊?”这就是它的回应——可什么问题不能用这种话来搪塞呢?人工智能的“智能”又体现在哪里呢?很显然,这样的聊天机器人是无法通过图灵测验的(请参看本书第51节对于“图灵测验”的介绍)。
不过,读者可能马上会问:我们人类是如何理解隐喻的呢?
人类是如何理解隐喻的?
关于这个问题,一种最自然的解释是这样的:一个表达式之所以被视为隐喻,乃是因为对于它的字面解释会与解释者的其他背景知识产生矛盾。
再拿“司马懿是一条老狐狸”这句话来说事。如果你已经知道司马懿是一个政治家和军事家,而且你知道所有的政治家和军事家显然都是人(而不是狐狸),那么你就能立即推理出:如果有人说“司马懿是一条老狐狸”,十有八九他并不是真的说司马懿是一条老狐狸,而是说司马懿的某些性质与狐狸的某些性质比较接近。否则的话,你就必须要做出这样一个奇怪的承诺了:至少有一个政治家、军事家并非是人类,而是狐狸。
但是这样的一种对于隐喻的解读方案,有时候可能会碰到一些小困难。毛主席说过一句名言:“革命不是请客吃饭”(出自《毛泽东选集》第一卷)——这句话是不是一句隐喻?我相信这的确是一句隐喻,即告诉你革命是带有暴力色彩的,它不是请客吃饭。但是,就这句话的字面意义而言,这句话的意思也对——革命当然不是请客吃饭啦!——换言之,按照这句子的字面意思去解读它,你也不会发现这个字面意思与其他语境信息会发生什么逻辑矛盾。所以,若仅仅根据“对于一个表达式的字面解读是否会与其他语境信息产生矛盾”这一点来判断相关的表达式是否是隐喻,恐怕就无法解释为何“革命不是请客吃饭”这句话也包含了隐喻。
不过,我觉得只要对前面的隐喻解读方案略做修改,它还是能解释为何“革命不是请客吃饭”这句话也包含了隐喻。这个修改就是:一个表达式之所以是隐喻,既可能是因为对于它的字面解读会与解释者的其他背景知识产生矛盾,也可能是因为对于它的字面解读会导致一句缺乏足够有用信息的废话。按照这个新的方案,“革命不是请客吃饭”当然就是隐喻,因为这句话的字面意思是一句废话,就像“睡觉不是吃饭”是毫无营养的废话一样。但毛主席怎么可能在一篇重要的政论文章中写一句废话呢?所以这话显然另有深意。所以,我们就必须将这句话识别为一个隐喻。
但问题是,即使是上面这个已经被我修订过的隐喻识别方案,也仅仅能够告诉我们一个句子是不是包含了隐喻,却不能够告诉我们这个隐喻所要表达的真实意思是什么。所以,这个方案还需要升级。
怎么升级呢?很简单,那就将喻体各自所具有的特征全部罗列出来,一个个与本体进行尝试性的联系,看看由此导致的新表达是否能够同时满足两个条件:第一,该新表达不是一句废话;第二,该新表达没有与我们已知的事情发生矛盾。如果这两个条件都被满足了,这个新表达就可以说是原来的隐喻所要表述的真正含义。举例来说,在“司马懿是一条老狐狸”这句话中,我们先将喻体“老狐狸”的特征全部罗列出来:“皮毛是昂贵的”“胎生”“狡猾”,等等。然后,我们再将这些特征与“司马懿”这个本体进行连接,由此产生下列的表达式:
(甲)司马懿的毛皮是昂贵的。
(乙)司马懿是胎生的。
(丙)司马懿是狡猾的。
(甲)显然无法满足“非矛盾性”要求,因为我们都知道司马懿是人,而人是没有毛皮的,所以,“司马懿的毛皮是昂贵的”就与前述背景知识产生了矛盾。(乙)则无法满足“不说废话”这一要求,因为“司马懿是胎生的”是一句非常无聊的废话。看来看去,只有(丙),既能满足“非矛盾性”条件,也能满足“不说废话”条件。所以,“司马懿是一条老狐狸”的真实意思就是“司马懿很狡猾”。
人类理解隐喻的重要前提——语境
不过,上述理论还是有一个问题留待解决:假设我们按照前面的这个理论,把喻体的含义做了全面的梳理,并将其一一与本体相互联系,结果却发现:由此产生的表达式中,有一个以上的含义都能够满足“非矛盾性”条件与“不说废话”条件,这又该如何是好呢?其中的哪一个表达式,才表述出了相关隐喻的真实含义呢?
我现在就来举例说明这个困惑到底是啥意思。请看看这个句子:“司马懿是一条鳟鱼”。首先可以肯定的是,这肯定是一个隐喻,因为司马懿显然是人,而非鱼,所以,对于这个句子的字面解读就会与“司马懿是人”这一条背景知识发生冲突了。而要消除这个冲突,我们就只能假定我们不能根据此句的字面意思去解读它。所以,它是一个隐喻。
但这句话的真实意思是什么呢?按照前文提出的思路,我们就将“鳟鱼”的特征——“肉味鲜美的”“卵生的”“可以成为别人猎取的对象”“机灵的”——一一分解出,然后再将其与“司马懿”进行连接,由此判断新的表达式是不是能够同时满足“非矛盾性”条件与“不说废话”条件。这些新的表达式有:
(丁)司马懿是肉味鲜美的。
(戊)司马懿是卵生的。
(己)司马懿是可以成为别人猎取的对象的。
(庚)司马懿是机灵的。
(丁)与(戊)显然违背了“非矛盾性”条件,因为作为人,司马懿既不能成为食物,更不可能是卵生的。但是,在(己)与(庚)之间,我们却会感到难以选择。这是因为,这两个句子既没有与我们的背景知识发生冲突,也没有说废话。然而,说话人究竟要表达这两层意思中的哪一层呢?
唯一的办法,就是向相关的表述语境寻求答案。也就是说,隐喻的解读者需要更仔细地查看上下文,以寻找相关的暗示。现在我们就假设出现“司马懿是一条鳟鱼”这句话的上下文语境是这样的:
“司马懿每次都能够死里逃生,从诸葛亮所布置的各式各样的阵型里面逃脱,他真是一条鳟鱼。”
联系这样一个上下文,你应当马上能够得出:“鳟鱼”的意思就是说司马懿像鱼一样滑溜、机灵,等等,因为“能够死里逃生”这一语境信息是与“机灵”的意思完美吻合的。因此,(庚)胜出。
由此我们也就更深刻地了解了:为何现在的人工智能难以处理隐喻。这是因为:计算机要了解一个词到底是不是隐喻,它就需要有一个庞大的背景知识做支撑——同时它又要有足够的计算资源,来应对目标语句和其上下文语境之间的复杂的语义连接。而且,计算机要做到这一切,首先就要有一个能够被程序化的关于隐喻的语言学模型做指导。但令人失望的是,目前的深度学习框架,已经使得命题式的语言学知识的储存变得困难重重,遑论对目标语句与背景知识或语境信息之间的语义关系进行精密的断定。更麻烦的是,目下的主流人工智能专家只喜欢讨论大数据,而对语言哲学与语言学的研究缺乏兴趣,这就使得他们的研究难以具有真正深刻的学理根基。