结巴分词1--结巴分词系统介绍
作者:zhbzz2007 出處:http://www.cnblogs.com/zhbzz2007 歡迎轉載,也請保留這段聲明。謝謝!
0 起因
由于博主之前做了一些文本挖掘的項目,在項目中或多或少的用到了分詞模塊,對于中文分詞,博主一般使用Python開發的jieba分詞組件。最近,博主想閱讀一些開源系統,就先從jieba開始,一是因為jieba實現了NLP的一些基礎技術,例如分詞、詞性標注;二是因為想學習學習大神們的編碼規范。
1 jieba系統簡介
"結巴"中文分詞:做最好的Python中文分詞組件。
特點:
涉及算法:
2 jieba系統框架
jieba分詞系統,主要實現三個模塊,
其中,分詞有三種模式,默認是精確模式,
- 精確模式,試圖將句子最精確地切開,適合文本分析;
- 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
- 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞;
如下為jieba代碼結構及子目錄與相應功能的對應;
. ├── analyse # 短語抽取模塊 │?? ├── analyzer.py │?? ├── idf.txt │?? ├── __init__.py │?? ├── textrank.py # TextRank方法 │?? └── tfidf.py # TFIDF方法 ├── _compat.py ├── dict.txt ├── finalseg # 基于HMM的切分方法 │?? ├── __init__.py │?? ├── prob_emit.p │?? ├── prob_emit.py │?? ├── prob_start.p │?? ├── prob_start.py │?? ├── prob_trans.p │?? └── prob_trans.py ├── __init__.py # 基于DAG的切分方法 ├── __main__.py └── posseg # 詞性標注模塊├── char_state_tab.p├── char_state_tab.py├── __init__.py├── prob_emit.p├── prob_emit.py├── prob_start.p├── prob_start.py├── prob_trans.p├── prob_trans.py└── viterbi.pyjieba分詞系統的總體代碼量,
G:\zhb7627\Code\Eclipse WorkSpace>cloc-1.64.exe jieba74 text files.73 unique files.23 files ignored.http://cloc.sourceforge.net v 1.64 T=14.27 s (4.1 files/s, 64392.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Pascal 7 0 0 723708
Python 52 475 147 194347
-------------------------------------------------------------------------------
SUM: 59 475 147 918055
-------------------------------------------------------------------------------
jieba分詞系統的代碼量(去除finalseg和posseg目錄下存儲數據的py文件),
G:\zhb7627\Code\Eclipse WorkSpace>cloc-1.64.exe jieba59 text files.58 unique files.22 files ignored.http://cloc.sourceforge.net v 1.64 T=0.09 s (508.9 files/s, 41989.4 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 45 472 147 3094
-------------------------------------------------------------------------------
SUM: 45 472 147 3094
-------------------------------------------------------------------------------
jieba分詞系統去除的代碼量(去除test目錄,主要用于功能測試),
G:\zhb7627\Code\Eclipse WorkSpace>cloc-1.64.exe jieba22 text files.21 unique files.17 files ignored.http://cloc.sourceforge.net v 1.64 T=0.04 s (295.7 files/s, 40211.7 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 11 237 115 1144
-------------------------------------------------------------------------------
SUM: 11 237 115 1144
-------------------------------------------------------------------------------
最終,實現基本功能的代碼量在一千行左右,這個代碼量非常適合初讀開源系統源碼的開發者,另外也說明jieba分詞系統的作者寫的代碼非常簡潔。
3 jieba分詞源碼閱讀系列
jieba分詞源碼閱讀系列的相關鏈接如下所示,
1.jieba分詞系統整體介紹,結巴分詞1--結巴分詞系統介紹
2.jieba分詞系統中基于前綴詞典構建有向無環圖,然后利用動態規劃求解最大概率路徑,實現分詞,結巴分詞2--基于前綴詞典及動態規劃實現分詞
3.jieba分詞系統中基于HMM模型對未登錄詞進行分詞,結巴分詞3--基于漢字成詞能力的HMM模型識別未登錄詞
4.jieba分詞系統中基于有向無環圖及HMM模型實現詞性標注,結巴分詞4--詞性標注
5.jieba分詞系統中基于TF-IDF和TextRank算法實現關鍵詞抽取,結巴分詞5--關鍵詞抽取
4 Reference
1.對Python中文分詞模塊結巴分詞算法過程的理解和分析
2.jieba中文分詞源碼分析(一)
3.annotated_jieba
4.隱馬爾可夫模型(HMM)攻略
5.HMM相關文章索引
總結
以上是生活随笔為你收集整理的结巴分词1--结巴分词系统介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译器的2点优化
- 下一篇: RocketMQ中的死信队列