中文分詞器:jcseg

jopen 12年前發布 | 72K 次閱讀 中文分詞

jcseg是使用Java開發的一個中文分詞器,使用流行的mmseg算法實現。

1。目前最高版本:jcseg 1.6.9

2。mmseg四種過濾算法,分詞準確率達到了97%以上。

3。支持自定義詞庫。在lexicon文件夾下,可以隨便添加/刪除/更改詞庫和詞庫內容,并且對詞庫進行了分類。如何給jcseg添加詞庫/新詞

4。中文數字識別,例如:"四五十個人都來了,管他叁柒貳拾壹。"中的"四五十"和"叁柒貳拾壹"。(1.6.7版開始支持)

5。支持中英混合詞的識別。例如:B超。

6。支持基本單字單位的識別,例如2012年。

7。智能圓角半角處理。

8。特殊字母識別:例如:Ⅰ,Ⅱ

9。特殊數字識別:例如:①,⑩

10。配對標點內容提取:例如:最好的Java書《java編程思想》,‘暢想杯黑客技術大賽’,被《,‘,“,『標點標記的內容。(1.6.8版開始支持)

11。智能中文人名識別。中文人名識別正確率達90%以上。(可以維護lex-lname.lex,lex-dname-1.lex,lex-dname-2.lex來去除歧義,提高準確率)。

jcseg目錄結構:

src ----- jcseg源代碼

classes ----- jcseg class文件

doc ----- jcseg開發文檔

lib ------ lucene核心jar文件

build.xml ----- jcseg ant編譯腳本文件

lexicon ----- jcseg詞庫文件 (可以在jcesg.properties中更改)

jcseg.design ----- jcseg設計文件

jcseg-core-{version} ----- jcseg jar文件

jcseg-kernel.jar ----- jcseg內核-jcseg是基于這個內核實現了,你可以基于這個內核寫自己的實現。

jcseg-{version}-javadoc.jar ------ jcseg文檔jar文件

jcseg.properties ----- jcseg配置文件

配置文件::參數說明

        jcseg.icnname=1                 #-開啟中文人名識別         lexicon.prefix=lex              #-詞庫文件前綴         jcseg.cnmaxlnadron=1            #-姓氏修飾詞長度,例如:老陳 中的“陳”         lexicon.suffix=lex              #-詞庫文件后綴         jcseg.mixcnlen=2                #-中英混合詞最大中文詞數,例如:A計劃 A后面有兩個字“計劃”         jcseg.nsthreshold=1000000       #-姓名成詞歧義闋值         lexicon.dir=lexicon             #-詞庫目錄,和以下的path加起來為jcseg詞庫絕對路徑         lexicon.path=jar.dir            #-詞庫存放路徑(jar.dir為默認路徑)         jcseg.maxlen=5                  #-正向最大化匹配數目(建議位于4-7之間)         jcseg.pptmaxlen=15              #最大的配對標點內容長度。

word.type ----- jcseg word類別,每一個辭典文件都必須指定類別。請查看具體的詞庫文件。

二。分詞速度:

測試環境:2.8GHZ/2G/Ubuntu

Simple 模式: 1366058字/秒 3774.5KB/秒

Complex 模式: 479338字/秒 1324.4KB/秒

分詞正確率97%以上,請參考本算法的原作:http://technology.chtsai.org/mmseg/

測試文章,“世界與和平” 簡易模式830msec,復雜模式2461msec。

三。分詞結果演示:

文本一:

普通:研究生命起源,混合詞: 做B超檢查身體,本質是X射線,單位和全角: 2009年8月6日開始大學之旅,中文數字: 張三和李四都同意每個人交四十七塊錢班費的建議,那是一九九八年前的事了,四川麻辣燙很好吃。人名識別: 我是陳鑫,也是jcesg的作者,三國時期的諸葛亮是個天才,我們一起給劉翔加油,羅志高興奮極了因為老吳送了他一臺筆記本。配對標點: 本次“暢想杯黑客技術大賽”的得主為‘電信09-2BF’的張三,獎勵《C程序設計語言》一書和『暢想網絡JAVA教程』一套。特殊字母: 【Ⅰ】(Ⅱ),英文: let's make miracle,特殊數字: ① ⑩ ⑽ ㈩.

jcseg分詞結果:(標點符號可以濾掉,我這里都顯示了)

普通|:|研究|生命|起源|混合|詞|:|做|B超|檢查|身體|本質|是|X射線|單位|和|全角|:|2009年|8月|6日|開始|大學|之旅|中文|數字|:|張三|和|李四|都|同意|每個人|交|四十七|塊錢|班費|的|建議|那是|一九九八|年前|的|事|了|四川|麻辣燙|很|好吃|人名|識別|:|我|是|陳鑫|也|是|jcesg|的|作者|三國|時期|的|諸葛亮|是|個|天才|我們|一起|給|劉翔|加油|羅志高|興奮|極了| 因為|老吳|送|了|他|一臺|筆記本|配對|標點|:|本次|暢想杯黑客技術大賽|的|得主|為|電信09-2BF|的|張三|獎勵|C程序設計語言| 一書|和|暢想網絡JAVA教程|一套|特殊|字母|:|Ⅰ|Ⅱ|英文|:|let's|make|miracle|特殊|數字|:|①⑩|⑽|㈩|.

文本二:

陳書高自從擔任班長以來,一直兢兢業業

jcseg切分結果:

陳書高|自從|擔任|班長|以來|,|一直|兢兢業業

jcseg分詞歧義:

例如: 一次性交一百元 結果: 一次|性交|一|百元 (該問題如果有必要,可以更改lex-chars.lex的單字語素自由度來達到正確的切分結果)

正確的結果應該為:一次性 交 一百元

例如: 長春市長春藥店 結果: 長春市|長春|藥店 (這個結果很準確)

淡疼的結果:長春|市長|春藥|店。

四。使用方法:

請參考jcseg源碼里面的Demo程序。 源碼在Downloads中下載。

demo測試程序運行:

運行java -jar jcseg-core-{version}.jar即可。

lucene分詞用法:
   //導入jcseg-core-{version}.jar
   //import com.webssky.jcseg.core.Config類

   /*
     1.Config.COMPLEX_MODE為復雜模式:
     特點:四種過濾算法,中英混合詞識別,中文姓名,姓氏昵稱識別,
     數字單位識別,特殊數字和字母識別。
    */

   /*
     2.Config.SIMPLE_MODE為簡易模式
     特點:只使用了最大化過濾算法,其他的同復雜模式。
    */

   Analyzer analyzer = new JcsegAnalyzer(Config.COMPLEX_MODE);

詳細了解地址:jcseg google code

下載地址:下載jcseg

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!