最近玩公眾號會話停不下來:玩轉騰訊詞向量:Game of Words(詞語的加減遊戲),準備把NLP相關的模塊搬到線上,準確的說,搬到AINLP公眾號後台對話,所以,趁著勞動節假期,給AINLP公眾號後台聊天機器人添加了一項新技能:中文分詞線上PK,例如在AINLP公眾號後台對話輸入:中文分詞 我愛自然語言處理,就可以得到五款分詞工具的分詞結果:
現在的開源中文分詞工具或者模塊已經很豐富了,並且很多都有一些在封閉測試集上的效果對比數據,不過這僅僅只能展現這些分詞工具在這個封閉測試集上的效果,並不能全面說明問題,個人覺得,選擇一個適合自己業務的分詞器可能更重要,有的時候,還需要加一些私人定製的詞庫。這次首先選了5款中文分詞工具,嚴格的來說,它們不完全是純粹的中文分詞工具,例如SnowNLP, Thulac, HanLP都是很全面的中文自然語言處理工具,這次,先試水它們的中文分詞模塊。安裝這些模塊其實很簡單,只要按官方文檔的方法安裝即可,以下做個簡單介紹,在Python3.x的環境下測試,Ubuntu16.04 或 MacOS 測試成功。
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/ji eba/ ,解壓後運行 python setup.py install手動安裝:將 jieba 目錄放置於當前目錄或者 site-packages 目錄中文分詞示例:
2) SnowNLP: https:// github.com/isnowfy/snow nlp
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/pku seg-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/THULA C-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/pyhan lp pyhanlp: Python interfaces for HanLP自然語言處理工具包HanLP的Python介面, 支持自動下載與升級HanLP,兼容py2、py3。安裝pip install pyhanlp
注意pyhanlp安裝之後使用的時候還會自動下載相關的數據文件,zip壓縮文件600多M,速度有點慢,時間有點長
中文分詞示例:
現在,可以拿起你的手機,對著AINLP公眾號後台輸入:中文分詞 需要分詞的內容,或者可以用語音輸入:來,試試語音(識別)聊天(機器人)
推薦閱讀: