技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 让搜索跨越语言的鸿沟——谈跨语言信息检索技术

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

浏览:1458次  出处信息

             跨语言信息检索,是信息检索领域中的一个研究课题。近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进行搜索    (阅读:14783)
    2. 淘宝搜索:定向抓取网页技术漫谈    (阅读:8272)
    3. 简析搜索引擎中网络爬虫的搜索策略    (阅读:6053)
    4. 几种常见的基于Lucene的开源搜索解决方案对比    (阅读:4697)
    5. 用Sphinx快速搭建站内搜索功能    (阅读:4476)
    6. 基于用户行为分析的搜索引擎自动性能评价    (阅读:4462)
    7. 互联网网站的反爬虫策略浅析    (阅读:4194)
    8. 附近地点搜索初探    (阅读:4195)
    9. 百度搜索URL参数解析    (阅读:4151)
    10. Xapian搜索体系结构    (阅读:4089)
    QQ技术交流群:445447336,欢迎加入!
    扫一扫订阅我的微信号:IT技术博客大学习
    © 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

    京ICP备15002552号-1