句子大全

句子大全 > 好句子

聊聊Atman数据的高效利用(一)——数据清洗(去噪)

好句子 2016-02-04 07:14:12
相关推荐

近年来,随着人工智能时代的降临,凡是和机器学习、大数据相关的一些工作,其实都是在和数据打交道,是一个数据工程。自然语言处理领域(如机器翻译)也需要大量的训练数据(即语料),这是最重要的基础研究资源。

就机器翻译这个任务,打个比方,把语料看成是教材,把翻译算法模型看成是学生,如果教材丰富、质量又好,学生学起来自然要轻松得多。因此,大规模的数据需要被高效地利用,使机器翻译效果达到一个最优的状态。

但是,万事无完美。从数据层面上讲,现在有两大问题造成翻译效果不好:

一是数据有噪音,也就是脏数据,需要清洗;

二是数据量少,需要补充。

本篇,我们将从第一大问题——数据的噪音说起,介绍Atman工程师是如何清洗数据的。

数据清洗(去噪)

数据清洗,也称为去噪,就是把冗杂、混乱、无效的“脏数据”清洗干净,让业务模型能够输入高质量的数据源。这个工作看起来平平无奇,实则大有乾坤,决定着最后的效果输出。

机器翻译训练语料的噪音

对齐问题,即平行语料中的源语言句子和目标语言句子不对应。(平行语料指训练数据中两种语言的段落、句子甚至单词能够一一对应的语料)单语语料质量问题,如错别字、乱码、语法错误和不符合所属语言或领域的表达习惯等。领域外数据,如医学领域语料中含有机械领域的语料。

Atman清洗数据的方法

在数据越来越大的年代,数据清洗也越来越复杂,传统的清洗数据工作单调乏味且异常辛苦。如果能利用正确的工具和方法,就可以让数据清洗工作事半功倍。

Atman对于数据的清洗,通常使用的方法有下面几种:

1、语言模型

语言模型是自然语言处理的一大利器,是NLP领域一个基本却又非常重要的任务。它的主要功能就是计算一个词语序列构成一个句子的概率,或者说计算一个词语序列的联合概率,这可以用来判断一句话出现的概率高不高,是否符合我们的表达习惯,是否通顺,是否正确。

举个例子,比如“我是中国人”,当我们提到“我是中”,后面大概率接的是“国人”,这就是语言模型,语言模型是考虑上文,用上文预测下一个词。

当训练一个语言模型之后,就可以用语言模型来给一个句子打分,比如“我是中国人”,语法各方面表达完全正确,也符合中文的表达习惯,更像一句"人话",这个分就比较高。因此,可以用语言模型来对单语语料库进行去噪,看句子是否符合地道的表达。当然,除了可以清除语法、表达混乱的句子,也能在一定程度上去除领域外的语料。

2、句对相似度

句对相似度,是指源语言句子和目标语言句子的语义相似度。如果相似度低意味着两句话表达的意思不同,需要从语料中清除出去。相同语言的两句话计算相似度相对容易,如通过计算两句话的词语重叠比例、句子结构、句子嵌入等方法得到。不同语言句对由于其用词、语法结构、表达习惯等的不用,相似度计算比较困难。

我们有两种方法来解决该问题:

利用某个领域高质量的平行语料训练一个翻译模型,用该翻译模型来衡量源语言句子翻译到目标语言句子的偏差(或loss)。通俗来讲,就是评估利用该模型把源语言句子翻译到目标语言句子的自信程度,自信度高,就认为该句对语义相似度高。仿照word2vec计算词嵌入的方式,分别计算源语言句子和目标语言句子的句子嵌入,即句子的高维连续几何空间表示。简而言之,就是将人类可以看懂的文字,转换为机器也可以识别、操作、处理的数值,将一串文字转化为一个数值型向量的过程。

word2vec举例图 (来源:TensorFlow 教

针对第二种方法,我们具体做法是:每个句子会被映射到该高维几何空间中的一个向量,然后计算两个向量的余弦相似度,作为句对的语义相似度。

余弦相似度

然而,不同的语言对应不同的语义空间,怎么将它们用同一个空间表示呢?我们借鉴了微软的做法,利用某个领域高质量的平行语料训练一个神经机器双向翻译模型。目前的神经机器翻译模型的翻译过程是这样的,先将源语言句子输入到一个编码器中去,生成一个连续的向量(即某个高维连续几何空间表示),然后解码器解码出该向量的另一种语言表达,即目标语言句子。我们在训练该神经机器双向翻译模型的时候,将每一对训练语料的对调(目标语言句子改作源语言句子,原来的源语言句子作为目标语言句子)也加入训练中去,即让编码器学习把源语言句子和目标语言句子都压缩到同一个向量空间中去。模型训练完毕之后,只利用编码器部分计算不同语言句对的表征,得到一对向量表示,它们的相似度即为该句对的语义相似度。

通过这两种方法,我们可以清除语义不对齐的句对。同时,由于用来计算相似度的翻译模型是利用领域内的高质量语料训练得到的,领域外的句对在该模型上表现一般较差,因此也能同时清除领域外的语料。

3、对齐模型

对于机器翻译而言,双语平行语料库尤为珍贵。我们通过双语语料训练词对齐关系,这个对齐关系训练好之后,目标语言的每一个词都会对应到源语言的某个词,如下图所示。

比如一句英到中的句对翻译,英文单词数是10,中文单词数是8,如果中文中的8个词对应到了英文中的5个词,那对齐比例就是1/2(5:10),那这个比例就偏小,我们就认为这个句对就有不对齐问题,应该被清除出去。

4、统计规则

除了以上基于复杂的模型的方法之外,还有一些基于经验的规则对数据清洗特别有用,如:

句对中词序列的长度比例。如果长度比例过大或过小,都可以认为句对不对齐单词的长度。例如英文中某个单词过长,很可能是由于某些单词之间的空格丢失了,可以认为该句话有问题句子中每个词的重复出现次数。如果某个词在一句话中重复出现次数过多,则可认为不符合表达习惯句对中的关键词(数字、URL等)是否对应出现。……这些规则方法通常需要设置一个固定的阈值来区分噪音数据。数据量比较少、分布比较集中时,比较容易人工设置一个阈值;而数据量比较大且数据组成比较杂的时候阈值设置就较为困难,而且不同的数据集的阈值设置是不相同的。因此,对每一个数据集针对每一个规则都手动设置阈值会耗费较大的人力,而且常常会取值不合适,造成噪音数据没有得到有效清除或清掉了一些高质量的数据。

我们利用统计方法,假定这些规则的取值服从某个高斯分布,通过计算这些取值的均值和方差确定分布,并将某个置信区间之外的数据当做异常点(噪音数据)。这种方法省去了手动设置阈值的烦恼和纠结,概率分布较小的规则取值自动被认为是噪音数据。

总结

以上就是Atman清洗数据常用的四种方法,可想而知,数据清洗看似最普通,却又最精髓。稍有闪失,足以功亏一篑。

好了,本期到这里就结束了。下期我们将会从语料数量不足的情况下,讲解Atman如何提高数据的高效利用的,敬请期待!

公司主页: atman.ai

【Transgod-Atman旗下机器翻译】使用网址: transgod.cn

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新