首先介紹之前測(cè)試過(guò)的8款中文分詞工具,這幾款工具可以直接在AINLP公眾號(hào)后臺(tái)在線(xiàn)測(cè)試,嚴(yán)格的說(shuō),它們不完全是純粹的中文分詞工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然語(yǔ)言處理工具。安裝這些模塊其實(shí)很簡(jiǎn)單,只要按官方文檔的方法安裝即可,以下做個(gè)簡(jiǎn)單介紹,在Python3.x的環(huán)境下測(cè)試,Ubuntu16.04 或 MacOS 測(cè)試成功。 再附加介紹12款其他的中文分詞工具或者中文分詞模塊,最后的兩款fnlp和ansj是比較棒的java中文分詞工具,貌似還沒(méi)有python接口,記錄一下。這些中文分詞工具我沒(méi)有測(cè)試,感興趣的同學(xué)可以動(dòng)手試試。 1) Jieba: https://github.com/fxsjy/jieba “結(jié)巴”中文分詞:做最好的 Python 中文分詞組件'Jieba' (Chinese for 'to stutter') Chinese text segmentation: built to be the best Python Chinese word segmentation module.特點(diǎn)支持三種分詞模式:精確模式,試圖將句子最精確地切開(kāi),適合文本分析;全模式,把句子中所有的可以成詞的詞語(yǔ)都掃描出來(lái), 速度非???,但是不能解決歧義;搜索引擎模式,在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分,提高召回率,適合用于搜索引擎分詞。支持繁體分詞支持自定義詞典MIT 授權(quán)協(xié)議 安裝: 代碼對(duì) Python 2/3 均兼容 全自動(dòng)安裝:easy_install jieba 或者 pip install jieba / pip3 install jieba 半自動(dòng)安裝:先下載 http://pypi./pypi/jieba/ ,解壓后運(yùn)行 python setup.py install 手動(dòng)安裝:將 jieba 目錄放置于當(dāng)前目錄或者 site-packages 目錄 中文分詞示例: In [6]: import jieba In [7]: seg_list = jieba.cut('我愛(ài)自然語(yǔ)言處理', cut_all=True) In [8]:print('Full Mode: ' ' '.join(seg_list)) # 全模式 Full Mode: 我 愛(ài) 自然 自然語(yǔ)言 語(yǔ)言 處理 In [9]: seg_list = jieba.cut('我愛(ài)自然語(yǔ)言處理', cut_all=False) In [10]: print('Default Mode: ' ' '.join(seg_list)) # 默認(rèn)模式/精確模式 Default Mode: 我 愛(ài) 自然語(yǔ)言 處理 In [11]: seg_list = jieba.cut('我愛(ài)自然語(yǔ)言處理') In [12]: print('Default Mode: ' ' '.join(seg_list)) # 默認(rèn)精確模式 Default Mode: 我 愛(ài) 自然語(yǔ)言 處理 In [13]: seg_list = jieba.cut_for_search('我愛(ài)自然語(yǔ)言處理') # 搜索引擎模式 In [14]: print('Search Mode: ' ' '.join(seg_list)) # 搜索引擎模式Search Mode: 我 愛(ài) 自然 語(yǔ)言 自然語(yǔ)言 處理 2) SnowNLP: https://github.com/isnowfy/snownlp SnowNLP是一個(gè)python寫(xiě)的類(lèi)庫(kù),可以方便的處理中文文本內(nèi)容,是受到了TextBlob的啟發(fā)而寫(xiě)的,由于現(xiàn)在大部分的自然語(yǔ)言處理庫(kù)基本都是針對(duì)英文的,于是寫(xiě)了一個(gè)方便處理中文的類(lèi)庫(kù),并且和TextBlob不同的是,這里沒(méi)有用NLTK,所有的算法都是自己實(shí)現(xiàn)的,并且自帶了一些訓(xùn)練好的字典。注意本程序都是處理的unicode編碼,所以使用時(shí)請(qǐng)自行decode成unicode。Features中文分詞(Character-Based Generative Model)詞性標(biāo)注(TnT 3-gram 隱馬)情感分析(現(xiàn)在訓(xùn)練數(shù)據(jù)主要是買(mǎi)賣(mài)東西時(shí)的評(píng)價(jià),所以對(duì)其他的一些可能效果不是很好,待解決)文本分類(lèi)(Naive Bayes)轉(zhuǎn)換成拼音(Trie樹(shù)實(shí)現(xiàn)的最大匹配)繁體轉(zhuǎn)簡(jiǎn)體(Trie樹(shù)實(shí)現(xiàn)的最大匹配)提取文本關(guān)鍵詞(TextRank算法)提取文本摘要(TextRank算法)tf,idfTokenization(分割成句子)文本相似(BM25)支持python3(感謝erning) 安裝: $ pip install snownlp 中文分詞示例: In [18]: from snownlp import SnowNLP In [19]: s = SnowNLP('我愛(ài)自然語(yǔ)言處理') In [20]:print(' '.join(s.words)) 我 愛(ài) 自然 語(yǔ)言 處理 3) PkuSeg: https://github.com/lancopku/pkuseg-python pkuseg多領(lǐng)域中文分詞工具; The pkuseg toolkit for multi-domain Chinese word segmentation主要亮點(diǎn)pkuseg具有如下幾個(gè)特點(diǎn):多領(lǐng)域分詞。不同于以往的通用中文分詞工具,此工具包同時(shí)致力于為不同領(lǐng)域的數(shù)據(jù)提供個(gè)性化的預(yù)訓(xùn)練模型。根據(jù)待分詞文本的領(lǐng)域特點(diǎn),用戶(hù)可以自由地選擇不同的模型。 我們目前支持了新聞?lì)I(lǐng)域,網(wǎng)絡(luò)領(lǐng)域,醫(yī)藥領(lǐng)域,旅游領(lǐng)域,以及混合領(lǐng)域的分詞預(yù)訓(xùn)練模型。在使用中,如果用戶(hù)明確待分詞的領(lǐng)域,可加載對(duì)應(yīng)的模型進(jìn)行分詞。如果用戶(hù)無(wú)法確定具體領(lǐng)域,推薦使用在混合領(lǐng)域上訓(xùn)練的通用模型。各領(lǐng)域分詞樣例可參考 example.txt。更高的分詞準(zhǔn)確率。相比于其他的分詞工具包,當(dāng)使用相同的訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù),pkuseg可以取得更高的分詞準(zhǔn)確率。支持用戶(hù)自訓(xùn)練模型。支持用戶(hù)使用全新的標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練。支持詞性標(biāo)注。編譯和安裝目前僅支持python3為了獲得好的效果和速度,強(qiáng)烈建議大家通過(guò)pip install更新到目前的最新版本通過(guò)PyPI安裝(自帶模型文件):pip3 install pkuseg之后通過(guò)import pkuseg來(lái)引用建議更新到最新版本以獲得更好的開(kāi)箱體驗(yàn):pip3 install -U pkuseg 中文分詞示例: In [23]: import pkuseg In [24]: pku_seg = pkuseg.pkuseg() In [25]: print(' '.join(pku_seg.cut('我愛(ài)自然語(yǔ)言處理'))) 我 愛(ài) 自然 語(yǔ)言 處理 4) THULAC: https://github.com/thunlp/THULAC-Python THULAC:一個(gè)高效的中文詞法分析工具包THULAC(THU Lexical Analyzer for Chinese)由清華大學(xué)自然語(yǔ)言處理與社會(huì)人文計(jì)算實(shí)驗(yàn)室研制推出的一套中文詞法分析工具包,具有中文分詞和詞性標(biāo)注功能。THULAC具有如下幾個(gè)特點(diǎn):能力強(qiáng)。利用我們集成的目前世界上規(guī)模最大的人工分詞和詞性標(biāo)注中文語(yǔ)料庫(kù)(約含5800萬(wàn)字)訓(xùn)練而成,模型標(biāo)注能力強(qiáng)大。準(zhǔn)確率高。該工具包在標(biāo)準(zhǔn)數(shù)據(jù)集Chinese Treebank(CTB5)上分詞的F1值可達(dá)97.3%,詞性標(biāo)注的F1值可達(dá)到92.9%,與該數(shù)據(jù)集上最好方法效果相當(dāng)。速度較快。同時(shí)進(jìn)行分詞和詞性標(biāo)注速度為300KB/s,每秒可處理約15萬(wàn)字。只進(jìn)行分詞速度可達(dá)到1.3MB/s。編譯和安裝python版(兼容python2.x版和python3.x版)從github下載(需下載模型文件,見(jiàn)獲取模型)將thulac文件放到目錄下,通過(guò) import thulac 來(lái)引用thulac需要模型的支持,需要將下載的模型放到thulac目錄下。pip下載(自帶模型文件)pip install thulac通過(guò) import thulac 來(lái)引用 中文分詞示例: In [31]: import thulac In [32]: thu_lac = thulac.thulac(seg_only=True) Model loaded succeed In [33]: thu_result = thu_lac.cut('我愛(ài)自然語(yǔ)言處理', text=True) In [34]:print(thu_result) 我 愛(ài) 自然 語(yǔ)言 處理 5) pyhanlp: https://github.com/hankcs/pyhanlp pyhanlp: Python interfaces for HanLP 自然語(yǔ)言處理工具包HanLP的Python接口, 支持自動(dòng)下載與升級(jí)HanLP,兼容py2、py3。 安裝 pip install pyhanlp 注意pyhanlp安裝之后使用的時(shí)候還會(huì)自動(dòng)下載相關(guān)的數(shù)據(jù)文件,zip壓縮文件600多M,速度有點(diǎn)慢,時(shí)間有點(diǎn)長(zhǎng) 中文分詞示例: In [36]: from pyhanlp import HanLP In [37]: han_word_seg = HanLP.segment('我愛(ài)自然語(yǔ)言處理') In [38]: print(' '.join([term.word for term in han_word_seg])) 我 愛(ài) 自然語(yǔ)言處理 6)FoolNLTK:https://github.com/rockyzhengwu/FoolNLTK 特點(diǎn)可能不是最快的開(kāi)源中文分詞,但很可能是最準(zhǔn)的開(kāi)源中文分詞基于BiLSTM模型訓(xùn)練而成包含分詞,詞性標(biāo)注,實(shí)體識(shí)別, 都有比較高的準(zhǔn)確率用戶(hù)自定義詞典可訓(xùn)練自己的模型批量處理定制自己的模型get clone https://github.com/rockyzhengwu/FoolNLTK.gitcd FoolNLTK/train詳細(xì)訓(xùn)練步驟可參考文檔 僅在linux Python3 環(huán)境測(cè)試通過(guò) 安裝,依賴(lài)TensorFlow, 會(huì)自動(dòng)安裝: pip install foolnltk 中文分詞示例: In [1]: import fool In [2]: text = '我愛(ài)自然語(yǔ)言處理' In [3]: print(fool.cut(text)) [['我', '愛(ài)', '自然', '語(yǔ)言', '處理']] In [4]: print(' '.join(fool.cut(text)[0])) 我 愛(ài) 自然 語(yǔ)言 處理 7) LTP: https://github.com/HIT-SCIR/ltp pyltp: https://github.com/HIT-SCIR/pyltp pyltp 是 語(yǔ)言技術(shù)平臺(tái)(Language Technology Platform, LTP) 的 Python 封裝。 安裝 pyltp注:由于新版本增加了新的第三方依賴(lài)如dynet等,不再支持 windows 下 python2 環(huán)境。使用 pip 安裝使用 pip 安裝前,請(qǐng)確保您已安裝了 pip$ pip install pyltp接下來(lái),需要下載 LTP 模型文件。下載地址 - `模型下載 http:///download.html`_當(dāng)前模型版本 - 3.4.0注意在windows下 3.4.0 版本的 語(yǔ)義角色標(biāo)注模塊 模型需要單獨(dú)下載,具體查看下載地址鏈接中的說(shuō)明。請(qǐng)確保下載的模型版本與當(dāng)前版本的 pyltp 對(duì)應(yīng),否則會(huì)導(dǎo)致程序無(wú)法正確加載模型。從源碼安裝您也可以選擇從源代碼編譯安裝$ git clone https://github.com/HIT-SCIR/pyltp$ git submodule init$ git submodule update$ python setup.py install安裝完畢后,也需要下載相應(yīng)版本的 LTP 模型文件。 這里使用'pip install pyltp'安裝,安裝完畢后在LTP模型頁(yè)面下載模型數(shù)據(jù):http:///download.html,我下載的是 ltp_data_v3.4.0.zip ,壓縮文件有600多M,解壓后1.2G,里面有不同NLP任務(wù)的模型。 中文分詞示例: In [5]: from pyltp import Segmentor In [6]: segmentor = Segmentor() # 分詞模型路徑,依據(jù)你下載后放得位置而定 In [7]: segmentor.load('./data/ltp/ltp_data_v3.4.0/cws.model') In [8]: print(' '.join(segmentor.segment('我愛(ài)自然語(yǔ)言處理'))) 我 愛(ài) 自然 語(yǔ)言 處理 8) Stanford CoreNLP: https://stanfordnlp./CoreNLP/ stanfordcorenlp: https://github.com/Lynten/stanford-corenlp 這里用的是斯坦福大學(xué)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. 安裝很簡(jiǎn)單,pip即可: pip install stanfordcorenlp 但是要使用中文NLP模塊需要下載兩個(gè)包,在CoreNLP的下載頁(yè)面下載模型數(shù)據(jù)及jar文件,目前官方是3.9.1版本: https://nlp./software/corenlp-backup-download.html 第一個(gè)是:stanford-corenlp-full-2018-02-27.zip 第二個(gè)是:stanford-chinese-corenlp-2018-02-27-models.jar 前者解壓后把后者也要放進(jìn)去,否則指定中文的時(shí)候會(huì)報(bào)錯(cuò)。 中文分詞使用示例: In [11]: from stanfordcorenlp import StanfordCoreNLP In [12]: stanford_nlp = StanfordCoreNLP('./data/corenlp/stanford-corenlp-full-201 ...: 8-02-27', lang='zh') In [13]: seg_results = stanford_nlp.word_tokenize('我愛(ài)自然語(yǔ)言處理') In [14]: print(' '.join(seg_results)) 我愛(ài) 自然 語(yǔ)言 處理 9) NLPIR: NLPIR大數(shù)據(jù)語(yǔ)義智能分析平臺(tái) https://github.com/NLPIR-team/NLPIR Python接口:https://github.com/tsroten/pynlpir 10)DeepNLP: Deep Learning NLP Pipeline implemented on Tensorflow 深度學(xué)習(xí)中文(分詞)NLP工具 https://github.com/rockingdingo/deepnlp 11) kcws: Deep Learning Chinese Word Segment 深度學(xué)習(xí)中文分詞 https://github.com/koth/kcws 12) ID-CNN-CWS: Source codes and corpora of paper 'Iterated Dilated Convolutions for Chinese Word Segmentation' 基于迭代卷積神經(jīng)網(wǎng)絡(luò)的中文分詞 https://github.com/hankcs/ID-CNN-CWS 13)Genius: a chinese segment base on crf 中文分詞 (Python) Genius是一個(gè)開(kāi)源的python中文分詞組件,采用 CRF(Conditional Random Field)條件隨機(jī)場(chǎng)算法。 https://github.com/duanhongyi/genius 14)YaYaNLP:Pure python NLP toolkit 純python編寫(xiě)的中文自然語(yǔ)言處理包 https://github.com/Tony-Wang/YaYaNLP 15)小明NLP:提供中文分詞, 詞性標(biāo)注, 拼寫(xiě)檢查,文本轉(zhuǎn)拼音,情感分析,文本摘要,偏旁部首 https://github.com/SeanLee97/xmnlp 16)loso: Chinese segmentation library https://github.com/fangpenlin/loso 17) yaha:'啞哈'中文分詞 更快或更準(zhǔn)確,由你來(lái)定義。通過(guò)簡(jiǎn)單定制,讓分詞模塊更適用于你的需求。 'Yaha' You can custom your Chinese Word Segmentation efficiently by using Yaha https://github.com/jannson/yaha 18) ChineseWordSegmentation:無(wú)需語(yǔ)料庫(kù)的中文分詞 https://github.com/Moonshile/ChineseWordSegmentation 19) fnlp: 中文自然語(yǔ)言處理工具包 Toolkit for Chinese natural language processing https://github.com/FudanNLP/fnlp 這一款出自復(fù)旦NLP組,Java實(shí)現(xiàn),貌似還沒(méi)有Python接口。 20)ansj分詞 ict的真正java實(shí)現(xiàn).分詞效果速度都超過(guò)開(kāi)源版的ict. 中文分詞,人名識(shí)別,詞性標(biāo)注,用戶(hù)自定義詞典 這一款也是一個(gè)很棒的中文分詞工具,不過(guò)貌似也沒(méi)有很好的Python接口。 |
|