zoukankan      html  css  js  c++  java
  • [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算法的方式来完成。

  • 相关阅读:
    PostGIS安装教程
    报错:尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
    flexpaper跨服务器访问swf不显示问题
    JSAPI 基于arcgis_js_api3.3的部署
    C# datatable排序(转)
    C# 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”
    C# 正则表达式
    AE10.0在Visual Studio 2012下安装没有模板(转)
    AE安装部署以及监测ArcEngine runtime 9.3是否安装
    Flex带CheckBox的Tree(修改ItemRenderer)
  • 原文地址:https://www.cnblogs.com/kykai/p/13946158.html
Copyright © 2011-2022 走看看