Python中文分詞工具大合集:安裝、使用和測試 - 古詩詞庫

文章推薦指數: 80 %
投票人數:10人

再附加介紹12款其他的中文分詞工具或者中文分詞模組,最後的兩款fnlp和ansj是比較棒的java中文分詞工具,貌似還沒有python介面,記錄一下。

這些中文分詞 ... MdEditor Python中文分詞工具大合集:安裝、使用和測試 語言:CN/TW/HK 時間 2019-05-1120:37:52 我愛自然語言處理 主題: 中文分詞 Python 這篇文章事實上整合了前面兩篇文章的相關介紹,同時新增一些其他的Python中文分詞相關資源,甚至非Python的中文分詞工具,僅供參考。

首先介紹之前測試過的8款中文分詞工具,這幾款工具可以直接在AINLP公眾號後臺線上測試,嚴格的說,它們不完全是純粹的中文分詞工具,例如SnowNLP,Thulac,HanLP,LTP,CoreNLP都是很全面的(中文)自然語言處理工具。

安裝這些模組其實很簡單,只要按官方文件的方法安裝即可,以下做個簡單介紹,在Python3.x的環境下測試,Ubuntu16.04或MacOS測試成功。

再附加介紹12款其他的中文分詞工具或者中文分詞模組,最後的兩款fnlp和ansj是比較棒的java中文分詞工具,貌似還沒有python介面,記錄一下。

這些中文分詞工具我沒有測試,感興趣的同學可以動手試試。

1)Jieba:https://github.com/fxsjy/jieba “結巴”中文分詞:做最好的Python中文分片語件 "Jieba"(Chinesefor"tostutter")Chinesetextsegmentation:builttobethebestPythonChinesewordsegmentationmodule. 特點 支援三種分詞模式: 精確模式,試圖將句子最精確地切開,適合文字分析; 全模式,把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義; 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。

支援繁體分詞 支援自定義詞典 MIT授權協議 安裝: 程式碼對Python2/3均相容 全自動安裝:easy_installjieba或者pipinstalljieba/pip3installjieba 半自動安裝:先下載http://pypi.python.org/pypi/jieba/,解壓後執行pythonsetup.pyinstall 手動安裝:將jieba目錄放置於當前目錄或者site-packages目錄 中文分詞示例: In[6]:importjieba In[7]:seg_list=jieba.cut("我愛自然語言處理",cut_all=True) In[8]:print("FullMode:"+"".join(seg_list))#全模式 FullMode:我愛自然自然語言語言處理 In[9]:seg_list=jieba.cut("我愛自然語言處理",cut_all=False) In[10]:print("DefaultMode:"+"".join(seg_list))#預設模式/精確模式 DefaultMode:我愛自然語言處理 In[11]:seg_list=jieba.cut("我愛自然語言處理") In[12]:print("DefaultMode:"+"".join(seg_list))#預設精確模式 DefaultMode:我愛自然語言處理 In[13]:seg_list=jieba.cut_for_search("我愛自然語言處理")#搜尋引擎模式 In[14]:print("SearchMode:"+"".join(seg_list))#搜尋引擎模式 SearchMode:我愛自然語言自然語言處理 2)SnowNLP:https://github.com/isnowfy/snownlp SnowNLP是一個python寫的類庫,可以方便的處理中文文字內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和TextBlob不同的是,這裡沒有用NLTK,所有的演算法都是自己實現的,並且自帶了一些訓練好的字典。

注意本程式都是處理的unicode編碼,所以使用時請自行decode成unicode。

Features中文分詞(Character-BasedGenerativeModel)詞性標註(TnT3-gram隱馬)情感分析(現在訓練資料主要是買賣東西時的評價,所以對其他的一些可能效果不是很好,待解決)文字分類(NaiveBayes)轉換成拼音(Trie樹實現的最大匹配)繁體轉簡體(Trie樹實現的最大匹配)提取文字關鍵詞(TextRank演算法)提取文字摘要(TextRank演算法)tf,idfTokenization(分割成句子)文字相似(BM25)支援python3(感謝erning) 安裝: $pipinstallsnownlp 中文分詞示例: In[18]:fromsnownlpimportSnowNLP In[19]:s=SnowNLP("我愛自然語言處理") In[20]:print(''.join(s.words)) 我愛自然語言處理 3)PkuSeg:https://github.com/lancopku/pkuseg-python pkuseg多領域中文分詞工具;Thepkusegtoolkitformulti-domainChinesewordsegmentation 主要亮點 pkuseg具有如下幾個特點: 多領域分詞。

不同於以往的通用中文分詞工具,此工具包同時致力於為不同領域的資料提供個性化的預訓練模型。

根據待分詞文字的領域特點,使用者可以自由地選擇不同的模型。

我們目前支援了新聞領域,網路領域,醫藥領域,旅遊領域,以及混合領域的分詞預訓練模型。

在使用中,如果使用者明確待分詞的領域,可載入對應的模型進行分詞。

如果使用者無法確定具體領域,推薦使用在混合領域上訓練的通用模型。

各領域分詞樣例可參考example.txt。

更高的分詞準確率。

相比於其他的分詞工具包,當使用相同的訓練資料和測試資料,pkuseg可以取得更高的分詞準確率。

支援使用者自訓練模型。

支援使用者使用全新的標註資料進行訓練。

支援詞性標註。

編譯和安裝 目前僅支援python3 為了獲得好的效果和速度,強烈建議大家通過pipinstall更新到目前的最新版本 通過PyPI安裝(自帶模型檔案): pip3installpkuseg 之後通過importpkuseg來引用 建議更新到最新版本以獲得更好的開箱體驗: pip3install-Upkuseg 中文分詞示例: In[23]:importpkuseg In[24]:pku_seg=pkuseg.pkuseg() In[25]:print(''.join(pku_seg.cut('我愛自然語言處理'))) 我愛自然語言處理 4)THULAC:https://github.com/thunlp/THULAC-Python THULAC:一個高效的中文詞法分析工具包 THULAC(THULexicalAnalyzerforChinese)由清華大學自然語言處理與社會人文計算實驗室研製推出的一套中文詞法分析工具包,具有中文分詞和詞性標註功能。

THULAC具有如下幾個特點: 能力強。

利用我們整合的目前世界上規模最大的人工分詞和詞性標註中文語料庫(約含5800萬字)訓練而成,模型標註能力強大。

準確率高。

該工具包在標準資料集ChineseTreebank(CTB5)上分詞的F1值可達97.3%,詞性標註的F1值可達到92.9%,與該資料集上最好方法效果相當。

速度較快。

同時進行分詞和詞性標註速度為300KB/s,每秒可處理約15萬字。

只進行分詞速度可達到1.3MB/s。

編譯和安裝 python版(相容python2.x版和python3.x版) 從github下載(需下載模型檔案,見獲取模型) 將thulac檔案放到目錄下,通過importthulac來引用 thulac需要模型的支援,需要將下載的模型放到thulac目錄下。

pip下載(自帶模型檔案) pipinstallthulac 通過importthulac來引用 中文分詞示例: In[31]:importthulac In[32]:thu_lac=thulac.thulac(seg_only=True) Modelloadedsucceed In[33]:thu_result=thu_lac.cut("我愛自然語言處理",text=True) In[34]:print(thu_result) 我愛自然語言處理 5)pyhanlp:https://github.com/hankcs/pyhanlp pyhanlp:PythoninterfacesforHanLP 自然語言處理工具包HanLP的Python介面,支援自動下載與升級HanLP,相容py2、py3。

安裝 pipinstallpyhanlp 注意pyhanlp安裝之後使用的時候還會自動下載相關的資料檔案,zip壓縮檔案600多M,速度有點慢,時間有點長 中文分詞示例: In[36]:frompyhanlpimportHanLP In[37]:han_word_seg=HanLP.segment('我愛自然語言處理') In[38]:print(''.join([term.wordforterminhan_word_seg])) 我愛自然語言處理 6)FoolNLTK:https://github.com/rockyzhengwu/FoolNLTK 特點 可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞 基於BiLSTM模型訓練而成 包含分詞,詞性標註,實體識別,都有比較高的準確率 使用者自定義詞典 可訓練自己的模型 批量處理 定製自己的模型 getclonehttps://github.com/rockyzhengwu/FoolNLTK.git cdFoolNLTK/train 詳細訓練步驟可參考文件 僅在linuxPython3環境測試通過 安裝,依賴TensorFlow,會自動安裝: pipinstallfoolnltk 中文分詞示例: In[1]:importfool In[2]:text="我愛自然語言處理" In[3]:print(fool.cut(text)) [['我','愛','自然','語言','處理']] In[4]:print(''.join(fool.cut(text)[0])) 我愛自然語言處理 7)LTP:https://github.com/HIT-SCIR/ltp pyltp:https://github.com/HIT-SCIR/pyltp pyltp是語言技術平臺(LanguageTechnologyPlatform,LTP)的Python封裝。

安裝pyltp 注:由於新版本增加了新的第三方依賴如dynet等,不再支援windows下python2環境。

使用pip安裝 使用pip安裝前,請確保您已安裝了pip $pipinstallpyltp 接下來,需要下載LTP模型檔案。

下載地址-`模型下載http://ltp.ai/download.html`_ 當前模型版本-3.4.0 注意在windows下3.4.0版本的語義角色標註模組模型需要單獨下載,具體檢視下載地址連結中的說明。

請確保下載的模型版本與當前版本的pyltp對應,否則會導致程式無法正確載入模型。

從原始碼安裝 您也可以選擇從原始碼編譯安裝 $gitclonehttps://github.com/HIT-SCIR/pyltp $gitsubmoduleinit $gitsubmoduleupdate $pythonsetup.pyinstall 安裝完畢後,也需要下載相應版本的LTP模型檔案。

這裡使用"pipinstallpyltp"安裝,安裝完畢後在LTP模型頁面下載模型資料:http://ltp.ai/download.html,我下載的是ltp_data_v3.4.0.zip,壓縮檔案有600多M,解壓後1.2G,裡面有不同NLP任務的模型。

中文分詞示例: In[5]:frompyltpimportSegmentor In[6]:segmentor=Segmentor() #分詞模型路徑,依據你下載後放得位置而定 In[7]:segmentor.load('./data/ltp/ltp_data_v3.4.0/cws.model') In[8]:print(''.join(segmentor.segment('我愛自然語言處理'))) 我愛自然語言處理 8)StanfordCoreNLP:https://stanfordnlp.github.io/CoreNLP/ stanfordcorenlp:https://github.com/Lynten/stanford-corenlp 這裡用的是斯坦福大學CoreNLP的python封裝:stanfordcorenlp stanfordcorenlpisaPythonwrapperforStanfordCoreNLP.ItprovidesasimpleAPIfortextprocessingtaskssuchasTokenization,PartofSpeechTagging,NamedEntityReconigtion,ConstituencyParsing,DependencyParsing,andmore. 安裝很簡單,pip即可: pipinstallstanfordcorenlp 但是要使用中文NLP模組需要下載兩個包,在CoreNLP的下載頁面下載模型資料及jar檔案,目前官方是3.9.1版本: https://nlp.stanford.edu/software/corenlp-backup-download.html 第一個是:stanford-corenlp-full-2018-02-27.zip 第二個是:stanford-chinese-corenlp-2018-02-27-models.jar 前者解壓後把後者也要放進去,否則指定中文的時候會報錯。

中文分詞使用示例: In[11]:fromstanfordcorenlpimportStanfordCoreNLP In[12]:stanford_nlp=StanfordCoreNLP('./data/corenlp/stanford-corenlp-full-201 ...:8-02-27',lang='zh') In[13]:seg_results=stanford_nlp.word_tokenize('我愛自然語言處理') In[14]:print(''.join(seg_results)) 我愛自然語言處理 9)NLPIR:NLPIR大資料語義智慧分析平臺 https://github.com/NLPIR-team/NLPIR Python介面:https://github.com/tsroten/pynlpir 10)DeepNLP:DeepLearningNLPPipelineimplementedonTensorflow 深度學習中文(分詞)NLP工具 https://github.com/rockingdingo/deepnlp 11)kcws:DeepLearningChineseWordSegment 深度學習中文分詞 https://github.com/koth/kcws 12)ID-CNN-CWS:Sourcecodesandcorporaofpaper"IteratedDilatedConvolutionsforChineseWordSegmentation" 基於迭代卷積神經網路的中文分詞 https://github.com/hankcs/ID-CNN-CWS 13)Genius:achinesesegmentbaseoncrf 中文分詞(Python)Genius是一個開源的python中文分片語件,採用CRF(ConditionalRandomField)條件隨機場演算法。

https://github.com/duanhongyi/genius 14)YaYaNLP:PurepythonNLPtoolkit 純python編寫的中文自然語言處理包 https://github.com/Tony-Wang/YaYaNLP 15)小明NLP:提供中文分詞,詞性標註,拼寫檢查,文字轉拼音,情感分析,文字摘要,偏旁部首 https://github.com/SeanLee97/xmnlp 16)loso:Chinesesegmentationlibrary https://github.com/fangpenlin/loso 17)yaha:"啞哈"中文分詞 更快或更準確,由你來定義。

通過簡單定製,讓分詞模組更適用於你的需求。

"Yaha"YoucancustomyourChineseWordSegmentationefficientlybyusingYaha https://github.com/jannson/yaha 18)ChineseWordSegmentation:無需語料庫的中文分詞 https://github.com/Moonshile/ChineseWordSegmentation 19)fnlp:中文自然語言處理工具包ToolkitforChinesenaturallanguageprocessing https://github.com/FudanNLP/fnlp 這一款出自復旦NLP組,Java實現,貌似還沒有Python介面。

20)ansj分詞 ict的真正java實現.分詞效果速度都超過開源版的ict.中文分詞,人名識別,詞性標註,使用者自定義詞典 這一款也是一個很棒的中文分詞工具,不過貌似也沒有很好的Python介面。

參考: 五款中文分詞工具線上PK:Jieba,SnowNLP,PkuSeg,THULAC,HanLP 中文分詞工具線上PK新增:FoolNLTK、HITLTP、StanfordCoreNLP 注:原創文章,轉載請註明出處及保留連結“我愛自然語言處理”:http://www.52nlp.cn 本文連結地址:Python中文分詞工具大合集:安裝、使用和測試http://www.52nlp.cn/?p=11789 「其他文章」 文言文白話文互轉:文言文轉白話文(現代文),白話文(現代文)轉文言文 簡單高效!浙大CAD&騰訊&哥大開源跨尺度的Transformer,顯著漲點檢測、分割、分類三大CV任務! 教師節,“寫”一首藏頭詩或者藏尾詩給恩師 自動作文生成器:來試試用預訓練模型自動寫中文作文 自然語言處理開源工具介紹系列一:英文NLP工具NLTK詳解及線上測試 文言文自動生成器:來試試自動寫古文 圖模型句法分析第一講:隨機遊走之拒絕取樣 GraphLearning第一講 千字濃縮精華:把RNN、RNN變體、Seq2Seq、Attention機制聊透一點 北京捷通華聲招聘 近期AI領域招聘、招生資訊彙總 百度LAC2.0極速體驗,這是一個值得擁有的中文詞法分析工具 相似詞檢索,近義詞查詢,同義詞大全,這裡不僅僅可查中文 藏頭詩生成器有了,藏尾詩生成器還會遠嗎? 中文命名實體識別工具(NER)哪家強? 一鍵收藏自然語言處理學習資源大禮包 Springer面向公眾開放正版電子書籍,附65本數學、程式設計、資料探勘、資料科學、資料分析、機器學習、深度學... ❤️EmotionalFristAidDataset,心理諮詢問答語料庫 斯坦福大學NLP組Python深度學習自然語言處理工具Stanza試用 李巨集毅老師2020新課深度學習與人類語言處理正式開放上線 「中文分詞」 ElasticSearch7.3學習(二十二)----Text欄位排序、Scroll分批查詢場景解析 架構治理調研:規則、表示式還有語言 SpringBootElasticsearch7.6實現簡單查詢及高亮分詞查詢 Elasticsearch基礎入門詳文 『開發技術』Python中文分詞工具SnowNLP教程 【搜尋系列】ES查詢常用例項演示 乾貨|Elasticsearch檢索型別選型指南 ElasticSearch設定某個欄位不分詞 十行Python程式碼能做出哪些酷炫的事情? elasticsearch高亮之highlight原理 「Python」 leetcode1584.MinCosttoConnectAllPoints(python) 超簡單!Python為圖片和PDF上去掉水印 6個值得玩味的Python程式碼 資料視覺化之美--以Matlab、Python為工具 Python辦公自動化十大場景,你都知道嗎? 再見for迴圈!速度提升315倍! 虛擬網絡卡效能測試指南 leetcode318.MaximumProductofWordLengths(python) python滲透測試入門之ip解碼器 用Python來做一個螢幕錄製工具



請為這篇文章評分?