各位學python的朋友,是否也曾遇到過這樣的問題,舉個例子如下:
“I am proud of my motherland”
如果我們需要提取中間的單詞要走如何做?
自然是調用string中的split()函數即可
那么將這轉換成中文呢,“我為我的祖國感到驕傲”再分詞會怎樣?
中國詞匯並不像是英文文本那樣可以通過空格又或是標點符號來區分,
這將會導致比如“驕傲”拆開成“驕”、“傲”,又或者將“為”“我的”組合成“為我的”等等
那如何避免這些問題呢? 這就用到了今天介紹的python基礎庫——jieba庫
一、什么是jieba庫?
jieba庫是優秀的中文分詞第三方庫 ,它可以利用一個中文詞庫,確定漢字之間的關聯概率,
將漢字間概率大的組成詞組,形成分詞結果,將中文文本通過分詞獲得單個的詞語。
jieba分詞的三種模式 :精確模式、全模式、搜索引擎模式
- 精確模式:把文本精確的切分開,不存在冗余單詞
- 全模式:把文本中所有可能的詞語都掃描出來,有冗余
- 搜索引擎模式:在精確模式基礎上,對長詞再次切分
二、安裝jieba庫
安裝jieba庫還是比較簡單的,我介紹幾種簡單的方法
1.全自動安裝
打開cmd命令提示符然后輸入代碼
easy_install jieba
pip install jieba
pip3 install jieba
三段代碼任意一個即可自動下載安裝
2.半自動安裝
首先打開jieba庫網站:http://pypi.python.org/pypi/jieba/
然后下載並運行python setup.py install
最后將 jieba 目錄放置於當前目錄或者 site-packages 目錄
3.軟件安裝
許多編輯軟件都可以在軟件內部安裝,以pycharm2019為例子
首先打開pycharm,在左上角文件中可以找到設置,然后打開設置
右側項目相關可以找到 project interpreter,進入可以查看項目引用的模塊
點擊右側的加號,在available packages 中搜索jieba 選中后點擊左下角安裝即可
4.檢測安裝
打開命令提示符(cmd)進入python環境
輸入import jieba 如下圖所示即為安裝成功
三、主要函數
jieba.cut(s)
被運用於精確模式,將會返回一個可迭代的數據類型
jieba.cut(s,cut_all=True)
被運用於全模式,輸出文本s中的所有可能單詞
jieba.cut_for_search(s)
搜索引擎模式,適合搜索引擎建立索引的分詞結果
jieba.lcut(s)
被運用於精確模式,將會返回一個列表類型
jieba.lcut(s,cut_all=True)
被運用於全模式,返回一個列表類型
jieba.lcut_for_search(s)
搜索引擎模式,返回一個列表類型
jieba.add_word(w)
向分詞詞典加入新詞
相信不少同學已經看得有點蒙,那么接下來我將通過代碼來實際對比不同點
首先我們對比三個不同的模式 ,之前的介紹可以看出:
精確模式將不會出現冗余,所有詞匯都是根據最大可能性而進行組合的出結果
全模式與精確模式最大區別在於,全模式將會把所有可能拼接的詞匯全部展現
搜索引擎模式則是在精確模式的前提下對較長詞匯進行再一次分割
我們以“我因自己是中華人民共和國的一份子而感到驕傲”為例
*精確模式結果如下 :
['我', '因', '自己', '是', '中華人民共和國', '的', '一份', '子', '而', '感到', '驕傲']
*全模式結果如下:
['我', '因', '自己', '是', '中華', '中華人民', '中華人民共和國', '華人', '人民', '人民共和國', '共和', '共和國', '的', '一份', '份子', '而', '感到', '驕傲']
*搜索引擎模式結果如下:
['我', '因', '自己', '是', '中華', '華人', '人民', '共和', '共和國', '中華人民共和國', '的', '一份', '子', '而', '感到', '驕傲']
可以很明顯的對比出來,全模式將所有課能出現的詞匯進行羅列,而搜索引擎模式與精確模式十分相似,但對“中華人名共和國“”這一詞匯進行分詞
至於有的同學發現有些函數十分相似,比如說cut()與lcut()
兩者之間其實差距不大,主要不同在於返回類型,加“l”的一般返回為列表類型。
如果覺得有所幫助,還望各位大佬點贊支持謝謝