NLP系列-中文分词(基于词典)

作者: hiyoung | 来源:发表于2018-09-20 23:24 被阅读8次

中文分词概述

        词是最小的能够独立活动的有意义的语言成分,一般分词是自然语言处理的第一项核心技术。英文中每个句子都将词用空格或标点符号分隔开来,而在中文中很难对词的边界进行界定,难以将词划分出来。在汉语中,虽然是以字为最小单位,但是一篇文章的语义表达却仍然是以词来划分的。因此处理中文文本时,需要进行分词处理,将句子转为词的表示,这就是中文分词。

中文分词的三个难题:        

        分词规则,消除歧义和未登录词识别。

        构建完美的分词规则便可以将所有的句子正确的划分,但是这根本无法实现,语言是长期发展自然而然形成的,而且语言规则庞大复杂,很难做出完美的分词规则。

        在中文句子中,很多词是由歧义性的,在一句话也可能有多种分词方法。比如:”结婚/的/和尚/未结婚/的“,“结婚/的/和/尚未/结婚/的”,人分辨这样的句子都是问题,更何况是机器。

        此外对于未登陆词,很难对其进行正确的划分。

目前主流分词方法:

        基于规则,基于统计以及二者混合。

基于规则的分词:

        主要是人工建立词库也叫做词典,通过词典匹配的方式对句子进行划分。其实现简单高效,但是对未登陆词很难进行处理。主要有正向最大匹配法,逆向最大匹配法以及双向最大匹配法。

正向最大匹配法(FMM)

    FMM的步骤是:

    (1)从左向右取待分汉语句的m个字作为匹配字段,m为词典中最长词的长度。

    (2)查找词典进行匹配。

    (3)若匹配成功,则将该字段作为一个词切分出去。

    (4)若匹配不成功,则将该字段最后一个字去掉,剩下的字作为新匹配字段,进行再次匹配。

    (5)重复上述过程,直到切分所有词为止。

FMM主要代码实现

        分词的结果为:

测试结果

逆向最大匹配法(RMM)        

        RMM的基本原理与FMM基本相同,不同的是分词的方向与FMM相反。RMM是从待分词句子的末端开始,也就是从右向左开始匹配扫描,每次取末端m个字作为匹配字段,匹配失败,则去掉匹配字段前面的一个字,继续匹配。

RMM主要代码实现

        分词的结果为:

测试结果

双向最大匹配法(Bi-MM)

        Bi-MM是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。据SunM.S.和Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分虽然重合但是错的,或者两种方法切分不同但结果都不对(歧义检测失败)。

    双向最大匹配的规则是:

    (1)如果正反向分词结果词数不同,则取分词数量少的那个。

    (2)如果分词结果词数相同:

            1)分词结果相同,没有歧义,返回任意一个。

            2)分词结果不同,返回其中单字数量较少的那个。

    比如:上述例子中词数相同,但结果不同,逆向最大匹配法的分词结果单字个数是1,所以返回的是逆向最大匹配法的结果。

Bi-MM主要代码实现

        分词的结果为:

测试结果

        基于规则的分词,一般较为简单高效,但是词典的维护很大的人力维护,同时对于未登录词也没有很好的解决办法。双向最大匹配结合了正反两种方法的结果,结果较为准确,在实用中文信息处理中使用广泛。

待更新。

详细代码可参考GitHub: 代码连接

参考书籍:

《Python自然语言处理实战-核心技术与算法》涂铭,刘祥,刘树春  著

《统计自然语言处理》 宗成庆  著

相关文章

  • NLP系列-中文分词(基于词典)

    中文分词概述 词是最小的能够独立活动的有意义的语言成分,一般分词是自然语言处理的第一项核心技术。英文中每个句子都将...

  • Mmseg算法

    1. Mmseg算法简介 Mmseg是一种基于字符串匹配(亦称基于词典)的中文分词算法。传统的基于词典的分词方案虽...

  • NLP-分词器设计

    1. 简介 主要介绍NLP中分词器实现原理,常用分词方法,创建自己的基于词典的分词器。 To be continued!

  • NLP—博客推荐

    NLP词法、句法、语义、语篇综合系列:NLP+词法系列(一)︱中文分词技术小结、几大分词引擎的介绍与比较NLP+词...

  • NLP系列-中文分词(基于统计)

    上文已经介绍了基于词典的中文分词,现在让我们来看一下基于统计的中文分词。 统计分词: 统计分词的主要思想是把每个词...

  • jieba分词基本使用

    jieba “结巴”中文分词:做最好的 Python 中文分词组件 算法 基于前缀词典实现高效的词图扫描,生成句子...

  • 中文分词器MMSEG4J分词练习

    1.MMSeg分词算法原理 MMSeg是Chih-Hao Tsai提出的基于字符串匹配(亦称基于词典)的中文分词算...

  • 基于统计的中文词语提取

    因为公司使用基于词典的机械中文分词方法,需要一个完备的词典才能有好的效果。而关键词提取的效果又依赖于中文分词效果的...

  • “结巴”中文分词:做最好的 Python中文分词组件

    “结巴”中文分词:做最好的 Python中文分词组件 1 jieba中文分词简介: 中文分词是中文NLP的第一步,...

  • 中文分词器JIEBA分词练习

    1.JIEBA简介 jieba是基于Python的中文分词工具,支持繁体分词、自定义词典和三种分词模式: 精确模式...

网友评论

    本文标题:NLP系列-中文分词(基于词典)

    本文链接:https://www.haomeiwen.com/subject/aoznnftx.html