文本规范化(Text Normalization)

 

文本规范化问题作为自然语言处理中的重要一步,很多人对此进行了各种研究。在本文中,我们提出了一种解决此问题的新模型,GRFE(Gated Recurrent Feature Extractor)。该模型充分利用了符号的类别信息,并据此规范化符号。应用此模型,不仅可以提高神经网络的鲁棒性,而且还可以避免”all silly errors”.实验表明,与以往模型相比,该模型的参数个数更少。GRFE的参数个数是LSTM的30.69%,是FCNN的34.04%。因此,GRFE的训练时间更短。并且,GRFE还拥有较高的准确率(92.77%),不劣于CFE(Causal Feature Extractor).

 

 

Text-To-Speech synthesis(TTS)中的文本规范化是一个将文本中的符号规范为TTS模型可识别的标准符号的任务。以往的研究都是将其视为序列到序列的问题,并在这个基础上提出各种模型、算法、系统来提高准确率。

将文本规范化问题视为序列到序列的问题是一种对此问题的直接考量。其序列到序列的对应关系符合人类的主观感受。但是,这一特性也引发了很多问题。Let K be 原始数据的符号集合,and let M be 规范化后的符号集合。解决文本规范化问题,实质上就是在解决如何将K映射为M的问题。当输入与输出是序列到序列的关系时,这种映射是一对一映射。因此,这样的神经网络必然十分庞大。为获得理想结果,它需要大量的训练数据、需要设置具有大量节点的隐藏层一般为256(Sevinj Yolchuyeva1  · Géza Németh1  · Bálint GyiresTóth1)或者512(Richard Sproat, Navdeep Jaitly,2016)这会极大地增加训练神经网络的时间,不利于进行大量对比实验。本文注意到TTS的文本规范化任务本质上是对文本中出现符号进行分类。由于人类语言的多样性,符号集合K是无限集。但是由于人类语言的语义相似性,集合K中符号的种类是有限的。设符号的种类为集合N。由于集合N中元素的个数很少,所以易于处理。当建立了集合K到集合N的映射后,便可以根据事先建立的根据种类进行映射的规则,使用比对的方法完成集合K到集合M的映射。由此,我们将Text-To-Speech synthesis中的文本规范化问题转化为了一个分类问题。文本挑选出了经常出现的15种符号类别作为集合N的元素,之后根据集合K到集合N的映射信息,解决文本规范化问题。

Our key contributions are the following:

  1. 为解决文本规范化问题,我们提出了一种新模型GRFE。To the best of our knowledge, 这是第一个将分类思想如此紧密地运用到文本规范化问题的模型。
  2. 我们展示了新模型GRFE的高效性。这个模型相比起其他模型的规模更小,从而,训练时间更短,维护成本更低。
  3. 我们展示了所提出模型的有效性。GRFE与CFE相比,取得了更高的准确率。
  4. 我们在解决文本规范化问题时,考虑了符号所属类别。从而使模型不会犯经常困扰其他模型的” silly errors”。例如,文本不会将12映射为thirteen。
  5. GRFE摆脱了刻板的一对一映射,而采用多对一映射的方法。从而极大提高了模型的鲁棒性。

 

 

 

早期的工作已经认识到文本规范化的重要性。(David S.Stall, 1989)介绍了文本规范化与text-to-speech问题之间的关系。(Martine Adda-Decker et al., 2000)和(Sarah Schwarm et al., 2002)介绍了文本规范化在speech recognition问题中的作用。为了更好地处理大多数的自然语言处理问题,必须对文本规范化问题进行更加深入的研究。

Many more recent approaches 对text normalization问题进行了更加深入的研究。很多文章将对text normalization问题的解决视为建立与优化a noisy channel model。Let N be a 需要转换形式的符号,这个模型的目的是找到最佳的转换结果uploading.4e448015.gif转存失败重新上传取消。用the Bayes rule描述uploading.4e448015.gif转存失败重新上传取消的形式为:uploading.4e448015.gif转存失败重新上传取消,同时:uploading.4e448015.gif转存失败重新上传取消.为了计算最核心的数值uploading.4e448015.gif转存失败重新上传取消,很多文章探讨了相关方法。例如:(Congle Zhang et al., 2013)提出了一种parser-centric的方法来进行计算。

在文本规范化中,还有许多文章使用了Machine translation (MT)的方法。 (Pennell and Liu, 2011) 提出了一个MT model for text normalization. 这个模型的思想与解决普通的翻译问题类似,只是这个模型是字符级别的。(Chen Li et al., 2014)在参考前人多种机器机器翻译模型的基础上,提出了一种Unsupervised Model。

Pennell and Liu (2010) used sequence labeling model (CRF)解决文本规范化问题。这个模型使用分类来去除噪音。本文参考了其思路,并加以改进创新。我们提出的GRFE在字符级别上对输入进行处理,最终获得在单词级别上的分类信息。根据获得的分类的信息,利用事先建立好的规则完成文本规范化的任务。

 

 

 

GRFE一共由三部分组成:

uploading.4e448015.gif转存失败重新上传取消

Data Processing是将文本信息处理为能喂给神经网络的向量,其中使用了字典和Embedded技术。Training采用Encoder-Decoder机制,Encoder和Decoder都使用GRU神经网络。Normalization借助文本的分类信息,根据规则完成文本规范化任务。

 

 

对于文本中的一个需要规范化的数字T,我们先获取其上下文,将T在文本的前后各三个单词作为其上下文(Richard Sproat, Navdeep Jaitly,2016),并用*将T包围起来,形成如下样式:... * T * ...,得到的句子S:

uploading.4e448015.gif转存失败重新上传取消

例如对于数字524,在上下文I live at ... George street,会表示为

I live at * 524 * George street. 将其作为输入的话,应该得到输出ADDRESS,再根据这个分类结果,就可以很轻松地将524规范化为five two four。

为了能将S输入神经网络,我们需要将其转化为数字向量,对于这个过程,主流有字符级和单词级两种方法,我们采用字符级的方法,其相较于单词级有很明显的4个优点:

  1. 数据字典不用再担心词汇量不足的情况
  2. 可以表示单词的变形
  3. 不必再对输入进行分段(Chung, Cho, Bengio ,2016)
  4. 更便于神经网络发现句子的内在逻辑(Lee, Cho, Hofmann,2017)

 

通过对照字符字典dictionary,我们将S转化为数字向量M:

uploading.4e448015.gif转存失败重新上传取消

可M仍不能直接输入神经网络,还需要按照神经网络的隐藏层节点数对M进行Embedding:

uploading.4e448015.gif转存失败重新上传取消

uploading.4e448015.gif转存失败重新上传取消

预测出词汇表中每个词在其上下文中的概率:

uploading.4e448015.gif转存失败重新上传取消

uploading.4e448015.gif转存失败重新上传取消

损失函数:

uploading.4e448015.gif转存失败重新上传取消

根据上面的函数开始迭代:

uploading.4e448015.gif转存失败重新上传取消

uploading.4e448015.gif转存失败重新上传取消

得到用于训练神经网络的输入矩阵input:

uploading.4e448015.gif转存失败重新上传取消

过程如下图:

uploading.4e448015.gif转存失败重新上传取消

 

 

我们Encoder-Decoder结构,都使用GRU神经网络,GRU(Gated Recurrent Unit)是LSTM的一种变体,它对LSTM做了很多简化,同时却保持着和LSTM几乎相同的效果。

GRU对LSTM做了两个大得改动:将输入门、遗忘门和输出门变为更新门(Update Gate)和重置门(Reset Gate)。单元状态与输出合并为一个隐藏状态:h。

 

我们使用Encoder来识别输入句子的上下文:

Wi分别表示Update Gate(K),Reset Gate(J),Hidden Gate(h),Output Gate(O)的权重 uploading.4e448015.gif转存失败重新上传取消

uploading.4e448015.gif转存失败重新上传取消

并将Encoder最后一层的最后一个隐藏层作为上下文常向量C:

uploading.4e448015.gif转存失败重新上传取消

将C传给Decoder,Decoder接收到C后,以SOS作为开始标志连同C输入Decoder,x为Decoder输入,O为输出:

uploading.4e448015.gif转存失败重新上传取消

Decoder一共会生成3个输出,

uploading.4e448015.gif转存失败重新上传取消

O1 indicates classification results, O2 is end mark.

uploading.4e448015.gif转存失败重新上传取消

class为分类结果

过程如下图: is end mark

uploading.4e448015.gif转存失败重新上传取消uploading.4e448015.gif转存失败重新上传取消

 

 

有了token的分类信息后,再对其进行规范化可以不借助深度学习,而直接利用根据如下算法进行文本规范化:

Algorithm : Normalization(token,class)

Output (Result)

Switch (class)

  Case ‘PLAIN’:

      Result uploading.4e448015.gif转存失败重新上传取消token

      break

  Case ‘DATE’:

      Result uploading.4e448015.gif转存失败重新上传取消normalize_DATE (token)

      break

  ...

  Case ‘ADDRESS’:

      Result uploading.4e448015.gif转存失败重新上传取消normalize_ADDRESS (token)

      break

 

 

 

试考虑如下情况:

I earned $$29 today.

由于某种原因,在现实生活中获得的文本很有可能有不正确的格式。如上例中即为多了一个$.在这种情况下,如果使用普通方法,如:LSTM、FCNN等,则很容易由于训练集中没有此类数据而导致结果错误。以往对此类问题的研究并不充分,大多数神经网络不采取任何措施,这将导致模型的鲁棒性严重不足,尤其是字符级的神经网络。还有一部分神经网络采取在训练集中加入错误数据的方法来提高鲁棒性。但是,由于错误的种类过多且不可预期,这将导致神经网络的训练集过大,增加训练时间,且未必可以取到较好的结果。

文本提出的GRFE在获得分类信息后,由于采用的是比对的方法,所以可以避免此类错误数据对结果的影响。具体而言,对于上例,GRFE将把”$$29”归类为”MONEY”,并最终规范化为twenty-nine dollars”.因此,GRFE拥有更好的鲁棒性。

试考虑如下情况:

I’m 17.

由于以往模型的非规范符号集合与规范化符号集合是一对一的关系,这将导致结果中有可能出现silly errors:如将17规范化为eighteen。由于这样的错误在人听到后,如果不看原文,一般不会认为是有错的,所以这样的错误难以发现,且将造成较大危害。以往的研究通常对这样的问题没有很好的解决方法。由于GRFE比对完成后,将”17”这个符号认定为数字17”,并直接翻译为seventeen,所以可以完全避免silly errors

 

 

 

训练数据来自于(Richard Sproat, Navdeep Jaitly,2016)提供的open-source data。因为这些数据来自Wikipedia。首先,文本规范化在Wikipedia中天然拥有使用的需求。其次,Wikipedia被众多人阅读与修改,其语言风格与书写格式为大多数人所接受,将其作为训练数据更具有代表性。

不同于简单的序列到序列神经网络,分类神经网络要求不同类别的训练数据数量的相对均衡。Let E be 需要进行分类的数据集合,并假设要将E分为三个类别。Let A be其中的一个类别,其数量为E的98.6%. Let B be第二类,其数量为1.15%. Let C be第三类,其数量为0.25%.如果训练的神经网络将E简单地全部归类为A,则将获得98.6%的正确率。但是,由于该神经网络没有完成所需的分类工作,这依然是一个十分糟糕的神经网络。因此,我们对15种符号分别采样,每种都取了X条样例,使其占到总符号集的6.67%。(如图**所示)

uploading.4e448015.gif转存失败重新上传取消

图**:训练集中15种符号的选取比例

在进行符号种类的选取时,我们将不发声的标点符号归类为”PLAIN”,而不是将其归类为”PUNCT””silence”. 之后,在用比对方法进行从非规范的符号映射为规范化的符号的过程中,将归为”PLAIN”的非单词归类为不发声。这样做充分考虑了标点符号的实际属性,即,在实际生活中,标点符号的本来面目就是不发声的。并且,这样将使神经网络的分类负担更小,从而进一步减小神经网络的规模,缩短训练时间,提高正确率。

 

 

在Training中,我们原本想引入注意力机制,可实际考察后发现,Decoder真正起作用的只有O2,加入注意力机制后增加了训练时间却没什么效果。所以我们取消了注意力机制。

在最开始,我们将Encoder和Decoder都设置为两层,可是实验后发现效果并不好,原因是Decoder的隐藏层个数远小于Encoder,这导致Decoder对结果的把控变小,不能很好地起到分类的作用,于是我们增加Decoder的层数为5,经实验,结果要比之前好。

模型的隐藏层节点数为128,损失函数使用交叉熵。

 

 

Causal Feature Extractor(CFE) 取自(Adrián Javaloy Bornás,Ginés García Mateos,2019),他们所采用的数据集也是来自(Richard Sproat, Navdeep Jaitly,2016),所以对其进行比较:

 

 

Acc(%)

CFE

92.74

GRFE

92.77

Table x: Result of experiment

从上表可以看出我们的正确率要略高于CFE。

 

 

LSTM

FCNN

FE

CFE

GRFE

No. of parameters: total (millions)

 

7.380

 

6.653

 

6.479

 

6.479

 

2.265

上表数据来自(Adrián Javaloy Bornás,Ginés García Mateos,2019),通过比较,我们建立模型的参数数量远少于其他的模型,所以在训练时间上自然有很大的优势。

 

 

 

我们介绍了一种解决文本规范化问题的新角度,并提出了相应的模型,GRFE。在将非标准符号映射为标准符号时,我们充分考虑了符号的类别信息。GRFE对符号类别的重视可以消除结果中的”silly errors”,并且可以极大提高模型的鲁棒性。实验表明,我们的模型GRFE不仅与CFE相比拥有更高的准确率,而且我们的新模型仅需极少的训练开销。

我们提出的模型在未来拥有极大发展空间。我们利用GRU神经网络捕捉符号的类别信息,未来可以尝试用其他神经网络来捕获相同的信息。在我们的模型中,Word Embedding环节中的参数并未根据结果的反馈信息进行调整。为进一步提高正确率,未来可以尝试在适当牺牲时间的情况下,使这一环节的参数能够灵活调整。

 

 

 

 

发布了67 篇原创文章 · 获赞 159 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/qq_41371349/article/details/104839292
今日推荐