正向最大匹配法 &逆向最大匹配法 原理对比

下面介绍的分词算法中最简单的正向最大匹配和反向最大匹配。
这种两种方法都是机械分词方法,它是按照一定的策略将待分析的汉字串与一个”充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。

按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:

1)正向最大匹配法(由左到右的方向);

2)逆向最大匹配法(由右到左的方向);

3)最少切分(使每一句中切出的词数最小)。

还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率

定义比较抽象,举个例子来说明正向最大匹配和反向最大匹配。

例子:’今天来了许多新同事’
1.正向最大匹配方式,最大长度为5
今天来了许
今天来了
今天来
今天  ====》 得到一个词–今天
来了许多新
来了许多
来了许
来了
来   ====》 得到一个词–来
了许多新同
了许多新
了许多
了许
了   ====》 得到一个词–了
许多新同事
许多新同
许多新
许多 ====》得到一个词– 许多
新同事
新同
新   ====》得到一个词– 新
同事 ====》得到一个词– 同事

最后正向最大匹配的结果是:

/今天/来/了/许多/新/同事/

2.反向最大匹配方式,最大长度为5
许多新同事
多新同事
新同事
同事 ====》得到一个词– 同事
来了许多新
了许多新
许多新
多新
新  ====》得到一个词– 新
天来了许多
来了许多
了许多
许多 ====》得到一个词– 许多
今天来了
天来了
来了
了  ====》得到一个词– 了
今天来
天来
来  ====》得到一个词– 来
今天 ====》得到一个词– 今天

最后反向最大匹配的结果是:

/今天/来/了/许多/新/同事/

正向最大匹配和反向最大匹配的结果并不一定相同

例子:’我一个人吃饭’
1.正向最大匹配方式,最大长度为5
我一个人吃
我一个人
我一个
我一
我  ====》得到一个词– 我
一个人吃饭
一个人吃
一个人
一个 ====》得到一个词– 一个
人吃饭
人吃
人 ====》得到一个词– 人
吃饭 ====》得到一个词– 吃饭

最后正向最大匹配的结果是:

/我/一个/人/吃饭/

2.反向最大匹配方式,最大长度为5
一个人吃饭
个人吃饭
人吃饭
吃饭 ====》得到一个词– 吃饭
我一个人
一个人
个人 ====》得到一个词– 个人
我一
一  ====》得到一个词– 一
我  ====》得到一个词– 我

最后反向最大匹配的结果是:

/我/一/个人/吃饭/

这次两种方式的结果就不一致了。

正向最大匹配 和逆向最大匹配对比比较相关推荐

  1. Python实现中文分词--正向最大匹配和逆向最大匹配

    编译原理实验二:Python实现中文分词–正向最大匹配和逆向最大匹配 最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数 ...

  2. 词法分析-中文分词技术-正向最大匹配法与逆向最大匹配法

    词法分析-中文分词技术-正向最大匹配法与逆向最大匹配法 Type真是太帅了 于 2018-12-31 13:20:07 发布 1930  收藏 1 分类专栏: 编程 版权 编程 专栏收录该内容 15 ...

  3. 逆向最大匹配分词算法

    逆向最大匹配分词算法 By Jorbe 2014/03/13 计算机科学 No Comments 中文分词是所有中文信息处理的基础.在数据挖掘.搜索引擎.自然语言处理等领域都起着至关重要的作用.中文分 ...

  4. NLP-基础任务-中文分词算法(1)-基于词典: 机械分词(词典字符串匹配):前向最大匹配、后向最大匹配、双向最大匹配【OOV:基于现有词典,不能进行新词发现处理】

    分词与NLP关系:分词是中文自然语言处理的基础,没有中文分词,我们对语言很难量化,进而很能运用数学的知识去解决问题.对于拉丁语系是不需要分词的. 拉丁语系与亚系语言区别 拉丁语言系不需要分词,因为他们 ...

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

    正向最大匹配 # -*- coding:utf-8 -*- CODEC='utf-8' def u(s, encoding): 'converted other encoding to unicode ...

  6. 正向/逆向最大匹配法分词实现

    最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描).例如:词典中 ...

  7. 基于词典的逆向最大匹配中文分词算法,更好实现中英文数字混合分词

    基于词典的逆向最大匹配中文分词算法,能实现中英文数字混合分词.比如能分出这样的词:bb霜.3室.乐phone.touch4.mp3.T恤.实际分词效果比正向分词效果好 publicclass RMM ...

  8. java中文分词算法_Java实现逆向最大匹配中文分词算法

    写道 //Java实现逆向最大匹配中文分词算法 public class SplitChineseCharacter { public static void main(String[] args) ...

  9. 逆向最大匹配分词RMM

    def getRSeg(text,lib_trie):if not text:return ''if len(text) == 1:return textif lib_trie.find(text): ...

最新文章

  1. 到底这个电路是如何振荡的?
  2. Python中的map()函数和reduce()函数的用法
  3. 1.18 Java匿名类,匿名内部类
  4. SAP ABAP Netweaver和Hybris Commerce的开发license
  5. 将html表格导出到excel表格,table2excel-将HTML表格内容导出到Excel中_html/css_WEB-ITnose...
  6. 算法笔记--KMP算法 EXKMP算法
  7. 的mvc_你写的MVC,真的是MVC吗?
  8. IBM小型机维护手册
  9. 纯JavaScript实现表白代码
  10. FileZilla Server超详细配置
  11. Latex排版技巧:上下方可输入文字的箭头
  12. python sympy包符号运算进行定积分计算
  13. 1-5分钟上手自动化测试——Airtest+Poco快速上手
  14. 接口测试-使用Postman发送请求
  15. 程序员又“作死”了,用AI算法一键“脱”衣,遭全球网友炮轰
  16. Smarting:第一款真正意义上的便携式可移动脑电设备
  17. int short型类型转换
  18. windows运行程序命令
  19. 三年成为年薪70w架构师,只因做到了这些。果然不是一般人
  20. 全面详细介绍Linux 虚拟文件系统(VFS)原理

热门文章

  1. Strutsw2与Spring整合流程-简述
  2. Workbench Could not connect the SSH Tunnel Authentication error
  3. Python 标准库之 datetime
  4. IDEA : Git Pull Failed 解决(IDEA中使用stash功能)
  5. pass基础架构分析
  6. 编写可调模板并使用自动调谐器
  7. “ compiler-rt”运行时runtime库
  8. 长篇自动驾驶技术综述论文(下)
  9. Supervisor使用详解
  10. [JAVA EE] JPA 技术实践:完成增、删、改、查操作