一种基于维基百科的多语种翻译词汇自动抽取方法
2016-05-30温家凯
温家凯
(广西达译商务服务有限责任公司,广西 南宁 530007)
【摘 要】多语种翻译词汇是解决跨语言信息检索中未登录词问题的有效途径,而高质量的翻译词汇特别是专有名词、新词和命名实体难以在普通词典中找到。文章提出一种从维基百科中自动抽取出多语种翻译词汇的方法,主要通过在维基百科离线数据文件中根据其文件结构特征进行抽取。实验证明,该方法能够有效获取高质量的多语种翻译词汇。
【关键词】多语种翻译词汇;信息自动抽取;维基百科
【中图分类号】TP391.3 【文献标识码】A 【文章编号】1674-0688(2016)07-0129-05
0 引言
随着世界经济一体化的进展,各国之间互联网交流更为广泛、频繁,互联网信息的多语种特点,给交流带来的语言障碍日显突出。为解决语言障碍问题,跨语言信息检索(CLIR)[1]技术应运而生。跨语言信息检索给用户提供了一种使用自己熟悉的语言提交查询,检索其他语言文档的途径。跨语言信息检索技术让使用各种语言的信息用户也可以方便地利用日益丰富的多语种信息资源,解决不同语种间的交流障碍。根据解决查询条件和文档集的语言障碍的技术路线,把跨语言信息检索技术主要分为查询表达式翻译(Query Translation)、文献翻译(Document Translation)、不翻译(No Translation)和中间语种转换(Interlingual Representation)[2]。其中,查询翻译是CLIR中采用最广泛的方法,实现简单,速度快。该方法将用户提交的查询请求翻译成系统支持的多种语言,然后对不同语言的文档集进行检索。但由于查询中有很多词为专有名词,有很多新词、专业词汇和命名实体无法在系统词典中找到,导致对查询请求的翻译质量受到影响,这种现象被称为未登录词(Out of Vocabulary,OOV)问题。新词和专业词汇一般都是通过扩充双语词典来解决,而命名实体是一个开放集,无法通过扩充词典的方式来解决[3]。
维基百科(Wikipedia)是一个基于维基技术的全球性多语言百科全书协作计划,其大部分页面都可以由任何人使用浏览器进行阅览和修改。这本全球人民参与编写,自由、开放的在线百科全书是知识社会条件下用户参与、大众创新、开放协同的生动诠释[4]。截至2015年11月1日,維基百科条目数第一的英文维基百科已有500万个条目,所有版本共突破3 700个条目,已发展成为互联网上规模最大、使用最广泛的百科全书,也成为最大的资料来源网站之一,这为未登录词的挖掘提供了有利的条件。维基百科拥有253种不同语言的版本,无形中已经具备非常丰富的翻译资源。并且,由于其自由、人人均可编辑的特点,往往能够找到比较新、比较流行的词语。由于维基百科中有很多条目都存在着对应的多种语言版本,因此维基百科可以用于双语或多语词典的自动构建,进而应用于机器翻译、跨语言信息检索等。经过实验证实,使用维基百科能够有效地抽取多语种的翻译词汇,帮助解决跨语言检索中未登录词的问题,进而提升检索的准确度。
1 基本原理
在维基百科的内容页面中,有可能存在链接到不同语言版本维基百科的“跨语言链接”,这样读者可以很方便地查看另一语言内当前主题的相关内容。由于这些链接是以半人工的方式添加到页面,词汇的翻译质量比较高。维基百科内容页面如图1所示。
以英汉翻译词汇获取为例,在英文维基百科中输入关键词“Fifteen puzzle”进行查询,在返回结果页面的左下角区域为“Languages”,即链接到其他语言版本的链接,该链接的HTML信息中已经包含了经翻译后的词汇,抽取出来就是我们所想要的结果。
2 具体实现
具体的实现有2种途径:一是在线方式,即遍历词典,构造维基百科的URL,下载其内容页面实时分析抽取;二是先下载离线数据库,分析其文本结构再抽取。下面详细描述这2种方法。
2.1 在线方式
在线方式必须先分析清楚维基百科的URL结构和返回结果页面的HTML构成,然后使用程序遍历词典模拟请求得到返回结果页面,从中抽取出词条翻译结果。
2.1.1 构造查询请求
查询请求为:“http://”+语言代码+“.wikipedia.org/wiki/”+URI编码词条。
其中,“语言代码”为维基百科中的语言代码,见表1。
“URI编码词条”是指经过URI编码的关键词。
此外,由于中文有简体和繁体等几种版本的维基百科,与上述查询URL有此不同。
简体版本:http://zh.wikipedia.org/zh-cn/+URI编码词条;繁体版本:http://zh.wikipedia.org/zh-tw/+URI编码词条。
2.1.2 查询结果页面HTML分析
主要是分析页面中“语言列表”部分的HTML结构。该部分结构如下:每一种语种都是用一个
2.1.3 具体实现过程
下面以使用Perl程序实现模拟维基百科Web请求获取汉语词条的越南语翻译词汇为例。
(1)汉语词典中取出中文词条AAA。
(2)对该中文词条进行URI编码:去除词条首尾空格,将非空格串用URI模块进行编码转换。
(3)构造维基百科网站关于该词条的中文简繁版Web请求的URL。
简体版:http://zh.wikipedia.org/zh-cn/XXX;繁体版:http://zh.wikipedia.org/zh-tw/XXX。
首先尝试下载繁体版本的页面。注意使用LWP::UserAgent(并设置代理信息)来下载,不能简单使用LWP::Simple来下载,因为维基百科有可能会拒绝没有代理信息的客户端访问。
如果失败则尝试下载简体版本页面。
(4)解析请求返回结果页面,分析页面中“语言列表”部分的HTML代码。使用模块HTML::TreeBuilder::Xpath解析整个网页,通过如下指定xql取出相应Html结点:
/html/body/descendant::li[@class="interwiki-vi"]/a
该xql模式表示解析器寻找页面中所有class=interwiki-vi 的结点下的超链接结点
另外一个方法是从维基百科的重定向数据文件包redirect.sql.gz中抽取。例如:viwiki-20100627-re-
direct.sql.gz,解压后得到的是sql文件,导入数据库后得到数据库表redirect,该表中保存有所有的词条目重定向记录。但由于数据字段是以“条目A的page_id->重定向到的条目B的标题”形式存在,因此需要用程序進行转换提取。
2.2.5 具体操作步骤
(1)从网上搜索下载维基百科公开的离线数据文件,不同语言版本的维基百科有不同的数据文件。根据用户需求下载不同版本的数据文件。
(2)解压数据文件。数据文件解压后得到非常庞大的XML文本文件。
(3)考虑到系统内存限制,需要使用脚本程序将数据库文件切分成多个小文件以便进行下一步的处理。
(4)读入待处理文件内容到内存,删除所有换行符。
(5)使用正则表达式找出所有page节点,即 ge>和