1.2 机器翻译
叙述的目的是给我们呈现错综复杂和含糊不清。
―Scott Turow
非结构化数据是指那些没有被组织成具有某种属性或数值的数组的数据对象(见术语表,Data object)。电子表格将数据分布在各个单元格中,且标有行列位置,是典型的结构化数据。这里给出一个非结构化数据的例子,你会了解到为什么数据分析师更喜欢电子表格而不是自由文本。由于没有结构,数据内容不能有效地被收集和分析。而大数据无边无际,文本结构化的任务必须能够自动和快速地完成。
在众多自由文本计算手段中,机器翻译表现突出。机器翻译的最终工作是将文本从一种语言翻译成另一种语言。机器翻译过程大致如下:从文本语句着手,分析语句中各个单词的语法成分,最后按句子逻辑的顺序排列语法成分。完成了上述过程后,可以通过字典来查找每个语法成分的同义词,并借助新的外语语言的语法定位规则来重新组织语句。由于这个过程使用了外语语言中语句结构的自然规则,所以通常称此过程为自然语言机器翻译。
这一切是那样简单而直接。在某种意义上,它确实如此,只要你有合适的查询表。目前,很多效果还算理想的自动翻译应用程序正被广泛使用着,但在不少情况下,这些应用程序会出现完全失效的现象。正如你会想到的那样,对于复句的自动翻译常常出现错误。除了句子的复杂性等问题,人类所说的语言本身并没有太大意义,这是自动翻译面临的更深层次的问题,毕竟计算机无法在“没有意义”的语句中发现其背后的意图。如果作为人类的我们能够在英语语言中发现含义,这也只是因为我们向读到的句子强加了文化偏见,而创造出了语言原本不存在的意义。
在一些英语固有的局限性上花些时间是值得的。英语单词具有多态性,它的含义取决于它出现在语句中的哪个地方。这种多态性会产生一些喜剧效果(例如,“马提尼(martini)和酒吧的常客都喝醉了”,这里,“martini”可解释为马提尼酒或叫马提尼的人)。人类沉浸在自己的语言文化中,毫不费力地为多态词组创造更多的含义,比如,“a bandage wound around a wound”(意为“绷带缠绕的伤口”),“farming to produce produce”(意为“农业生产农产品”),“please present the present in the present time”(意为“请在现在展示礼物”),“dont object to the data object”(意为“不要反对该数据对象”),“teaching a sow to sow seed”(意为“教母猪播种”),“wind the sail before the wind comes”(意为“在大风来临之前收起风帆”),还有其他无数类似的例子。
词语缺乏组合性,即词语的意思无法通过分析词根推测出来。例如,菠萝(pineapple)里没有松树(pine)也没有苹果(apple),茄子(eggplant)里没有鸡蛋(egg),汉堡(ham-burger)是由牛肉而非火腿(ham)制成的。你可以说一个爱人(lover)会爱(love),但不能说一个手指(finger)会“fing”。素食主义者(vegetarian)会吃蔬菜(vegetable),但人道主义者(humanitarian)不会吃人(human)。又例如,忽视(overlook)和监视(oversee)从逻辑上讲应该是同义词,但事实上它们是反义词。
很多时候,词语的意思是由这个单词的第一个字母决定的。例如,Nice(尼斯,法国的一个城市)和nice(友好的),Polish(波兰语)和polish(擦亮),Herb(贺伯,人名)和herb(香草),以及August(八月)和august(威严的),等等。
如果付出足够的努力,机器翻译是可以应付上述所有任务的。尽管如此,世界上还没有一台计算机可以在信息学意义上翻译出意思清晰、逻辑合理的语句(见术语表,Meaning)。作为已涉猎机器翻译工具开发的我,常常抱怨具体化的常规使用―凭借具体化的过程可以推断出语句的主语,但不会明确指出(见术语表,Reification)。具体化是由代词和其他一些主语指代来实现的。
举个例子,某报纸的新闻标题是“husband named person of interest in slaying of mother”。首先,我们可以推断出丈夫(husband)是嫌疑犯(person of interest),而不是说丈夫提供了嫌疑犯的名字。了解犯罪关键点的人都知道,这句话暗示这个家庭有丈夫、妻子和至少一个孩子。有妻子是因为有丈夫,有孩子是因为有母亲的存在。而且这个母亲是指这个丈夫的孩子的母亲,而不是丈夫自己的母亲。也就是说母亲和妻子是同一个人。那么,妻子和丈夫分别是孩子的母亲和父亲。因此,这个新闻标题传达出的意思是丈夫是杀害妻子也就是孩子母亲的疑犯。这里“husband”具体化了妻子的存在(妻子是从夫妻关系具化而来),“mother”具体化了孩子的存在。同时,句中没有出现单独的丈夫或者妈妈的字眼。由一个个单词组成的语句就是我们所能掌握的全部内容,但其本身没有任何意义。任何从语句中获得的意义都是由我们生动的想象而合理创造出来的。
通常,一条语句包含一串人物的具象,而这些具象对理解语句含义毫无作用。例如,“John married aunt Sally”(约翰和莎莉阿姨结婚了),这里,Sally前面有一个家庭关系名词aunt,但这个关系名词没有对在该句子中提到的另一个人物进行任何修饰(例如,Sally不是John的aunt)。然而,aunt这个单词具体化了一些个体,尤其是Sally是他们的阿姨的那些个体。这种具体化似乎除了使情况更混乱外没有其他任何目的。
又例如,某报纸的新闻报道写到:“她的丈夫在1944年执行任务后在法国南部失踪,安东尼・德・圣埃克苏佩里的遗孀坐下来,写了这本有关他们戏剧性婚姻的回忆录。”这里有两个具体的人:“她的丈夫”和“安东尼・德・圣埃克苏佩里的遗孀”。第一个短语“她的丈夫”是为了第二个短语中人物的指示代词(“她”)而建立的人物关系(“丈夫”)。第二个短语的人物由德・圣埃克苏佩里(即“寡妇”)的关系具体化,刚好是第一个短语中的人的具体化(即“德・圣埃克苏佩里是她的丈夫”)。
每次我们写以自我为参照的具体化语句时都会使用一个代词:“It was then that he did it for them”。第一个“It”具体化一个事件,单词“then”具体化了时间,单词“he”具体化主语,第二个“it”具体化一些动作,单词“them”具体化一个代表具体化的行动的接受者的群体。
严格来说,上述例子都没有什么意义。因为句子的主语没有被正确标识,主语的引用也含糊不清。这种语句不能够被计算机有效评估。
这里举最后一个例子:“Do you know who I am?”(你(们)知道我是谁吗?)这个句子中没有可标识的个体,每个人都具体化为代词“you”和“I”。该句中只有很少的单词,且一半是不必要的。单词“Do”“who”“am”基本是无关紧要的,没有传递信息的意图。在面向对象的程序设计中,这句话可转变为一个声明“You know me”和查询消息“true?”(见术语表,Object-oriented programming)。在这种问题上,我们已经深入很多。对象、声明和查询消息将会在后续章节中讨论。
精准的机器翻译已经不仅仅是“非常困难”,而是基本上不可能。这是因为计算机不能理解废话。对于机器翻译,我们可期盼的最佳情况是,对读者来说,翻译语言中表述的文本语义是可利用的,是与原始语言中的表述一致的。期望语句能够从语法上被分析出各个信息单元只能是幻想。虽然幻想基本不能实现,但如果对信息含义有深刻的理解,不论是对哪种语言进行翻译,那么翻译出来的句子就有可能有意义。第4章将会有这方面的讨论。