Python:Python 中 jieba 庫的使用(中文分詞)

chnyac發表於2018-05-12

==================================================================

一、說明:

    1、支援三種分詞模式:

             精確模式,試圖將句子最精確地切開,適合文字分析

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

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

    2、支援繁體分詞

    3、支援自定義詞典

    4、MIT 授權協議

-----------------------------------------------------------------------------------------------------------------

二、主功能:

    1、jieba.cut 方法接受三個輸入引數: 

            需要分詞的字串;

            cut_all 引數用來控制是否採用全模式,否則為精確模式;

            HMM 引數用來控制是否使用 HMM 模型。

    2、jieba.cut_for_search 方法接受兩個引數(該方法適合用於搜尋引擎構建倒排索引的分詞,粒度比較細):

            需要分詞的字串;

            是否使用 HMM 模型;

    PS:待分詞的字串可以是 unicode 或 UTF-8 字串、GBK 字串。

            注意:不建議直接輸入 GBK 字串,可能無法預料地錯誤解碼成 UTF-8

            jieba.cut 以及 jieba.cut_for_search 返回的結構都是一個可迭代的 generator;

            或者用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list;

            jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定義分詞器,可用於同時使用不同詞典。

            jieba.dt 為預設分詞器,所有全域性分詞相關函式都是該分詞器的對映。

-----------------------------------------------------------------------------------------------------------------

三、新增自定義字典:

    1、用法: 

            jieba.load_userdict(file_name) # file_name 為檔案類物件或自定義詞典的路徑;

    2、詞典格式:

            和 dict.txt 一樣,一個詞佔一行;

            每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒;

            file_name 若為路徑或二進位制方式開啟的檔案,則檔案必須為 UTF-8 編碼;

            詞頻省略時使用自動計算的能保證分出該詞的詞頻。

-----------------------------------------------------------------------------------------------------------------

四、調整詞典:

    1、使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程式中動態修改詞典;

    2、使用 suggest_freq(segment, tune=True) 可調節單個詞語的詞頻,使其能(或不能)被分出來;

    PS:注意:自動計算的詞頻在使用 HMM 新詞發現功能時可能無效。

-----------------------------------------------------------------------------------------------------------------

五、基於 TF-IDF 演算法的關鍵詞抽取:

    1、匯入:import jieba.analyse

    2、jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

            sentence 為待提取的文字;

            topK 為返回幾個 TF/IDF 權重最大的關鍵詞,預設值為 20;

            withWeight 為是否一併返回關鍵詞權重值,預設值為 False;

            allowPOS 僅包括指定詞性的詞,預設值為空,即不篩選;

    3、jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 例項,idf_path 為 IDF 頻率檔案;

-----------------------------------------------------------------------------------------------------------------

六、基於 TextRank 演算法的關鍵詞抽取

    1、jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) ;

    2、直接使用,介面相同,注意預設過濾詞性;

    3、jieba.analyse.TextRank() 新建自定義 TextRank 例項

-----------------------------------------------------------------------------------------------------------------

未完待續 . . . . . . 

相關文章