`
zy3381
  • 浏览: 157654 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

最大正向逆向分词算法

 
阅读更多
以下内容转载自新浪博客http://blog.sina.com.cn/s/blog_53daccf401011t74.html

分词算法设计中的几个基本原则:
1、颗粒度越大越好:用于进行语义分析的文本分词,要求分词结果的颗粒度越大,即单词的字数越多,所能表示的含义越确切,如:“公安局长”可以分为“公安 局长”、“公安局 长”、“公安局长”都算对,但是要用于语义分析,则“公安局长”的分词结果最好(当然前提是所使用的词典中有这个词)
2、切分结果中非词典词越少越好,单字字典词数越少越好,这里的“非词典词”就是不包含在词典中的单字,而“单字字典词”指的是可以独立运用的单字,如“的”、“了”、“和”、“你”、“我”、“他”。例如:“技术和服务”,可以分为“技术 和服 务”以及“技术 和 服务”,但“务”字无法独立成词(即词典中没有),但“和”字可以单独成词(词典中要包含),因此“技术 和服 务”有1个非词典词,而“技术 和 服务”有0个非词典词,因此选用后者。
3、总体词数越少越好,在相同字数的情况下,总词数越少,说明语义单元越少,那么相对的单个语义单元的权重会越大,因此准确性会越高。

下面详细说说正向最大匹配法、逆向最大匹配法和双向最大匹配法具体是如何进行的:
先说说什么是最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描)。例如:词典中最长词为“中华人民共和国”共7个汉字,则最大匹配起始字数为7个汉字。然后逐字递减,在对应的词典中进行查找。
下面以“我们在野生动物园玩”详细说明一下这几种匹配方法:
1、正向最大匹配法:
正向即从前往后取词,从7->1,每次减一个字,直到词典命中或剩下1个单字。
第1次:“我们在野生动物”,扫描7字词典,无
第2次:“我们在野生动”,扫描6字词典,无
。。。。
第6次:“我们”,扫描2字词典,有
扫描中止,输出第1个词为“我们”,去除第1个词后开始第2轮扫描,即:
第2轮扫描:
第1次:“在野生动物园玩”,扫描7字词典,无
第2次:“在野生动物园”,扫描6字词典,无
。。。。
第6次:“在野”,扫描2字词典,有
扫描中止,输出第2个词为“在野”,去除第2个词后开始第3轮扫描,即:
第3轮扫描:
第1次:“生动物园玩”,扫描5字词典,无
第2次:“生动物园”,扫描4字词典,无
第3次:“生动物”,扫描3字词典,无
第4次:“生动”,扫描2字词典,有
扫描中止,输出第3个词为“生动”,第4轮扫描,即:
第4轮扫描:
第1次:“物园玩”,扫描3字词典,无
第2次:“物园”,扫描2字词典,无
第3次:“物”,扫描1字词典,无
扫描中止,输出第4个词为“物”,非字典词数加1,开始第5轮扫描,即:
第5轮扫描:
第1次:“园玩”,扫描2字词典,无
第2次:“园”,扫描1字词典,有
扫描中止,输出第5个词为“园”,单字字典词数加1,开始第6轮扫描,即:
第6轮扫描:
第1次:“玩”,扫描1字字典词,有
扫描中止,输出第6个词为“玩”,单字字典词数加1,整体扫描结束。
正向最大匹配法,最终切分结果为:“我们/在野/生动/物/园/玩”,其中,单字字典词为2,非词典词为1。
2、逆向最大匹配法:
逆向即从后往前取词,其他逻辑和正向相同。即:
第1轮扫描:“在野生动物园玩”
第1次:“在野生动物园玩”,扫描7字词典,无
第2次:“野生动物园玩”,扫描6字词典,无
。。。。
第7次:“玩”,扫描1字词典,有
扫描中止,输出“玩”,单字字典词加1,开始第2轮扫描
第2轮扫描:“们在野生动物园”
第1次:“们在野生动物园”,扫描7字词典,无
第2次:“在野生动物园”,扫描6字词典,无
第3次:“野生动物园”,扫描5字词典,有
扫描中止,输出“野生动物园”,开始第3轮扫描
第3轮扫描:“我们在”
第1次:“我们在”,扫描3字词典,无
第2次:“们在”,扫描2字词典,无
第3次:“在”,扫描1字词典,有
扫描中止,输出“在”,单字字典词加1,开始第4轮扫描
第4轮扫描:“我们”
第1次:“我们”,扫描2字词典,有
扫描中止,输出“我们”,整体扫描结束。
逆向最大匹配法,最终切分结果为:“我们/在/野生动物园/玩”,其中,单字字典词为2,非词典词为0。
3、双向最大匹配法:
正向最大匹配法和逆向最大匹配法,都有其局限性,我举得例子是正向最大匹配法局限性的例子,逆向也同样存在(如:长*药店,逆向切分为“长/*药店”),因此有人又提出了双向最大匹配法,双向最大匹配法。即,两种算法都切一遍,然后根据大颗粒度词越多越好,非词典词和单字词越少越好的原则,选取其中一种分词结果输出。
如:“我们在野生动物园玩”
正向最大匹配法,最终切分结果为:“我们/在野/生动/物/园/玩”,其中,两字词3个,单字字典词为2,非词典词为1。
逆向最大匹配法,最终切分结果为:“我们/在/野生动物园/玩”,其中,五字词1个,两字词1个,单字字典词为2,非词典词为0。
非字典词:正向(1)>逆向(0)(越少越好)
单字字典词:正向(2)=逆向(2)(越少越好)
总词数:正向(6)>逆向(4)(越少越好)
因此最终输出为逆向结果。


附件为算法的实现










分享到:
评论

相关推荐

    基于正向、逆向的最大分词算法实现

    本文将深入探讨“基于正向、逆向的最大分词算法实现”的相关知识。 首先,我们要理解什么是分词。分词,也称为词汇化或切词,是指将连续的汉字序列切分成具有独立含义的词语。在中文处理中,由于没有明显的空格分隔...

    中文分词程序-正向最大匹配算法及逆向最大匹配算法

    在这个“中文分词程序”中,包含了两种常见的分词算法:正向最大匹配算法(Forward Maximum Matching, FMM)和逆向最大匹配算法(Backward Maximum Matching, BMM)。 正向最大匹配算法是一种自左向右的分词策略。...

    最新逆向最大匹配分词算法 盘古分词 分词算法 中文分词 源码

    逆向最大匹配分词算法(Reverse Maximum Matching,RMM)是一种常见的中文分词技术,广泛应用于自然语言处理、搜索引擎和信息检索等领域。该算法的基本思想是从待分词文本的末尾开始,向前寻找最长的已存在于词典中...

    正向最大匹配中文分词算法

    中文分词一直都是中文自然语言处理领域的基础研究。目前,网络上流行的很多中文分词软件都可以在付出较少的代价的同时...MM算法有三种:一种正向最大匹配,一种逆向最大匹配和双向匹配。本程序实现了正向最大匹配算法。

    python正向最大匹配分词和逆向最大匹配分词

    在本文中,我们将讨论 Python 实现的正向最大匹配分词和逆向最大匹配分词算法,并提供完整的源代码。 正向最大匹配分词 正向最大匹配分词是一种常用的分词算法,它从左到右扫描输入字符串,并尽可能地找到最长的...

    基于逆向匹配的中文分词算法

    通过与其他分词算法(如正向最大匹配法、双向最大匹配法等)进行对比,可以更直观地看出基于逆向匹配的中文分词算法的优势与不足。实验结果表明,RMM算法在处理未登录词方面表现更优,尤其是在处理长难句时能够保持...

    正向最大匹配算法实现中文分词

    MM算法有三种:一种正向最大匹配,一种逆向最大匹配和双向匹配。本程序实现了正向最大匹配算法。 本程序还可以从我的github上面下载:https://github.com/Zehua-Zeng/Maximum-Matching-Algorithm

    一个简单的分词系统(可以选择正向最大匹配分词或逆向最大匹配)

    在这个简单的分词系统中,提供了两种主要的分词算法:正向最大匹配(Forward Maximum Matching, FMM)和逆向最大匹配(Backward Maximum Matching, BMM)。下面我们将详细探讨这两种方法及其应用。 首先,正向最大...

    中文分词-正向最大匹配法和逆向最大匹配法的实现

    需要注意的是,Python提供了许多现成的中文分词库,如jieba,它们已经实现了包括正向、逆向匹配在内的多种分词算法,并且优化了性能。但在学习和理解分词原理时,自己动手实现这些方法是非常有益的。 总的来说,...

    RMM.rar_rmm逆向最大_分词_最大匹配算法_逆向最大匹配算法实现分词

    逆向最大匹配(RMM,Reverse Maximum Matching)算法是一种在自然语言处理中广泛使用的中文分词方法。在中文文本处理中,由于汉字不带有明显的边界标识,因此需要借助特定的算法来确定词语的边界,而分词就是这个...

    中英文分词算法

    在分词过程中,通常采用正向最大匹配(Forward Maximum Matching, FMM)或逆向最大匹配(Backward Maximum Matching, BMM)策略,确保中英文单词都能被正确切分。 3. 未登录词识别:对于未出现在词典中的词汇,算法...

    基于Hash结构的逆向最大匹配分词算法的改进_丁振国1

    本文主要探讨了基于Hash结构的逆向最大匹配分词算法的改进,旨在提高分词速度和准确性,减少歧义。 1. 分词算法概述 - 最小匹配算法:这是一种早期的分词方法,从字符串左侧开始,每次取固定长度的字段与词典对比...

    正向最大匹配(FMM)和逆向最大匹配(BMM)的分词系统

    正向最大匹配(Forward Maximum Matching, 简称FMM)和逆向最大匹配(Backward Maximum Matching, 简称BMM)是两种广泛应用的分词算法,它们在C#环境下被实现并封装在一个名为"FMM&BMM_WordDivise"的压缩包中。...

    中文分词算法研究整理资料

    例如,正向最大匹配(FMM)、逆向最大匹配(RMM)、双向最大匹配(BMM)等。这些方法简单高效,但对未登录词(不在词典中的新词)处理能力有限。 2. **基于统计的分词方法**:这些方法利用大量已标注的语料库,通过...

    一种基于改进最大匹配快速中文分词算法

    ### 基于改进最大匹配快速中文分词算法的知识点 #### 一、中文分词技术概述 中文分词作为自然语言处理中的基础步骤,在文本分析、机器翻译、信息检索等多个领域发挥着至关重要的作用。它主要负责将连续的中文字符...

    python正向最大匹配分词和逆向最大匹配分词的实例

    在本篇文章中,将深入探讨Python语言实现的正向最大匹配分词算法和逆向最大匹配分词算法。这两种分词算法是中文自然语言处理(NLP)领域中非常重要的基础技术,广泛应用于中文信息检索、文本挖掘等场景。文章将给出...

Global site tag (gtag.js) - Google Analytics