MMSeg算法说明
首先来理解一下chunk,它是MMSeg分词算法中一个关键的概念。Chunk中包含依据上下文分出的一组词和相关的属性,包括长度(Length)、 平均长度(Average Length)、标准差的平方(Variance)和自由语素度(Degree Of Morphemic Freedom)。下面列出了这4个属性:
属性 | 含义 |
长度(Length) | chuck中各个词的长度之和 |
平均长度(Average Length) | 长度(Length)/词数 |
标准差的平方(Variance) | 同数学中的定义 |
自由语素度(Degree Of Morphemic Freedom) | 各单字词词频的对数之和 |
Chunk中的4个属性只有在需要该属性的值时才进行计算,而且只计算一次。
其次来理解一下规则(Rule),它是MMSeg分词算法中的又一个关键的概念。实际上我们可以将规则理解为一个过滤器(Filter),过滤掉不符合要求的chunk。MMSeg分词算法中涉及了4个规则:
- 规则1:取最大匹配的chunk (Rule 1: Maximum matching)
- 规则2:取平均词长最大的chunk (Rule 2: Largest average word length)
- 规则3:取词长标准差最小的chunk (Rule 3: Smallest variance of word lengths)
- 规则4:取单字词自由语素度之和最大的chunk (Rule 4: Largest sum of degree of morphemic freedom of one-character words)
这4个规则符合汉语成词的基本习惯。
再来理解一下匹配方式复杂最大匹配(Complex maximum matching):
复杂最大匹配先使用规则1来过滤chunks,如果过滤后的结果多于或等于2,则使用规则2继续过滤,否则终止过滤过程。如果使用规则2得到的过滤结果多 于或等于2,则使用规则3继续过滤,否则终止过滤过程。如果使用规则3得到的过滤结果多于或等于2,则使用规则4继续过滤,否则终止过滤过程。如果使用规 则 4得到的过滤结果多于或等于2,则抛出一个表示歧义的异常,否则终止过滤过程。
最后通过一个例句--“研究生命起源"来简述一下复杂最大匹配的分词过程。MMSeg分词算法会得到7个chunk,分别为:
编号 | chunk | 长度 |
0 | 研_究_生 | 3 |
1 | 研_究_生命 | 4 |
2 | 研究_生_命 | 4 |
3 | 研究_生命_起 | 5 |
4 | 研究_生命_起源 | 6 |
5 | 研究生_命_起 | 5 |
6 | 研究生_命_起源 | 6 |
使用规则1过滤后得到2个chunk,如下:
编号 | chunk | 长度 |
4 | 研究_生命_起源 | 6 |
6 | 研究生_命_起源 | 6 |
计算平均长度后为:
编号 | chunk | 长度 | 平均长度 |
4 | 研究_生命_起源 | 6 | 2 |
6 | 研究生_命_起源 | 6 | 2 |
使用规则2过滤后得到2个chunk,如下:
编号 | chunk | 长度 | 平均长度 |
4 | 研究_生命_起源 | 6 | 2 |
6 | 研究生_命_起源 | 6 | 2 |
计算标准差的平方后为:
编号 | chunk | 长度 | 平均长度 | 标准差的平方 |
4 | 研究_生命_起源 | 6 | 2 | 0 |
6 | 研究生_命_起源 | 6 | 2 | 4/9 |
使用规则3过滤后得到1个chunk,如下:
编号 | chunk | 长度 | 平均长度 | 标准差的平方 |
4 | 研究_生命_起源 | 6 | 2 | 0 |
匹配过程终止。最终取“研究”成词,以相同的方法继续处理“生命起源”。
分词效果:
研究_生命_起源_
研究生_教育_
参考地址:
http://blog.csdn.net/sunlylorn/article/details/7652737
http://blog.csdn.net/acceptedxukai/article/details/7390300
相关推荐
开源地址 https://github.com/chenlb/mmseg4j-core mmseg4j core 使用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/ )实现的中文分词器。...mmseg4j 已经实现了这两种分词算法。
Rust 中的中文分词算法 MMSEG
Jcseg基于mmseg算法轻量级中文分词器.rar
基于mmseg算法的轻量级中文分词器
MMSEGO这是MMSEG的GO实现,它是中文分词算法。 待办事项清单文档/注释基准测试用法#输入字典格式键\ tFreq每个键占用一个MMSEGO。这是MMSEG的GO实现,它是中文分词算法。 待办事项列表文档/注释基准测试用法#输入...
mmseg4j用Chih-Hao Tsai 的MMSeg算法实现的中文分词器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中使用。 MMSeg 算法有两种分词方法:Simple和...mmseg4j已经实现了这两种分词算法。
本文档是技术分享的PPT,详解深入讲解了三种中文分词算法,包知ik、mmseg、hanlp。文档中还分析了ik的岐义消除规则相关代码,以及hanlp最短路径算法原理及代码实现。
Friso 是使用 c 语言开发的一款开源的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,并且提供了php5, php7, ocaml, lua的插件实现。源码...
Friso 是使用 c 语言开发的一款开源的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,并且提供了php5, php7, ocaml, lua的插件实现
中文分词器jcseg支持人名识别mmseg四种过滤算法分词准确率达到了97%以上。支持自定义词库。在lexicon文件夹下可以随便添加删除更改词库和词库内容并且对词库进行了分类.zip,太多无法一一验证是否可用,程序如果跑不...
Jcseg是基于mmseg算法的一个轻量级Java中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同时提供了最新版本的...
Jcseg是基于 mmseg 算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于 Jetty 的 web 服务器,方便各大语言直接 http 调用,同时提供了最新...
mmseg4j用Chih-Hao Tsai 的MMSeg算法实现的中文分词器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中使用。 MMSeg 算法有两种分词方法:Simple和...mmseg4j已经实现了这两种分词算法。
中文分词包使用 1.mmseg4j中文分词包(下载、安装与运行) 2.分词方法与效果分析 3.分词包算法学习 4.分词结果 5.词云分析
clj-cn-mmseg clj-cn-mmseg是一个用clojure实现的mmseg中文分词工具包。使用使用Leiningen,在project.clj文件中dependencies中加入如下依赖: [clj-cn-mmseg " 0.1.5 " ]使用Maven,则在pom.xml文件中加入: ...
Friso 是使用 c 语言开发的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,并且提供了php5, php7, ocaml, lua的插件实现。源码无需修改就...
mmseg4j lucene 分词算法,对以往的版进行了大优化
Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同时提供了最新版本的...
Jcseg是基于mmseg算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于Jetty的web服务器,方便各大语言直接http调用,同时提供了最新版本的...
friso是使用c语言开发的一个中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入到其他程序中,例如:MySQL,PHP等。