mmseg4j 中文分词器的一些简介整理

原创 2010年05月14日 17:03:00

在 lucene 中,我们是使用 IndexWriter 调用 Analyzer 将文章切成以词为单位的 Stream,然后生成索引的。lucene 内建的分词器很多,比如:按空白字符分词的WhitespaceAnalyzer,添加了stopword过滤的StopAnalyzer,以及最常用的是StandardAnalyzer。这些自带的分词器对中文支持多不好,我觉得比较好的中文分词器是 mmseg4j

 

mmseg4j 是用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器。并实现了 lucene 的 analyzer 和 solr 的 TokenizerFactory 以方便在 Lucene 和 Solr 中使用。

 

对 lucene  来说 ,mmseg4j 有以下四个 analyzer:SimpleAnalyzer、ComplexAnalyzer、MaxWordAnalyzer、MMSegAnalyzer。前面三个都是继承 MMSegAnalyzer,MMSegAnalyzer 默认使用 max-word 方式分词。

 

上面四个分次类涉及到了三个分词方法:Simple、Complex、max-word。MMSeg 算法有两种分词方法:Simple 和 Complex,都是基于正向最大匹配。mmseg4j  1.6 版开始在 Complex 算法基础上实现了最多分词(max-word)。类似如下的分词就是 max-word 分词:“很好听” -> "很好|好听"; “中华人民共和国” -> "中华|华人|共和|国"; “中国人民银行” -> "中国|人民|银行"。

 

mmseg4j 的词库是使用 utf-8 格式的,由于 utf-8 文件有带与不带 BOM 之分,建议词库第一行为空行或为无 BOM 格式的 utf-8 文件。

 

jar 中已有了,只有你对这个不满意时才需要替换的词库文件:

  • data/chars.dic 是单字与语料中的频率,一般不用改动,mmseg4j 1.5版本后已经加到mmseg4j的jar里了,我们不需要关心它,当然你在词库目录放这个文件可以覆盖它。
  • data/units.dic 是单字的单位,默认读jar包里的,你也可以自定义覆盖它,这功能是试行,如果不喜欢它,可以空的units.dic文件(放到你的词库目录下)覆盖它。

词库文件:

  • data/words.dic 是词库文件,一行一词,当然你也可以使用自己的,1.5版本使用 sogou 词库,1.0的版本是用 rmmseg 带的词库。 一般我们使用这个作为系统自带词库。分词效果当然还与词库有关,sogou 的词库是统计得出,有些高频的单字组合也成了词,如“我们的”。如果还要提高 mmseg4j 的分词效果,还要在整理下词库。
  • data/wordsxxx.dic 1.6版支持多个词库文件,data 目录(或你定义的目录)下读到"words"前缀且".dic"为后缀的文件。如:data/words-my.dic。 一般我们在这里里面,把这个当成我们自身特色的词库。

停止词

  • mmseg4j 没有加任何 stopword,如果需要 stopword  ,需要用户自己实现。作者认为:这东西留给使用者自己加,因为作者不认为加 stopword 是好的方法。如音乐搜索,给加上 the,this……,还能找到歌曲?

 

参考资料:

mmseg4j 作者的博客
http://blog.chenlb.com

中文分词 mmseg4j 在 lucene 中的使用示例
http://blog.chenlb.com/2009/04/use-chinese-segment-mmseg4j-in-lucene-demo.html

Lucene中文分词
http://www.fallever.com/blog/jeff/tag/49/

R语言:实现文本分析实例(基础篇)

转自:http://www.bassary.com/?p=1093 数据包url:下载   (下载数据后,记得同程序中的名字一致,路径要统一。) #1加载软件包: #1.1数据欲处理包: #Sn...
  • wowtous
  • wowtous
  • 2013-11-06 12:48:48
  • 3736

几种R语言中文分词工具安装尝试

由于在进行实验时需要应用到中文分词,因此决定尝试安装中文分词的R包; #rmmseg4j安装install.packages("rmmseg4j", repos="http://R-Forge.R-...
  • shipengfei92
  • shipengfei92
  • 2015-04-03 10:53:16
  • 2764

Lucene 6.0 配置(二)整合mmseg4j分词器

为了实现更强大的分词功能.我加入了mmseg4j高级分词器,但也是因为网上目前的配置版本过老的缘故..需要重配     github地址:https://github.com/chenlb/mmseg...
  • Joker233
  • Joker233
  • 2016-07-14 15:43:17
  • 1919

mmseg4j 中文分词简单代码实例

import com.chenlb.mmseg4j.*; import com.chenlb.mmseg4j.analysis.ComplexAnalyzer; import java.io.Str...
  • piaoxuefengqi
  • piaoxuefengqi
  • 2017-05-10 10:35:57
  • 606

浅谈MMSEG分词算法

最近看了下MMSEG分词算法,觉得这个算法简单高效,而且还非常准确 作者声称这个规则达到了99.69%的准确率并且93.21%的歧义能被这个规则消除。 核心思想是抽取3个可能的词(存在多个组合),然...
  • pwlazy
  • pwlazy
  • 2013-12-25 20:38:03
  • 12354

solr-用mmseg4j配置同义词索引和检索(IKanlyzer需要修改源码适应solr接口才能使用同义词功能)

solr中自带有synonyms的功能,但是功能很有限,因为中文需要在分词的基础上进行搜索,所以官方的配置就没有多大意义。        概念说明:同义词大体的意思是指,当用户输入一个词时,so...
  • qing419925094
  • qing419925094
  • 2014-07-02 14:15:26
  • 1147

文分词 mmseg4j

文分词 mmseg4j 博客分类: mmseg4j SolrPython算法rmmseglucene 使用 paoding 的配置觉得有点复杂,而且管理词库也有点不方便,同时自己也想了解下中文分词...
  • pingxu1987
  • pingxu1987
  • 2014-02-12 18:07:44
  • 1598

【Lucene3.6.2入门系列】第04节_中文分词器

完整版见https://jadyer.github.io/2013/08/18/lucene-chinese-analyzer/
  • jadyer
  • jadyer
  • 2013-08-18 17:43:17
  • 2163

全文索引----中文分词器mmseg4j

通常情况下,我们根据整个字段来索引数据,字段最长时,也不过十个字;但是还有一种情况,如果我们索引的是一篇文章呢?这时候如何处理这个字段,分词器很好的解决了这个问题。...
  • u010942465
  • u010942465
  • 2016-05-10 20:54:36
  • 7250

利用mmSeg4j分词实现网页文本倾向性分析

利用mmSeg4j分词实现网页文本倾向性分析         最近一直在做网页情感倾向性分析的工作,找了一些论文,发现基于机器学习的算法在项目中不太合适,于是自己鼓捣了一套基于中文分词和正负面词库的...
  • qq_26562641
  • qq_26562641
  • 2015-12-16 10:19:57
  • 699
收藏助手
不良信息举报
您举报文章:mmseg4j 中文分词器的一些简介整理
举报原因:
原因补充:

(最多只允许输入30个字)