【NLP】jieba分词-Python中文分词领域的佼佼者
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。該方法適合用于搜索引擎構建倒排索引的分詞,粒度比較細。
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無疑是一款優秀的分詞工具,而且在不斷地優化成長。前面講了一些基本的使用,大家還可以嘗試使用停用詞、提取關鍵詞、詞性標注、詞位置查詢等功能,也是十分的便捷。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):總結
以上是生活随笔為你收集整理的【NLP】jieba分词-Python中文分词领域的佼佼者的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超级实用!用Python写股票分析工具
- 下一篇: 【论文解读】这篇顶会paper,讲述了疫