谷歌识别语义的过程
谷歌以善于鼓励这些创新而闻名,每年公司都会举办疯狂搜索创意内部展示活动,以便鼓励那些离奇但有应用潜力的创新。但大多数时候,改进的过程是充满艰辛的,需要矢志不渝的精神,需要面对尝试过程中的打击。有一个不成功的搜索已经成为传奇:2001年,辛格得知输入audrey fino时无法搜到预期内容,而只是返回一些赞扬奥黛丽赫本(Audrey Hepburn)的印度网页,因为在印度语中fino是好的意思。辛格说:我们知道audrey fino是个人名,但我们的系统没这么聪明。
这一失败使辛格花了多年时间,试图改进谷歌对姓名的搜索结果因为姓名占总搜索量高达8%。为了解决这一问题,他不得不掌握bi-gram 拆分,也就是将多个词分割成独立的单元。比如,new york合在一起组成一个bi-gram,指的是纽约。但也有三个字的情况,比如new york times,意思是纽约时报,很明显二者指的不是同一样东西。如果用户输入的是new york times square,意思又变成了纽约时代广场。人类可以很容易做出区分,而谷歌不是由人工控制的,它依靠的是算法。
Mike Siwek这一搜索可以解释谷歌是如何解决这一问题的。辛格输入显示代码的命令后,我们就可以看到信号是如何决定搜索结果排序的:通过bi-gram可以确定mike siwek是一个人名,lawyer是一个同义词,mi是一个地名。辛格说:从工程师的角度进行解构,系统会对这些词进行分割,它会发现lawyer不是姓氏,siwek不是中间名。同时lawyer也不是密歇根的一个镇,因此它是attorney的同义词。
这是谷歌从无数次搜索中获得的可贵知识。石头可以是rock,可以是stone,还可以是boulder(漂石)。如果用户输入 rokc,谷歌仍会知道他想找的是rock。但如果在rokc前加little,谷歌则会知道这是Arkansas(阿肯色州)的首府。Arkansas的缩写是ark,与诺亚方舟同形,但谷歌会将二者区分开来。辛格说:搜索中最重要的是理解用户的意图,因此你不是在匹配词语,而是在匹配意思。
谷歌一直在不断改进。近期,谷歌工程师莫琳海曼斯(Maureen Heymans)发现了Cindy Louise Greenslade的搜索结果的问题。用户输入这些单词时,算法会认为应该找一个名叫Cindy Louise的人,于是在加利福尼亚的加登格罗夫市找到了一名心理学家,却没有把姓名为Cindy Louise Greenslade的人的网页放在结果的前十名。海曼斯发现,这是因为Cindy Louise Greenslade习惯将名字缩写成Cindy L. Greenslade。她表示:我们的搜索引擎应该更聪明一点。于是她增加了一个信号,用来寻找中间名的缩写。现在正确的结果已经被排在了第五位。