當前位置:
首頁 > 最新 > 自然語言處理之中文分詞器-jieba分詞器詳解及python實戰

自然語言處理之中文分詞器-jieba分詞器詳解及python實戰

中文分詞是中文文本處理的一個基礎步驟,也是中文人機自然語言交互的基礎模塊,在進行中文自然語言處理時,通常需要先進行分詞。本文詳細介紹現在非常流行的且開源的分詞器結巴jieba分詞器,並使用python實戰介紹。

jieba分詞演算法使用了基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能生成詞情況所構成的有向無環圖(DAG), 再採用了動態規劃查找最大概率路徑,找出基於詞頻的最大切分組合,對於未登錄詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi演算法。(這裡面很多概念小修之前的文章都有陸續講過哦)

jieba分詞支持三種分詞模式:

1.確模式,試圖將句子最精確地切開,適合文本分析:

2. 全模式,把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義;

3. 搜索引擎模式,在精確模式的基礎上,對長詞再詞切分,提高召回率,適合用於搜索引擎分詞。

jiaba分詞還支持繁體分詞和支持自定義分詞

1

jieba分詞器安裝

在python2.x和python3.x均兼容,有以下三種:

1. 全自動安裝:easy_install jieba 或者 pip install jieba / pip3 install jieba

2. 半自動安裝:先下載,網址為: http://pypi.python.org/pypi/jieba, 解壓後運行: python setup.py install

3. 手動安裝:將jieba目錄放置於當前目錄或者site-packages目錄,

jieba分詞可以通過import jieba 來引用

2

jieba分詞主要功能

先介紹主要的使用功能,再展示代碼輸出。jieba分詞的主要功能有如下幾種:

1.jieba.cut:該方法接受三個輸入參數:需要分詞的字元串; cut_all 參數用來控制是否採用全模式;HMM參數用來控制是否適用HMM模型

2. jieba.cut_for_search:該方法接受兩個參數:需要分詞的字元串;是否使用HMM模型,該方法適用於搜索引擎構建倒排索引的分詞,粒度比較細。

3. 待分詞的字元串可以是unicode或者UTF-8字元串,GBK字元串。注意不建議直接輸入GBK字元串,可能無法預料的誤解碼成UTF-8,

4. jieba.cut 以及jieba.cut_for_search返回的結構都是可以得到的generator(生成器), 可以使用for循環來獲取分詞後得到的每一個詞語或者使用

5. jieb.lcut以及 jieba.lcut_for_search 直接返回list

6. jieba.Tokenizer(dictionary=DEFUALT_DICT)新建自定義分詞器,可用於同時使用不同字典,jieba.dt為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。

代碼演示:

其中下面的是輸出結果。

3

jieba分詞器添加自定義詞典

jieba分詞器還有一個方便的地方是開發者可以指定自己的自定義詞典,以便包含詞庫中沒有的詞,雖然jieba分詞有新詞識別能力,但是自行添加新詞可以保證更高的正確率。

使用命令:

jieba.load_userdict(filename) # filename為自定義詞典的路徑

在使用的時候,詞典的格式和jieba分詞器本身的分詞器中的詞典格式必須保持一致,一個詞佔一行,每一行分成三部分,一部分為詞語,一部分為詞頻,最後為詞性(可以省略),用空格隔開。下面其中userdict.txt中的內容為小修添加的詞典,而第二部分為小修沒有添加字典之後對text文檔進行分詞得到的結果,第三部分為小修添加字典之後分詞的效果。

4

利用jieba進行關鍵詞抽取

這裡介紹基於TF-IDF演算法的關鍵詞抽取(乾貨|詳解自然語言處理之TF-IDF模型和python實現), 只有關鍵詞抽取並且進行詞向量化之後,才好進行下一步的文本分析,可以說這一步是自然語言處理技術中文本處理最基礎的一步

jieba分詞中含有analyse模塊,在進行關鍵詞提取時可以使用下列代碼

當然也可以使用基於TextRank演算法的關鍵詞抽取:

這裡舉一個例子,分別使用兩種方法對同一文本進行關鍵詞抽取,並且顯示相應的權重值。

5

jieba分詞的詞性標註

jieba分詞還可以進行詞性標註,標註句子分詞後每個詞的詞性,採用和ictclas兼容的標記法,這裡知識簡單的句一個列子。

6

jieba分詞並行分詞

jieba分詞器如果是對於大的文本進行分詞會比較慢,因此可以使用jieba自帶的並行分詞功能進行分詞,其採用的原理是將目標文本按照行分割後,把各行文本分配到多個Python進程並行分詞,然後歸併結果,從而獲得分詞速度可觀的提升。

該過程需要基於python自帶的multiprocessing模塊,而且目前暫時不支持windows. 在使用的時候,只需要在使用jieba分詞導入包的時候同時加上下面任意一個命令:

在第五步進行關鍵詞抽取並且計算相應的TF-iDF就可以進行後續的分類或者預測,推薦的相關步驟,後面小修會陸續介紹。

參考內容:

[1] jieba分詞github介紹文檔:https://github.com/fxsjy/jieba

自然語言處理技術

關注微信號每天收聽我們的消息

自然語言處理技術為您推送精品閱讀

每天一個知識點,健康生活每一天

歡迎關注公眾號學習交流


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 自然語言處理技術 的精彩文章:

這些黑科技還有多久會讓你下崗,你準備好了么?

TAG:自然語言處理技術 |