[NLP] 2.2 文本正规化 (Text Normalization)

上一节,我们尝试使用正则表达式工具来提取必要的信息,接下来则是要对提取出来的文本正规化

基本的任务(根据实际应用会产生变化):

  • 让文本句子token化/segment化(获得单词
  • 正规化单词(word)的形式 (例如提取单词的主干,比方说英语中的原型和过去式)
  • 句子segment化

上述的任务是逐层递进的:先确定单词,再到正规化单词的形式,最后确认完整的句子。

Example:How many Words?

这么说有一点抽象,举几个例子:

I do uh main-­‐ mainly business data processing.

这是一句很口语的话,里面包含了一些让句子十分卡顿的成分,例如 uh 等语气词。

Seuss’s cat in the hat is different from other cats!

  • 词干(Lemma) :是词汇最本身的形式,例如cat和cats就具有相同的Lemma,如果把它们当成两个词,显然没什么道理。
  • 词形(wordform):词汇的外貌,最表面的形式,cat和cats虽然Lemma一样,但外形却完全不一样。

they lay back on **the **San Francisco grass **and **looked at **the **stars **and **their

  • 类型(type):单词类型 V。上面的例子共有15个词,但是有重复的词汇,如果去掉重复的, V=13.
  • 标记(token):一共有多少个单词符号,这句话所含有的单词个数,N=15.

其中,V 和 N 符合 Heran's / Heap's 定理:

[|V|=kN^eta,0<eta<1,k>0,通常etaapprox 0.7 ]

常见语料库的的情况:
可以看到V和N的关系

Word Tokenization

Tokenization:意思是将 文本 切分成 词汇。
这其中包含许多问题:

奇怪的分法

简单粗暴的分开方法,可以使用Penn Treebank 分词标准:

就很粗暴了

针对不同的语言,也有相对应的问题:

  • 法语
    L'ensemble -> 这算是一个还是两个token?
  • 德语
    Lebensversicherungsgesellschaftsangestellter(德语经常会用连接在一起的大词汇)
    等同于英语的:life insurance company employee
  • 中文
    莎拉波娃现在居住在美国东南部的佛罗里达。(中文没有空格来区分词汇)
    Sharapova now lives in US southeastern Florida。

Byte Pair Encoding 算法

词汇的切分方法多种多样,但是根据某种规则自动合并,实在是太复杂了,当然了,ML方法也不是不行,但又没有一种更加简单的方法?
因此就引入了BPE方法:通过循环迭代,将高频出现的char对融合起来,融合之后,加入字典。
直接看一个例子:
假设我们有:low 出现5次,lower 出现2次,newest 出现6次,widest 出现3次
每个词汇的末尾加入一个特殊字符,作为标注,表示该subword是一个尾巴。
然后将每一个word打散,初始化结束,如下面这个例子所示:
0. {'l o w ': 5, 'l o w e r ': 2, 'n e w e s t ': 6, 'w i d e s t ': 3}

观察出现最多的subword,在这个阶段还是char,我们发现,e+s的组合,出现了6+3次,于是我们判断,它们大概率是可以被视作一直在一起的。

  1. {'l o w ': 5, 'l o w e r ': 2, 'n e w es t ': 6, 'w i d es t ': 3}

发现es+t的组合,也不错,是9次,那么继续合并。
2. {'l o w ': 5, 'l o w e r ': 2, 'n e w est ': 6, 'w i d est ': 3}

一直运行,直到获得了类似于low+er的组合,就能够停止了。
是否停止取决于这个算法的元参数:融合的数量,也可以叫步数,k。
如果k非常大,意味者几乎所有的单词都能够得到『自己的完整表达』。
例如,lower将不再是low+er的组合,而是完整的lower,毕竟k取的非常大。

如果你还不能理解,可以参考额外的来源:
https://zhuanlan.zhihu.com/p/86965595
https://zhuanlan.zhihu.com/p/38130825

Word Normalization 单词正规化

单词正规化的意思,就如同把零散的人员收编成统一的队列。
例如:{U.S. U.S.A USA} -> USA

tokenization 和 normalization 通常只能够正则表达式或者基于ML算法的方式来完成。

原文地址:https://www.cnblogs.com/kykai/p/13946158.html