您現在的位置是:首頁 > 棋牌

jieba分詞-強大的Python 中文分詞庫

  • 由 理財投資新理念 發表于 棋牌
  • 2021-10-27
簡介join(seg_list)) # 返回結果 奧利 給 , 管虎 執導 的 八佰是 一部 讓 人 熱血沸騰 的 好 電影新增自定義詞典後,新詞、人名、電影名都可以識別出來#載入詞典 jieba

什麼是倒排索引

1。 jieba的江湖地位

NLP(自然語言)領域現在可謂是群雄紛爭,各種開源元件層出不窮,其中一支不可忽視的力量便是jieba分詞,號稱要做最好的 Python 中文分片語件。

“最好的”這三個字可不是空穴來風,jieba在開源社群的受歡迎程度非常之高。

jieba專案目前的github star數已經達到24k,其他熱門分片語件像HanLP star數20k、ansj_seg star數5。6k、pkuseg-python star數5k。可見jieba已經穩居中文分詞領域c位。

jieba的主要功能是做中文分詞,可以進行簡單分詞、並行分詞、命令列分詞,當然它的功能不限於此,目前還支援關鍵詞提取、詞性標註、詞位置查詢等。

更讓人愉悅的是jieba雖然立足於python,但同樣支援其他語言和平臺,諸如:C++、Go、R、Rust、Node。js、PHP、 iOS、Android等。所以jieba能滿足各類開發者的需求。

2。 如何學jieba

據我所知,jieba最靠譜的文件是github專案的readme,因為它似乎還沒有獨立的使用文件。但由於使用起來簡單,看readme也能快速上手。https://github。com/fxsjy/jieba

國內各大部落格有關於jieba的使用教程,但需要甄別下準確度和時效性,因為jieba專案一直在更新。

當然本文不是純粹的種草文章,會簡單介紹下jieba的使用方法。

3。 安裝jieba

jieba支援

pip

或者

conda

安裝,直接在命令列執行:

pip install jieba

不出意外,應該能很快安裝好。

你也可以下載jieba安裝包再安裝,jieba的pypi地址:http://pypi。python。org/pypi/jieba/4。 分詞初體驗

分詞是NLP處理的第一步,也是最基本的任務,分詞的好壞直接決定了後面語義分析的精準度。

所謂分詞就是將一段表述裡的詞彙進行分解,比如“我愛中國”,分解後有三個詞:我、愛、中國,詞性分別是名詞、動詞、名詞。

jieba庫中用於分詞的方法有三個:

jieba。cut

給定中文字串,分解後返回一個迭代器,需要用for迴圈訪問。

引數解釋:

strs

:需要分詞的字串;

cut_all

:用來控制是否採用全模式;

HMM

:用來控制是否使用 HMM 模型;

use_paddle

:用來控制是否使用paddle模式下的分詞模式,paddle模式採用延遲載入方式,透過enable_paddle介面安裝paddlepaddle-tiny,並且import相關程式碼;

這裡區分全模式和精確模式,舉個例子先看看區別:

#全模式 seg_list = jieba。cut(“中國上海是一座美麗的國際性大都市”, cut_all=True) print(“Full Mode: ” + “/ ”。join(seg_list)) # 返回結果 Full Mode: 中國/ 上海/ 是/ 一座/ 美麗/ 的/ 國際/ 國際性/ 大都/ 大都市/ 都市 # 精確模式 seg_list = jieba。cut(“中國上海是一座美麗的國際性大都市”, cut_all=False) print(“Full Mode: ” + “/ ”。join(seg_list)) # 返回結果 Default Mode: 中國/ 上海/ 是/ 一座/ 美麗/ 的/ 國際性/ 大都市

可以看到,全模式把句子中所有的可以成詞的詞語都掃描出來, 會出現一詞多用、一詞多意。精確模式將句子最精確的切分開,每個詞都只有一種含義。

jieba。cut

方法預設是精確模式。

還有一個引數控制paddle模式,會更加精確,使用這個的前提是你需要先安裝paddlepaddle-tiny。

安裝命令:

pip install paddlepaddle-tiny==1。6。1

詳情可以去官網看下,這裡不舉例。

jieba。cut_for_search

該方法和cut一樣,分解後返回一個迭代器,需要用for迴圈訪問。不過它是搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。

引數解釋:

strs

:需要分詞的字串;

HMM

:是否使用 HMM 模型,預設值為 True。該方法適合用於搜尋引擎構建倒排索引的分詞,粒度比較細。

#搜尋引擎模式 seg_list = jieba。cut_for_search(“中國上海是一座美麗的國際性大都市,擁有復旦大學、上海交通大學等知名高等學府”) print(“, ”。join(seg_list)) # 返回結果 Search Mode: 中國, 上海, 是, 一座, 美麗, 的, 國際, 國際性, 大都, 都市, 大都市, ,, 擁有, 復旦, 大學, 復旦大學, 、, 上海, 交通, 大學, 上海交通大學, 等, 知名, 高等, 學府, 高等學府

jieba。lcut

jieba。cut

使用方法一樣,不過返回的是列表。

cut和cut_for_search方法都是支援繁體字的。

5。 新增自定義詞典

如果是對專業新聞或者小說進行分詞,會有很多的新詞彙,jieba庫裡沒有就沒辦法識別,那麼就需要新增自定義的詞彙,比如:奧利給。

新增自定義詞彙的方法:

jieba。load_userdict(file_name)

引數是文字檔案,txt、csv都可以。

自定義詞典檔案的詞彙格式是一個詞佔一行,每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。比如:

以“奧利給,管虎執導的八佰是一部讓人熱血沸騰的好電影。” 這段話為例,如果不新增自定義詞典,很多詞沒辦法識別出來。

#不新增自定義詞典 seg_list = jieba。cut(“奧利給,管虎執導的八佰是一部讓人熱血沸騰的好電影”) print(“/ ”。join(seg_list)) # 返回結果 奧利/ 給/ ,/ 管虎/ 執導/ 的/ 八佰是/ 一部/ 讓/ 人/ 熱血沸騰/ 的/ 好/ 電影

新增自定義詞典後,新詞、人名、電影名都可以識別出來

#載入詞典 jieba。load_userdict(“dict。txt”) seg_list = jieba。cut(“奧利給,管虎執導的八佰是一部讓人熱血沸騰的好電影”) print(“/ ”。join(seg_list)) # 返回結果 奧利給/ ,/ 管虎/ 執導/ 的/ 八佰/ 是/ 一部/ 讓/ 人/ 熱血沸騰/ 的/ 好/ 電影

6。 結論

jieba無疑是一款優秀的分詞工具,而且在不斷地最佳化成長。前面講了一些基本的使用,大家還可以嘗試使用停用詞、提取關鍵詞、詞性標註、詞位置查詢等功能,也是十分的便捷。

Top