跟著博主的腳步,每天進步一點點
這篇文章事實上整合了之前文章的相關介紹,同時添加一些其他的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(愛)
期待與您的相遇~