NLP(二)_汉语言分词技术-最大匹配法


前述

词是自然语言中最小的有意义的构成单位。汉语文本是*于单字的文本,汉语的书面表达方式以汉字作为最小单元,词与词之间没有明显的界限标志,因此,分词是汉语文本分析处理中首先要解决的问题之一。

分词可能是自然语言处理中最*本的问题,在英文中,天然地使用空格来对句子做分词工作,而中文就不行了,没有特点符号来标志某个词的开始或者结尾,而分词通常对语义的理解是特别重要的

汉语言分词系统面临的困难

  • 如何识别未登录词(新词):词典系统没有收录的词。
    1. 专有名词:中文人名(“***总理”)、地名、机构名(“杭州哇哈哈集团”)、外国译名(“奥斑马、乔丹”)、时间词(1979年5月26日);
    2. 重叠词:“高高兴兴”;
    3. 派生词(衍生词):“一次性用品”、“精致的猪猪女孩”、“佛系”;(最初是英语的gouci
    4. 与领域系相关的术语(互联网、人工智能);
  • 如何廉价高效的获取分词规则
  • 词语边界歧义,指的是对于一个给定的汉语句子或汉字串,有多种词语边界划分形式。包括组合歧义和交叉歧义。
  • 实时性问题:分词算法的准确性和速度。

分词规范

实例:

  • 结合紧密、使用稳定的二字或三字词:

       发展、可爱、红旗、对不起、自行车、青霉素
    
  • 四字成语一律为分词单位:

      胸有成竹、志存高远
    
  • 五字或五字以上的谚语、格言等,分开后如不违背原有组合的意义,应予以切分。

       时间/就/是/生命
      失败/是/成功/之/母
    
  • 结合紧密、使用稳定的词组则不予切分

      不管三七二十一
    
  • 惯用语和有转义的词或词组,在转义的语言环境下,一律为分词单位:

      母女能顶/半边天
      他/像个/铁公鸡
    
  • 略语一律为分词单位(形式较长的名词或常用短语的简化形式

      科技、奥运会、工农业
    
  • 分词单位加形成儿化音的“儿”:

      花儿、悄悄儿、玩儿
    
  • 阿拉伯数字任然保留原有形式

  • 现代汉语中的其他语言的汉字音译外来词,不予切分:

      巧克力、吉普
    
  • 不同的语言环境中的同形异构现象,按照具体语言环境的语义进行切分:

      把/手/举起来
      这个/把手/是木制的
    

动词分词规范简介:

  • 动词前的否定副词一律单独切分

  • 用肯定加否定的形式表示疑问的动词词组一律切分,不完整的则不予切分:

      说/没/说、相信/不/相信
    
  • 动宾结构的词

      开会、跳舞、解决/吃饭/问题
    
  • 结合不紧密或是有众多与之相同的结构词组的动宾词组一律不予切分

      跳/新疆/舞、吃/两顿/饭
    
  • 复合趋向动词一律不予切分:

      出去、进来
    

常用的分词技术

  • 最大匹配法
    最大匹配法的分词实现很简单,并且可以满足一些对分词准确率要求不高的应用系统。*本思想是,选取一定长度(中文词的最大长度一般为6-8个字)的汉字串作为最大字符串,将其同词表中的词语进行匹配,如果匹配不成功,则删掉一个汉字继续匹配,如果匹配成功,当前字符串即为一个词。按照匹配的方向,最大匹配法分为:

     (1)正向最大匹配法
     (2)逆向(反向)最大匹配法
     (3)双向最大匹配法
    

    设S'为句子S的一个子串,词表中最长词的字数为m,正向最大匹配法的过程描述如下:

    初始化:指针p1指向句子的首位置
    算法执行:
    (1) 如果p1到达句子末尾,分词结束;
    (2) p2 = p1 + m;
    (3) 如果p1和p2之间的字符串S'在词表中不存在,p2--,重复(3);
    (4) 如果p1和p2之间的字符串S'在词表中存在,则S'是一个词,p1 = p2+1,转(1);
    例如:“计算机科学和工程”

逆向最大匹配法从句尾开始对句子进行扫描,算法的过程描述如下:

初始化:指针p1指向句子的末尾位置
算法执行:
(1) 如果p1到达句子首位置,分词结束;
(2) p2 = p1 - m;
(3) 如果p1和p2之间的字符串S'在词表中不存在,p2++,重复(3);
(4) 如果p1和p2之间的字符串S'在词表中存在,则S'是一个词,p1 = p2-1,转(1);	

例如:“计算机科学和工程”

如果句子中不存在歧义,则分词的结果是一致的。但如果存在歧义,则切分结果不完全相同。例如,设词典中最长词的字数为7,输入的句子为:他是研究生物化学的。两种方法的切分结果如下:

正向切分结果:他/是/研究生/物化/学/的 。
反向切分结果:他/是/研究/生物/化学/的 。

无论正向匹配还是逆向匹配,均无法发现句子中的歧义,实际的分词算法中,常使用双向最大匹配法来检测歧义:比较正向和反向的切分结果,其中不一致的地方即是存在歧义的字符串。如上例中,“研究生物化学”的切分结果不一致,则该字符串中存在歧义。分词算法中,常利用双向最大匹配法发现歧义,再进一步对歧义词进行切分。

  • 歧义词切分
    分词中的歧义有两类,组合型歧义和交叉型歧义:
    A、X、B分别为汉字串,如果其组成的汉字串AXB满足AX和XB同时为词,则汉字串AXB为交集型歧义字段。
    例如:“研究生命的起源”可以切分为

        研究 生命 的 起源
        研究生 命 的 起源
    

汉字串AB满足A、B、AB同时为词,则该汉字串为组合型歧义字段。
例如: “他从马上下来”可以切分为

他 从 马 上 下来
他 从 马上 下来

在实际的分词中,大部分交集型歧义并不会构成负面的影响,因为其在整体的语料中出现的比例比较低。

很多实际的分词系统中,并不考虑句子中歧义字段的歧义类型,而是利用概率模型对句子做统一的处理。

posted @ 2017-12-20 22:15  美美王子  Views(480)  Comments(0Edit  收藏  举报