mmseg4j中文分詞器
1、mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/ )實現(xiàn)的中文分詞器,并實現(xiàn) lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
2、MMSeg 算法有兩種分詞方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四個規(guī)則過慮。官方說:詞語的正確識別率達到了 98.41%。mmseg4j 已經(jīng)實現(xiàn)了這兩種分詞算法。
1.5版的分詞速度simple算法是 1100kb/s左右、complex算法是 700kb/s左右,(測試機:AMD athlon 64 2800+ 1G內(nèi)存 xp)。
1.6版在complex基礎(chǔ)上實現(xiàn)了最多分詞(max-word)?!昂芎寐牎?-> "很好|好聽"; “中華人民共和國” -> "中華|華人|共和|國"; “中國人民銀行” -> "中國|人民|銀行"。
1.7-beta 版, 目前 complex 1200kb/s左右, simple 1900kb/s左右, 但內(nèi)存開銷了50M左右. 上幾個版都是在10M左右.
mmseg4j實現(xiàn)的功能詳情請看:
3、在 com.chenlb.mmseg4j.example包里的類示例了三種分詞效果。
4、 在 com.chenlb.mmseg4j.analysis包里擴展lucene analyzer。MMSegAnalyzer默認使用max-word方式分詞(還有:ComplexAnalyzer, SimplexAnalyzer, MaxWordAnalyzer)。
5、在 com.chenlb.mmseg4j.solr包里擴展solr tokenizerFactory。
dicPath 指定詞庫位置(每個MMSegTokenizerFactory可以指定不同的目錄,當是相對目錄時,是相對 solr.home 的目錄),mode 指定分詞模式(simple|complex|max-word,默認是max-word)。
6、運行,詞典用mmseg.dic.path屬性指定或在當前目錄下的data目錄,默認是 ./data 目錄。
java -Dmmseg.dic.path=./data -jar mmseg4j-1.6.jar 這里是字符串。
java -cp .;mmseg4j-1.6.jar com.chenlb.mmseg4j.example.Simple 這里是字符串。
java -cp .;mmseg4j-1.6.jar com.chenlb.mmseg4j.example.MaxWord 這里是字符串
7、一些字符的處理 英文、俄文、希臘、數(shù)字(包括①㈠⒈)的分出一連串的。目前版本沒有處理小數(shù)字問題, 如ⅠⅡⅢ是單字分,字庫(chars.dic)中沒找到也單字分。
8、詞庫(強制使用 UTF-8):
data/chars.dic 是單字與語料中的頻率,一般不用改動,1.5版本中已經(jīng)加到mmseg4j的jar里了,我們不需要關(guān)心它,當然你在詞庫目錄放這個文件可能覆蓋它。
data/units.dic 是單字的單位,默認讀jar包里的,你也可以自定義覆蓋它,這功能是試行,如果不喜歡它,可以空的units.dic文件覆蓋它。
data/words.dic 是詞庫文件,一行一詞,當然你也可以使用自己的,1.5版本使用 sogou 詞庫,1.0的版本是用 rmmseg 帶的詞庫。
data/wordsxxx.dic 1.6版支持多個詞庫文件,data 目錄(或你定義的目錄)下讀到"words"前綴且".dic"為后綴的文件。如:data/words-my.dic。
Maven:
<dependency> <groupId>com.chenlb.mmseg4j</groupId> <artifactId>mmseg4j-core</artifactId> <version>1.10.0</version> </dependency>
