IT技术博客大学习 共学习 共进步

让搜索跨越语言的鸿沟——谈跨语言信息检索技术

搜索研发部官方博客 2012-06-19 23:56:24 浏览 2,321 次

             跨语言信息检索,是信息检索领域中的一个研究课题。近10几年来,由于互联网的飞速发展,这方面的研究受到了学术界的广泛重视。将这项技术应用于搜索,可以帮助我们查找到更多的有用信息,例如外语相关页面、多语言页面以及语言无关的资源(如图片)等等。这些信息可以大大丰富搜索的结果,满足用户多样的需求。在跨语言信息检索的研究中,有一些研究成果已经趋于成熟,达到可以应用的状态。事实上,Yahoo和Google在5,6年前就已经开始提供多语言的搜索服务。毫无疑问,在这方面他们已经走在了世界的前列。目前,百度的各项国际化业务正在如火如荼的开展,对跨语言技术来说,正是用武之地。相信不久的将来,它将会在搜索国际化进程中扮演举足轻重的角色。来,就让我们一探究竟吧。

              假如你搜索“中菲黄岩岛对峙”,如果你是一个普通用户,你想知道的可能是这个事件的历史渊源和发展动态;如果你是一个文艺用户,你想知道的可能是中国愤青们的爱国言论。没问题,现有的中文搜索完全可以满足你的需求。

        但是,如果你是一个XX用户,你对中国网站的内容不满足,很想知道外国的媒体是怎么报道的,外国民众是怎么谈论这个事件的。那么不好意思,中文搜索引擎就无能为力了。这是因为,中文搜索引擎都是中文作为基础来构建的,它往往只收录了中文数据,只考虑了中文的特性,只考虑了该中国网民的需求。但是,当我们想要做跨语言搜索时,搜索就变得困难了。且不说我们没有抓取那么多外文数据。即使我们有数据了,由于不同语言之间的巨大差异,以及各个国家各种各样的网络习惯,我们也很难精准地搜索到相关的外文信息。也就是说,语言的不同给搜索带来了一道鸿沟。

        那么,这道鸿沟就不能跨越了么?当然不是。事实上很多年前人们就已经开始考虑这个问题了。在学术界,对这个问题有个专有名词,叫跨语言信息检索(Cross-Language Information Retrieval)。早在上个世纪60年代,现代信息检索的奠基人,美国康奈尔大学的Salton教授发表了一篇《Automatic processing of foreign language documents》,首先打开了跨语言信息检索的大门。但是由于那个时代还没有互联网,研究也只能停留在简单实验阶段,甚至跨语言信息检索的概念还没有正式提出。到了上世纪90年代,美国国家标准技术研究所(National Institute of Standards and Technology)和美国情报局前沿研发活动中心(Advanced Research and Development Activity center of the U.S. Department of Defense)联合举办了信息检索领域最重要的会议——“TREC”会议(The Text REtrieval Conference)。到了1996年,在瑞士所举办的SIGIR-96会议中,首次出现了以跨语检索为研究主题的研讨会。而到了2000年,欧盟成立了“跨语言评估论坛”(Cross Language Evaluation Forum),每年定期举办跨语检索研讨会,并且推动跨语检索技术评比。从此,跨语言信息检索变成了信息检索领域的一个炙手可热的研究课题,无数英雄豪杰参与其中。

        闲话少说,我们该进入正题了:对于跨语言信息检索问题该如何解决呢?接下来让我们揭开它的面纱。

        在说跨语言信息检索之前,我们先回顾一下经典信息检索是怎样做的,如图1所示:首先,对于用户的query,我们要对它进行特征提取,使之变成一个特征向量,用于匹配文档。其次,对于已经抓取的文档,我们也对它进行特征提取,并给予这些特征一些权重,来表示它们的重要程度。再次,我们对query的特征和文档的特征进行相似度计算,来判断哪些文档跟query相关,哪些不相关。信息检索最常用的相似度计算方法是求cosine,其它还可以从语义主题的角度去描述相似性,这个就不详细介绍了。有了相似度,我们可以根据相似度对文档进行排序,并将最相关的一些作为检索结果。对于检索结果,用户可能会提供一些反馈,比如用户的点击。这些反馈可以告诉我们,在搜索结果里面哪些是用户需要的。这些信息可以用来衡量检索的效果,来对检索模型进一步提升。

    

        在信息检索的流程中,我们可以看出跨语言检索的难点:当query的语言和文档的语言不同时,query和文档的特征空间是不同的。中文的特征集合(某个中文词语出现与否)与英文的特征集合(某个英文词语出现与否)的交集极少,这导致原有的相似度计算方式在跨语言时失效了。

        那么这个问题怎么解决呢?

        对于跨语言,我们自然而然想到的一种方式就是:翻译。我们可以通过翻译的方式把一个语言的词语映射到另一语言上,从而让query和文档处于同一个特征空间中,然后再利用单语下的检索模型进行检索和排序,这样就可以实现跨语言检索了。

  • Query翻译——把query翻译到文档的语言下,然后用这些翻译后的query在文档中进行检索。对于query中的词语,我们可以选择若干可能的翻译,用于扩大召回。这可以看作是一种query扩展。
  • 文档翻译——把文档翻译到query的语言下,然后用原有query对翻译的文档进行检索。文档的翻译一般是在线下进行的。一篇源语言的文档通过自动的翻译(如机器翻译)变换成一篇目标语言下的文档。
  •         这两种方式都是可以达到跨语言检索目的的,我们在实践中应该采用哪种方式呢?下面我们分析一下这两种方式的优劣:

        

            从上述优劣比较中我们可以看出,文档翻译虽然可能提供更准确的翻译,但它需要更多的线下处理时间,需要更多的存储空间,实用性较差。鉴于此,无论是学术界还是工业界,一般采用的都是Query翻译的方式。

            Query翻译方式的最大缺点就是由于词语翻译的错误导致检索错误。那么我们有没有办法客服这个问题呢?对于自动而又精确的翻译,我们很容易会想到机器翻译。不过,如果直接使用机器翻译的结果,效果并不能达到我们的预期。这是因为,首先,机器翻译和跨语言信息检索的目标是不一样的。机器翻译是为了让翻译出的文字更可读,因而会在调整语序上下很多功夫,但是跨语言检索不需要语序,它只需要正确翻译的词语出现即可。在机器翻译中一些无意义的连接词(比如“there is”)是重要的,但是在跨语言检索中我们完全不需要它们。其次,机器翻译的目标是得到一个最可能的翻译结果,而在跨语言检索中,我们需要保留多种翻译的结果,来提高召回。在这里,也许你会想到,我们也可以把机器翻译的结果作为基础进行同义词扩展,这样不是就可以了么?这样做其实是有很大风险的:如果机器翻译把某个词翻错了,那么在此之上的所有扩展都会对检索结果造成恶劣的影响。

        

            Query翻译的一般做法是这样的(如图2所示):对于一个query,首先我们对它进行切分,得到一个个词语。在切分的结果中,我们把其中的无意义词语(如“的”、“吗”等)都过滤掉。对于剩下的每一个有意义的词语,我们得到若干翻译候选词。然后在这些候选词语中,我们通过某种机制选择其中的一部分来生成跨语言检索的新query。举个例子:

            比如有个英文的query:

        “building information super highway”

            我们要用它来检索中文的文档。我们可以通过翻译字典找到每个英文单词的中文候选词:

        “building”            ->    “建筑 / 建立”

        “information”     ->    “信息 / 消息 / 知识”

        “super”                ->  “上等的 / 超级的 / 特大的”

        “highway”            ->    “公路 / 大道 / 直接的途径”

            英文query的原意是希望了解高速公路附近的房屋信息。根据这个需求,我们可以发现,在这些候选词里有些必须删除,比如building的翻译“建立”,因为它明显不符合query的原意;有些是可以保留的,比如highway的翻译“公路”和“大道”。而我们的核心目标就是通过一定的方法把不合理的翻译删除,然后将合理的翻译用于检索。

            在这里我们介绍一种基于词共现的方法。

            比如“building”和“information”这两个词,我们首先把它们的翻译组合写出来,得到6种可能翻译:

        (建筑 信息),(建筑 消息),(建筑 知识),(建立 信息),(建立 消息),(建立 知识)

            在这些组合中,有些我们一眼就可以看出它是符合检索需求的,比如(建筑 信息),有些则肯定不是,如(建立 消息)。那么如何让程序自动判断呢?其实很简单,我们只需要看看这些组合在中文文档中共同出现的次数即可。正确的翻译组合在文档中出现的频率往往较高,而错误的翻译组合则不常出现。这样,我们通过中文文档中词语的自然分布,就可以为翻译组合打分,把错误的翻译组合剔除掉。

            基于共现的方法是最基本、最简单的一种方法。事实上近10多年来,学术界已经提出了很多更为复杂的算法来解决这个问题。由于篇幅有限,这里就不详细介绍了。有兴趣的读者可以读读加拿大蒙特利尔大学的聂建云教授的著作《Cross-Language Information Retrieval》,那里有更详尽的论述。

            以上着重介绍的都是跨语言信息检索在技术上是怎么实现的。下面我想说下,我们为什么要进行跨语言检索呢?它对于搜索引擎有多大的价值呢?我总结了以下几点:

  • 获取其他语言的相关资源
  • 有些资源在中文中不存在,而在其他语言的网页中存在。比文章开头描述的XX用户,希望了解外国的舆论。在这种情况下,我们就需要通过跨语的搜索来满足用户的需求。

  • 获取多种语言夹杂的资源
  • 在互联网上并不是每个网页都只有一种语言。很多时候,一个网页中有多种语言的文字出现。如果只用一种语言的query去检索,可能无法召回这些页面。如果我们将跨语言检索的技术融入当中,就可以提高搜索的召回。

  • 获取与文字语言无关的资源
  • 有些资源是跟文字无关的,比如图片、视频、音频。而对这些资源的搜索往往会借助于文字。有了跨语言检索的技术,我们就可以将满足用户需求的、国外网站上的资源展现出来,来丰富搜索结果。

  • 满足“查全”的需求
  • 在搜索中,我们有的时候需要“查全”所有的相关信息。比如要搜一个专利,我们会希望把各个国家的相关专利都搜出来。在这种情况下,我们就需要跨语的检索,帮助我们达到这个目的。

        当前,跨语言信息检索不仅在学术界正在热火朝天地开展,事实上,它早已走入了工业界,真正被应用到了实际搜索当中。早在2006年,Yahoo首先推出了跨语言搜索服务。随后在2007年,Google也相继进入了这一领域,展开了国际化的搜索。和百度相比,Yahoo和Google的确在国际化方面领先不少。其中一个重要原因是,他们都是从英文搜索起家的,而英文是世界上的最流行的通用语言,它到其它语言的翻译资源比较丰富,利于国际化的扩展。不过这没关系,我们比的是谁做的更好,而不是谁做的更早。如今,百度的国际化业务正在如火如荼地开展,相信不久的将来,它将会在搜索国际化进程中扮演举足轻重的角色。

        “雄关漫漫真如铁,而今迈步从头越”,未来如何,让我们拭目以待吧!

    by 飞旋的世界

    建议继续学习

    1. 怎样用好Google进行搜索 (阅读 15,661)
    2. 淘宝搜索:定向抓取网页技术漫谈 (阅读 9,360)
    3. 简析搜索引擎中网络爬虫的搜索策略 (阅读 7,280)
    4. 几种常见的基于Lucene的开源搜索解决方案对比 (阅读 5,980)
    5. 基于用户行为分析的搜索引擎自动性能评价 (阅读 5,600)
    6. 百度搜索URL参数解析 (阅读 5,580)
    7. 用Sphinx快速搭建站内搜索功能 (阅读 5,562)
    8. Xapian搜索体系结构 (阅读 5,160)
    9. 附近地点搜索初探 (阅读 5,140)
    10. 互联网网站的反爬虫策略浅析 (阅读 5,040)