机器翻译重要过程(1)---数据预处理

来源:互联网 发布:三星充电器数据 编辑:程序博客网 时间:2024/04/30 12:56

       目前有如之前基于统计的开源翻译系统介绍中提到的许多开源统计翻译系统,在由原始平行语料到形成最后的翻译系统的整个过程中,它们有一些相同的处理步骤,从这次的文章开始,陆续介绍几个最重要的过程做法及其意义。

       一般在我们得到双语平行语料之后,在构建双语统计翻译系统之前,都会有一个双语数据预处理的过程,为后续例如词对齐处理提供分好词且格式恰当的双语数据。这里以汉英双语数据举例。

       在中英翻译系统构建过程中,对于中文和英文的数据预处理,方式是不一样的。


1)中文分词处理

      之前提到了,这一步可以使用中科院分词系统ICTCLAS完成,如果不使用这些附加工具的话,例如NiuTrans翻译系统,其预处理的分词系统采用的就是传统基于词典的正向最大匹配法来完成的。基本流程图如下所示:

      

       由于数字、日期、时间、网址等不可枚举,无法通过词典简单查找来分词。
       可以采用正则表达式或者自动机进行自动识别,并给予特殊名字进行泛化。例如: 
            数字类型       $number           如:123 
            日期类型       $date                 如:2013年8月24日 
            时间类型       $time                 如:19:30 
            网址等类型   $literal               如:http://www.csdn.net  
       实际上大家可以总结更多类型,并自行定义泛化名字进行替换原文。泛化的目的是为了有效解决数据稀疏问题。 
       需要注意一点的是,在做这一步的时候建议不要对组织机构名进行捆绑为一个词汇。例如将“北京邮电大学信通院”最好分成两个词“北京邮电大学”“信通院”。这样做的好处是为了有助于后面规则抽取模块抽取出更多翻译规则。

       另外,在预处理时,中文的全角字符可以考虑改写为半角字符来处理;

2)英文分词处理

      英文这种阿拉伯语系的语言处理起来相对中文要简单一些,总的来说主要是处理以下3个问题:

             1.  将所有大写字母改为小写字母; 
             2.  将英文句尾结束符与句尾最后一个单词用空格分开; 
             3.  同样将数字、日期、时间、网址等不可枚举的类型进行识别,然后分别采用特殊名字进行泛化处理。 

      例如双语句对: 
      中文:8月24日我买了2台电脑。         
      英文:I bought 2 computers on August 24.  
      

      预处理结果: 
      中文:$date 我 买 了 $number 台 电脑 。 
      英文:i bought $number computers on $date .   


      这里又要提醒几点:同一类型的泛化名字在中英文中最好一样,如中文/英文数字=>$number;注意区分英文的句尾符号“.”和“Mr. Smith”的“.”;

      在泛化之后,注意检查一下双语句对的泛化结果一致性,例如中文句子中包含$date,正常情况下,英文句子中也应该包含$date等。 

原创粉丝点击