【自然语言处理】双语数据预处理

2020-08-26 11:16:20 浏览数 (1)

1.中文分词

采用传统基于词典的正向最大匹配法来完成中文分词。基本流程如图所示:

由于数字、日期、时间、网址等不可枚举,无法通过词典简单查找来分词。可以采用正则表达式或者自动机进行自动识别,并给予特殊名字进行泛化。例如:

  • 数字类型 $number 如:123
  • 日期类型 $date 如:1993 年 12 月 3 日
  • 时间类型 $time 如:3:10
  • 网址等类型 $literal 如:http://www.niutrans.com

实际上大家可以总结更多类型,并自行定义泛化名字进行替换原文。泛化的目的是为了有效解决数据稀疏问题。需要注意一点的是,建议不要对组织机构名进行捆绑为一个词汇。例如将“东北大学信息学院”最好分成两个词“东北大学”“信息学院”。这样做的好处是为了有助于后面规则抽取模块抽取出更多翻译规则。

2.英文分词

相对于中文分词处理来说,英文分词主要处理三个问题:

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

例如双语句对:

中文:4 月 14 日我买了 10 本书。

英文:I bought 10 books on April 14.

预处理结果:

中文:$date 我 买 了 $number 本 书 。

英文:i bought $number books on $date .

其它说明:

1) 中文的全角字符可以考虑改写为半角字符来处理;

2) 同一类型的泛化名字在中英文中最好一样,如中文/英文数字=>$number;

3) 也可以采用 CRF 或者语言模型来实现高性能中文分词;

4) 注意区分英文的句尾符号“.”和“Mr. Smith”的“.”;

5) 双语句对的泛化结果需要检查一致性,例如中文句子中包含$number,正常情况下,英文句子中也应该包含$number 等;

6) 目前有很多开源的分词工具可以被使用,如 NiuTrans 提供的双语数据预处理工具从 http://www.nlplab.com/NiuPlan/NiuTrans.YourData.html 下载。

0 人点赞