天天看點

python jieba 中文分詞工具包

文章目錄

    • 1.前言
    • 2.簡單上手
      • 1)安裝jieba
      • 2)jieba的常用函數
        • 示例
      • 3)解決paddlepaddle-tiny==1.6.1的安裝
        • 示例繼續
    • 3.jieba背後的“黑科技”算法原理

1.前言

項目Github的位址:

https://github.com/fxsjy/jieba
           

jieba是一個開源的中文分詞庫。

廣泛用于文本分析、詞雲繪制、關鍵詞提取、自然語言處理等領域。

并且容易上手,還支援繁體中文分詞,支援使用者自定義詞。

如果你隻想解決paddlepaddle-tiny==1.6.1的安裝和使用問題,直接點選目錄跳轉。但是如果你是python3.7以上的版本,就不要嘗試了,不支援超過python3.7的版本。

2.簡單上手

1)安裝jieba

pip install jieba
           

2)jieba的常用函數

精确模式:把最有可能組成詞語的詞切開,沒有備援單詞。試圖将句子最精确地切開,适合文本分析。

全模式:把所有可能組成詞語的詞切開,有備援單詞。把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義。

搜尋引擎模式:在精确模式的基礎上,對分詞再次切分,提高召回率,适合用于搜尋引擎分詞。

paddle模式,利用PaddlePaddle深度學習架構,訓練序列标注(雙向GRU)網絡模型實作分詞。同時支援詞性标注。

https://www.paddlepaddle.org.cn/#PaddlePaddle官網 
           

示例

import jieba

jieba.lcut('安徽理工大學的大學生')
#精确模式: ['安徽', '理工大學', '的', '大學生']

jieba.lcut('安徽理工大學的大學生',cut_all=True)
#全模式: ['安徽', '安徽理工', '理工', '理工大', '理工大學', '工大', '大學', '的', '大學', '大學生', '學生']

jieba.lcut_for_search('安徽理工大學的大學生')
#搜尋引擎模式: ['安徽', '理工', '工大', '大學', '理工大', '理工大學', '的', '大學', '學生', '大學生']

# 啟動paddle模式,如果沒有安裝paddle會自動開始安裝。注意!!!你可能無法安裝,解決方法在下面。
#必須是python3.7版本
jieba.enable_paddle()
           

3)解決paddlepaddle-tiny==1.6.1的安裝

藍奏雲:https://wws.lanzous.com/iGtqpn6ebrg
 密碼:9ji7
           

可能不能自動安裝,甚至不可以在pip下載下傳,可以選擇半自動安裝。

python jieba 中文分詞工具包

把上面的檔案拖到(python安裝目錄/Lib/site-packages)下

python jieba 中文分詞工具包

然後

pip install paddle#這個是可以正常下載下傳的
pip install paddlepaddle-tiny==1.6.1
           
python jieba 中文分詞工具包

這個時候就安裝成功了,但是還是不能用下面方法來直接打開paddle模式

jieba.enable_paddle() #現在不可以正常啟動paddle模式
           

原因如下

python jieba 中文分詞工具包

是以我們需要這樣,就可以啟用

paddle.enable_static()
#In PaddlePaddle 2.x, we turn on dynamic graph mode by default, and 'data()' is only supported in static graph mode. So if you want to use this api, please call 'paddle.enable_static()' before this api to enter static graph mode.
jieba.enable_paddle()
           
python jieba 中文分詞工具包

示例繼續

import jieba
import paddle

paddle.enable_static()
jieba.enable_paddle()# 啟動paddle模式

jieba.lcut('安徽理工大學的大學生',use_paddle=True)
           

但是到這裡我還是沒辦法繼續執行下去

我查詢了資料發現,paddle這個模式必須要在python3.7的環境下執行

對于我們普通使用者,使用精确模式即可。

3.jieba背後的“黑科技”算法原理

基于字首詞典實作高效的詞圖掃描,生成句子中所有可能成詞情況所構成的有向無環圖(DAG)。

采用了動态規劃查找最大機率路徑,找出基于詞頻的最大切分組合。

對于未登陸詞,采用了基于漢字成詞能力的HMM模型,使用Viterbi算法。

使用隐馬爾可夫、動态規劃等機率模型,計算字元之間的關聯機率,字元間概論大就認為是一個詞。

可能成詞情況所構成的有向無環圖(DAG)。

采用了動态規劃查找最大機率路徑,找出基于詞頻的最大切分組合。

對于未登陸詞,采用了基于漢字成詞能力的HMM模型,使用Viterbi算法。

使用隐馬爾可夫、動态規劃等機率模型,計算字元之間的關聯機率,字元間概論大就認為是一個詞。

使用者不需要知道背後的算法原理,隻需要會調用接口就可以了。

未完續待…