資源 | Python中文分詞工具大合集

2021-02-27 AI小白入門


跟著博主的腳步,每天進步一點點

這篇文章事實上整合了之前文章的相關介紹,同時添加一些其他的Python中文分詞相關資源,甚至非Python的中文分詞工具,僅供參考。

首先介紹之前測試過的8款中文分詞工具,這幾款工具可以直接在AINLP公眾號後臺在線測試,嚴格的說,它們不完全是純粹的中文分詞工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然語言處理工具。安裝這些模塊其實很簡單,只要按官方文檔的方法安裝即可,以下做個簡單介紹,主要是在Python3.x & Ubuntu16.04 的環境下測試及安裝這些中文分詞器。

再附加介紹12款其他的中文分詞工具或者中文分詞模塊,最後的兩款fnlp和ansj是比較棒的java中文分詞工具,貌似還沒有python接口,記錄一下。這些中文分詞工具我沒有測試,感興趣的同學可以動手試試。

1) Jieba: https://github.com/fxsjy/jieba

「結巴」中文分詞:做最好的 Python 中文分詞組件

"Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module.

特點
支持三種分詞模式:

精確模式,試圖將句子最精確地切開,適合文本分析;
全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
支持繁體分詞

支持自定義詞典

MIT 授權協議

安裝:

代碼對 Python 2/3 均兼容

全自動安裝:easy_install jieba 或者 pip install jieba / pip3 install jieba
半自動安裝:先下載 http://pypi.python.org/pypi/jieba/ ,解壓後運行 python setup.py install
手動安裝:將 jieba 目錄放置於當前目錄或者 site-packages 目錄

中文分詞示例:

2) SnowNLP: https://github.com/isnowfy/snownlp

SnowNLP是一個python寫的類庫,可以方便的處理中文文本內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和TextBlob不同的是,這裡沒有用NLTK,所有的算法都是自己實現的,並且自帶了一些訓練好的字典。注意本程序都是處理的unicode編碼,所以使用時請自行decode成unicode。

Features
中文分詞(Character-Based Generative Model)
詞性標註(TnT 3-gram 隱馬)
情感分析(現在訓練數據主要是買賣東西時的評價,所以對其他的一些可能效果不是很好,待解決)
文本分類(Naive Bayes)
轉換成拼音(Trie樹實現的最大匹配)
繁體轉簡體(Trie樹實現的最大匹配)
提取文本關鍵詞(TextRank算法)
提取文本摘要(TextRank算法)
tf,idf
Tokenization(分割成句子)
文本相似(BM25)
支持python3(感謝erning)

安裝:
$ pip install snownlp

中文分詞示例:

3) PkuSeg: https://github.com/lancopku/pkuseg-python

pkuseg多領域中文分詞工具; The pkuseg toolkit for multi-domain Chinese word segmentation

主要亮點
pkuseg具有如下幾個特點:

多領域分詞。不同於以往的通用中文分詞工具,此工具包同時致力於為不同領域的數據提供個性化的預訓練模型。根據待分詞文本的領域特點,用戶可以自由地選擇不同的模型。我們目前支持了新聞領域,網絡領域,醫藥領域,旅遊領域,以及混合領域的分詞預訓練模型。在使用中,如果用戶明確待分詞的領域,可加載對應的模型進行分詞。如果用戶無法確定具體領域,推薦使用在混合領域上訓練的通用模型。各領域分詞樣例可參考 example.txt。
更高的分詞準確率。相比於其他的分詞工具包,當使用相同的訓練數據和測試數據,pkuseg可以取得更高的分詞準確率。
支持用戶自訓練模型。支持用戶使用全新的標註數據進行訓練。
支持詞性標註。

編譯和安裝
目前僅支持python3
為了獲得好的效果和速度,強烈建議大家通過pip install更新到目前的最新版本
通過PyPI安裝(自帶模型文件):

pip3 install pkuseg
之後通過import pkuseg來引用
建議更新到最新版本以獲得更好的開箱體驗:

pip3 install -U pkuseg

中文分詞示例:

4) THULAC: https://github.com/thunlp/THULAC-Python

THULAC:一個高效的中文詞法分析工具包

THULAC(THU Lexical Analyzer for Chinese)由清華大學自然語言處理與社會人文計算實驗室研製推出的一套中文詞法分析工具包,具有中文分詞和詞性標註功能。THULAC具有如下幾個特點:

能力強。利用我們集成的目前世界上規模最大的人工分詞和詞性標註中文語料庫(約含5800萬字)訓練而成,模型標註能力強大。
準確率高。該工具包在標準數據集Chinese Treebank(CTB5)上分詞的F1值可達97.3%,詞性標註的F1值可達到92.9%,與該數據集上最好方法效果相當。
速度較快。同時進行分詞和詞性標註速度為300KB/s,每秒可處理約15萬字。只進行分詞速度可達到1.3MB/s。
編譯和安裝
python版(兼容python2.x版和python3.x版)
從github下載(需下載模型文件,見獲取模型)

將thulac文件放到目錄下,通過 import thulac 來引用
thulac需要模型的支持,需要將下載的模型放到thulac目錄下。
pip下載(自帶模型文件)

pip install thulac
通過 import thulac 來引用

中文分詞示例:

5) pyhanlp: https://github.com/hankcs/pyhanlp

pyhanlp: Python interfaces for HanLP

自然語言處理工具包HanLP的Python接口, 支持自動下載與升級HanLP,兼容py2、py3。

安裝
pip install pyhanlp

注意pyhanlp安裝之後使用的時候還會自動下載相關的數據文件,zip壓縮文件600多M,速度有點慢,時間有點長

中文分詞示例:


6)FoolNLTK:https://github.com/rockyzhengwu/FoolNLTK

特點
可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞
基於BiLSTM模型訓練而成
包含分詞,詞性標註,實體識別, 都有比較高的準確率
用戶自定義詞典
可訓練自己的模型
批量處理

定製自己的模型
get clone https://github.com/rockyzhengwu/FoolNLTK.git
cd FoolNLTK/train
詳細訓練步驟可參考文檔

僅在linux Python3 環境測試通過

安裝,依賴TensorFlow, 會自動安裝:
pip install foolnltk

中文分詞示例:


7) LTP: https://github.com/HIT-SCIR/ltp

pyltp: https://github.com/HIT-SCIR/pyltp

pyltp 是 語言技術平臺(Language Technology Platform, LTP) 的 Python 封裝。

安裝 pyltp
註:由於新版本增加了新的第三方依賴如dynet等,不再支持 windows 下 python2 環境。
使用 pip 安裝
使用 pip 安裝前,請確保您已安裝了 pip

$ pip install pyltp
接下來,需要下載 LTP 模型文件。

下載地址 - `模型下載 http://ltp.ai/download.html`_
當前模型版本 - 3.4.0
注意在windows下 3.4.0 版本的 語義角色標註模塊 模型需要單獨下載,具體查看下載地址連結中的說明。
請確保下載的模型版本與當前版本的 pyltp 對應,否則會導致程序無法正確加載模型。

從源碼安裝
您也可以選擇從原始碼編譯安裝

$ git clone https://github.com/HIT-SCIR/pyltp
$ git submodule init
$ git submodule update
$ python setup.py install
安裝完畢後,也需要下載相應版本的 LTP 模型文件。

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

中文分詞示例:

8) Stanford CoreNLP: https://stanfordnlp.github.io/CoreNLP/
stanfordcorenlp: https://github.com/Lynten/stanford-corenlp

這裡用的是史丹福大學CoreNLP的python封裝:stanfordcorenlp

stanfordcorenlp is a Python wrapper for Stanford CoreNLP. It provides a simple API for text processing tasks such as Tokenization, Part of Speech Tagging, Named Entity Reconigtion, Constituency Parsing, Dependency Parsing, and more.

安裝很簡單,pip即可:

pip install stanfordcorenlp

但是要使用中文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

前者解壓後把後者也要放進去,否則指定中文的時候會報錯。

中文分詞使用示例:

9) NLPIR: NLPIR大數據語義智能分析平臺
https://github.com/NLPIR-team/NLPIR
Python接口:https://github.com/tsroten/pynlpir

10)DeepNLP: Deep Learning NLP Pipeline implemented on Tensorflow
深度學習中文(分詞)NLP工具
https://github.com/rockingdingo/deepnlp

11) kcws: Deep Learning Chinese Word Segment
深度學習中文分詞
https://github.com/koth/kcws

12) ID-CNN-CWS: Source codes and corpora of paper "Iterated Dilated Convolutions for Chinese Word Segmentation"
基於迭代卷積神經網絡的中文分詞
https://github.com/hankcs/ID-CNN-CWS

13)Genius: a chinese segment base on crf
中文分詞 (Python) Genius是一個開源的python中文分詞組件,採用 CRF(Conditional Random Field)條件隨機場算法。
https://github.com/duanhongyi/genius

14)YaYaNLP:Pure python NLP toolkit
純python編寫的中文自然語言處理包
https://github.com/Tony-Wang/YaYaNLP

15)小明NLP:提供中文分詞, 詞性標註, 拼寫檢查,文本轉拼音,情感分析,文本摘要,偏旁部首
https://github.com/SeanLee97/xmnlp

16)loso: Chinese segmentation library
https://github.com/fangpenlin/loso

17) yaha:"啞哈"中文分詞
更快或更準確,由你來定義。通過簡單定製,讓分詞模塊更適用於你的需求。"Yaha" You can custom your Chinese Word Segmentation efficiently by using Yaha
https://github.com/jannson/yaha

18) ChineseWordSegmentation:無需語料庫的中文分詞
https://github.com/Moonshile/ChineseWordSegmentation

19) fnlp: 中文自然語言處理工具包 Toolkit for Chinese natural language processing
https://github.com/FudanNLP/fnlp
這一款出自復旦NLP組,Java實現,貌似還沒有Python接口。

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

長按二維碼關注
AI小白入門

ID:StudyForAI

學習AI學習ai(愛)

期待與您的相遇~

相關焦點

  • Python中文分詞工具大合集:安裝、使用和測試
    這篇文章事實上整合了之前文章的相關介紹,同時添加一些其他的Python中文分詞相關資源,甚至非Python的中文分詞工具,僅供參考。
  • 中文分詞工具評估:chinese-segmentation-evaluation
    這裡有一個Java開源項目cws_evaluation,對中文分詞做了評比,但有幾點不足:(1). 只有java版本,但是機器學習主要是基於python的 (2).效果指標為行完美率和字完美率,該指標不妥,特別是句子越長,越無意義,(3). 每種分詞工具評測的算法太多了,這裡僅評比了默認的分詞算法。
  • 漢語轉拼音工具、新華字典API——兩個支持Python的中文資源
    【導讀】平常為大家推薦的資源中,以英語語言佔據大多數。今天 AI科技大本營特別要為大家推薦兩個跟中文相關的資源工具。
  • 八款中文詞性標註工具使用及在線測試
    結束了中文分詞工具的安裝、使用及在線測試,開啟中文詞性標註在線測試之旅,一般來說,中文分詞工具大多數都附帶詞性標註功能的,這裡測試了之前在AINLP
  • 中文分詞工具測評
    引言分詞對於研究和應用中文自然語言處理的童鞋來說,都是一個非常非常基礎的部件,分詞的質量直接影響到後續詞性標註、命名實體識別、句法分析等部件的準確性
  • 專欄 中文分詞工具測評
    分詞對於研究和應用中文自然語言處理的童鞋來說,都是一個非常非常基礎的部件,分詞的質量直接影響到後續詞性標註、命名實體識別、句法分析等部件的準確性
  • NLP、KG相關軟體、工具、資源匯總
    在學習和工作中,選擇一套合適的工具、框架能夠事半功倍。這裡收集了NLP、KG領域目前常用的軟體、工具和一些資源,方便大家按照需求選用。ltp(https://github.com/HIT-SCIR/ltp): 由哈工大團隊開源,其提供了一系列中文自然語言處理工具,用戶可以使用這些工具對於中文文本進行分詞、詞性標註、句法分析等等工作
  • 中文分詞文章索引和分詞數據資源分享
    ,除了基於深度學習的分詞方法還沒有探討外,「古典」機器學習時代的中文分詞方法都有涉及,從基於詞典的中文分詞(最大匹配法),到基於統計的分詞方法(HMM、最大熵模型、條件隨機場模型CRF),再到Mecab、NLTK中文分詞,都有所涉及。
  • 【分詞】從why到how的中文分詞詳解,從算法原理到開源工具
    中的"Hey"和"you"是需要與身後的標點分隔開的為什麼需要分詞?能不能不分詞?中文分詞難在哪?從古至今的分詞算法:詞典到預訓練從中到外的分詞工具對於中文來說,如果不進行分詞,那麼神經網絡將直接基於原始的漢字序列進行處理和學習。
  • 【Python環境】python的nltk中文使用和學習資料匯總幫你入門提高
    資料3.4 使用nltk從非結構化數據中抽取信息 http://blog.csdn.net/fxjtoday/article/details/5871386 這篇主要介紹了命名實體識別4.使用nltk來處理中文資料nltk 怎麼樣使用中文?這是個大問題。這麼個工具目前只能比較好的處理英文和其他的一些拉丁語系,誰讓別人的單詞與單詞之間有個空格隔開呢!
  • 常見中文分詞包比較
    2 snownlpSnowNLP是一個python寫的類庫,可以方便地處理中文文本內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和TextBlob不同的是,這裡沒有用NLTK,所有的算法都是自己實現的,並且自帶了一些訓練好的字典
  • 如何用Python做中文分詞?
    你的問題應該是:如何用電腦把中文文本正確拆分為一個個的單詞呢?這種工作,專業術語叫做分詞。在介紹分詞工具及其安裝之前,請確認你已經閱讀過《如何用Python做詞雲》一文,並且按照其中的步驟做了相關的準備工作,然後再繼續依照本文的介紹一步步實踐。分詞中文分詞的工具有很多種。有的免費,有的收費。
  • 自然語言處理工具python調用hanlp中文實體識別
    Hanlp作為一款重要的中文分詞工具,在GitHub的用戶量已經非常之高,應該可以看得出來大家對於hanlp這款分詞工具還是很認可的。本篇繼續分享一篇關於hanlp的使用實例即Python調用hanlp進行中文實體識別。
  • 【NLP】Python NLTK獲取文本語料和詞彙資源
    向AI轉型的程式設計師都關注了這個號👇👇👇大數據挖掘
  • 韋編 | NLTK——面向英文的python自然語言處理工具
    上周給大家介紹了一款面向中文的自然語言處理工具HanLP,今天給大家介紹另一款面向英文的經典的python自然語言處理工具——NLTK。NLTK全稱「Natural Language Toolkit」,知名的python自然語言處理工具,誕生於賓夕法尼亞大學,以研究和教學為目的而生,因此特別適合入門學習。它提供了易於使用的接口,通過這些接口可以訪問的語料庫和詞彙資源超過50個,還有一套用於分類、標記化、詞幹標記、解析和語義推理的文本處理庫,使用起來高效方便。
  • Python自然語言處理實踐: 在NLTK中使用斯坦福中文分詞器
    史丹福大學自然語言處理組是世界知名的NLP研究小組,他們提供了一系列開源的Java文本分析工具,包括分詞器(Word Segmenter),詞性標註工具(Part-Of-Speech Tagger),命名實體識別工具(Named Entity Recognizer),句法分析器(Parser)等,可喜的事,他們還為這些工具訓練了相應的中文模型,支持中文文本處理。
  • 中文文本分析相關資源匯總
    jieba分詞https://github.com/fxsjy/jieba中文分詞庫中文複雜事件的概念與顯式模式https://github.com/thunderhit/eventextraction中文複合事件的概念與顯式模式,包括條件事件、因果事件、順承事件、反轉事件等事件抽取,並形成事理圖譜。
  • 基於百度LAC2.0的詞雲圖生成——各大分詞工具實戰比較
    2.百度LAC2.0介紹根據百度官方消息,LAC全稱Lexical Analysis of Chinese,是百度NLP(自然語言處理部)研發的一款詞法分析工具,可實現中文分詞、詞性標註、專名識別等功能。
  • 一文詳解如何用 python 做中文分詞
    打算繪製中文詞雲圖?那你得先學會如何做中文文本分詞。跟著我們的教程,一步步用 Python 來動手實踐吧。你的問題應該是:如何用電腦把中文文本正確拆分為一個個的單詞呢?這種工作,專業術語叫做分詞。在介紹分詞工具及其安裝之前,請確認你已經閱讀過《從零開始教你用 Python 做詞雲》一文,並且按照其中的步驟做了相關的準備工作,然後再繼續依照本文的介紹一步步實踐。  分詞中文分詞的工具有很多種。
  • 分詞工具哪家強?中文詞法分析工具LAC測評來啦
    By    Charlotte77前言:本文轉載自AINLP,是對百度深度學習中文詞法分析工具的詳細體驗和測評,大家可以對比一下其他的工具分詞效果,文末可以關注AINLP體驗各種不同分詞工具的效果~            關鍵詞