C語言開源高性能中文分詞器:friso
一。friso中文分詞器
friso是使用c語言開發的一個中文分詞器,使用流行的mmseg算法實現。完全基于模塊化設計和實現,可以很方便的植入到其他程序中,例如:MySQL,PHP等。
1。目前最高版本:friso 0.1,只支持UTF-8編碼。【源碼無需修改就能在各種平臺下編譯使用,加載完20萬的詞條,內存占用穩定為14M。】。
2。mmseg四種過濾算法,分詞準確率達到了98.41%。
3。支持自定義詞庫。在dict文件夾下,可以隨便添加/刪除/更改詞庫和詞庫詞條,并且對詞庫進行了分類。
4。詞庫使用了friso的Java版本jcseg的簡化詞庫。
5。支持中英混合詞的識別。例如:c語言,IC卡。
7。很好的英文支持,電子郵件,網址,小數,分數,百分數。
8。支持阿拉伯數字基本單字單位的識別,例如2012年,5噸,120斤。
9。自動英文圓角/半角,大寫/小寫轉換。
附件目錄結構說明
core - friso核心目錄
└——dict ----- friso詞庫配置文件和所有詞庫文件。
└——src ----- friso c源程序。
└——friso.ini ----- friso配置文件【如何配置friso.ini】。
└——Install ----- 安裝說明文件。
└——Run ----- 測試程序運行說明文件。
└——Uninstall ----- 卸載說明文件。
lib - friso二進制目錄
└——win32 ----- win32的dll和lib文件。
└——linux ----- linux下的so和a文件。
ReadMe.txt ----- friso說明文件
二。分詞速度
測試環境:2.8GHZ/2G/Ubuntu
簡單模式:3.3M/秒
復雜模式:1.6M/秒
三。分詞結果:
1.文本1:
歧義去除:研究生命起源,friso是使用c語言開發的高性能中文分詞組件,混合詞: 做B超檢查身體,本質是X射線,單位和全角: 2009年8月6日開始大學之旅,英文數字: bug report chenxin619315@gmail.com or visit http://code.google.com/p/friso, 15% of the day's time i will be there.
friso分詞結果:
歧義 去除 研究 生命 起源 friso 是 使用 c語言 開發 的 高性能 中文分詞 組件 混合 詞 做 b超 檢查 身體 本質 是 x射線 單位 和 全角 2009年 8月 6日 開始 大學 之旅 英文 數字 bug report chenxin619315@gmail.com or visit http://code.google.com/p/friso 15% of the day's time i will be there
2.文本2:
叔叔親了我媽媽也親了我
friso分詞結果:
叔叔 親了 我 媽媽 也 親了 我
四。使用方法
1.分詞測試:
請按照附件中的Install說明(linux)安裝friso:
運行如下命令來啟動friso測試程序:
//run friso test program. friso -init friso.ini文件地址 //例如我的friso.ini在/c/friso/文件夾中: //請在friso.ini中正確的填寫friso.lex_dir(詞庫配置文件friso.lex.ini的目錄地址,必須以“/”結尾) friso -init /c/friso/friso.ini
2.二次開發使用:
具體請參考tst-friso.c文件:
friso_t friso; friso_task_t task; //1.實例化一個friso分詞實例。 //__path__為friso.ini的地址。 friso = friso_new_from_ifile(__path__); //2.創建一個分詞任務: task = friso_new_task(); //3.設置分詞任務的分詞文本: friso_set_text( task, "要被分詞的文本"); //4.分詞主程序: while ( ( friso_next( friso, friso->mode, task ) ) != NULL ) { //printf("%s[%d,%d]/ ", task->hits->word, task->hits->type, task->hits->offset ); printf("%s/ ", task->hits->word ); if ( task->hits->type == __FRISO_NEW_WORDS__ ) { FRISO_FREE( task->hits->word );//釋放組合詞的內存。 } } //5.釋放friso和分詞任務: friso_free_task( task ); friso_free( friso );
五。friso動態:
friso的下一個版本:
1.加入中文數字識別以及其自動轉換為阿拉伯數字的功能。
2.加入同義詞功能。
3.加入中文人名識別。