標籤:friso官方下載 c語言中文分詞 中文分詞
官方網站:https://code.google.com/p/friso/最新動向:friso-1.6.0發布了(2014.05.08 最新版本)開源,簡單易用,很適合分詞技術的研究。
一。friso中文分詞器
Friso是使用c語言開發的一款高效能中文分詞器,使用流行的mmseg演算法實現。完全基於模組化設計和實現,可以很方便的植入到其他程式中,例如:MySQL,PHP等。同時支援對UTF-8/GBK編碼的切分。
sam:關於mmsseg的理解見:http://blog.csdn.net/hzhsan/article/details/25270519
【源碼無需修改就能在各種平台下編譯使用,載入完20萬的詞條,記憶體佔用穩定為14.5M。】
1。目前最高版本:friso 1.6.0,同時支援對UTF-8/GBK編碼的切分。
2。mmseg四種過濾演算法,分詞準確率達到了98.41%,請參考本演算法的原作:http://technology.chtsai.org/mmseg/。
3。支援自訂詞庫。在dict檔案夾下,可以隨便添加/刪除/更改詞庫和詞庫詞條,並且對詞庫進行了分類。
4。簡體/繁體/簡體混合支援, 可以方便的針對簡體,繁體或者簡繁體切分。同時還可以以此實現簡繁體的相互檢索。
5。支援中英/英中混合詞的識別(維護詞庫可以識別任何一種組合)。例如:卡拉ok, 漂亮mm, c語言,IC卡,哆啦a夢。
7。很好的英文支援,英文標點組合詞識別, 例如c++, c#, 電子郵件,網址,小數,百分數。
8。(!New)自訂保留標點:你可以自訂保留在切分結果中的標點,這樣可以識別出一些複雜的組合,例如:c++, k&r,code.google.com。
9。(!New)複雜英文切分的二次切分:預設Friso會保留數字和字母的原組合,開啟此功能,可以進行二次切分提高檢索的命中率。例如:qq2013會被切分成:qq/ 2013/ qq2013。
10。支援阿拉伯數字/小數基本單字單位的識別,例如2012年,1.75米,5噸,120斤,38.6℃。
11。自動英文圓角/半形,大寫/小寫轉換。
12。同義字匹配:自動中文/英文同義字追加. (需要在friso.ini中開啟friso.add_syn選項)。
13。自動中英文停止詞過濾。(需要在friso.ini中開啟friso.clr_stw選項)。
14。多配置支援, 安全的應用於多進程/多線程環境。
15。提供friso.ini設定檔, 可以依據你的需求輕鬆打造適合於你的應用的分詞。
二。分詞速度
測試環境:2.8GHZ/2G/Ubuntu
簡單模式:3.8M/秒
複雜模式:1.8M/秒
三。分詞測試:
1.文本1:
歧義和同義字:研究生命起源,混合詞: 做B超檢查身體,x射線本質是什麼,今天去奇都ktv唱卡拉ok去,哆啦a夢是一個動漫中的主角,單位和全形: 2009年8月6日開始大學之旅,嶽陽今天的氣溫為38.6℃, 也就是101.48℉, 英文數字: bug report [email protected] or visithttp://code.google.com/p/jcseg, we all admire the hacker spirit!特殊數字: ① ⑩ ⑽ ㈩.
friso分詞結果:
歧義 和 同義字 : 研究 琢磨 研討 鑽研 生命 起源 , 混合詞 : 做 b超 檢查 身體 , x射線 本質 是 什麼 , 今天 去 奇都ktv 唱 卡拉ok 去 , 哆啦a夢 是 一個 動漫 中 的 主角 , 單位 和 全形 : 2009年 8月 6日 開始 大學 之旅 , 嶽陽 今天 的 氣溫 為 38.6℃ , 也就是 101.48℉ , 英文 英語 數字 : bug report chenxin 619315 gmail com [email protected] or visit http : / / code google com code.google.com / p / jcseg , we all admire appreciate like love enjoy the hacker spirit mind ! 特殊 數字 : ① ⑩ ⑽ ㈩ .
2.文本2:
叔叔親了我媽媽也親了我
friso分詞結果:
叔叔 親了 我 媽媽 也 親了 我
四。使用方法
Win下如何自己編譯安裝friso?
詳情,請參考附件中的Friso開發協助文檔。
1.分詞介面樣板:
具體請參考源碼中的tst-friso.c檔案:
friso_t friso;friso_config_t config;friso_task_t task;//1.執行個體化一個friso分詞執行個體。friso = friso_new();//2.建立一個friso分詞配置。config = friso_new_config();//3. 依據給定的friso.ini中快捷初始化friso。if ( friso_init_from_ifile(friso, config, __path__) != 1 ) { printf("fail to initialize friso and config."); goto err;}//4.建立一個分詞任務:task = friso_new_task();//3.設定分詞任務的分詞文本:friso_set_text( task, "要被分詞的文本");//4.分詞主程式:while ( ( friso_next( friso, config, task ) ) != NULL ) { //printf("%s[%d,%d]/ ", task->hits->word, task->hits->type, task->hits->offset ); printf("%s/ ", task->hits->word );}//5.釋放相關資源:friso_free_task( task );err: friso_free_config(config); friso_free(friso);