自然語言處理工具pyhanlp分詞與詞性標註
Pyhanlp分詞與詞性標註的相關內容記得此前是有分享過的。可能時間太久記不太清楚了。以下文章是分享自“baiziyu”所寫(小部分內容有修改),供大家學習參考之用。
簡介
pyhanlp是HanLP的Python介面。因此後續所有關於pyhanlp的文章中也會寫成HanLP。HanLP是完全用Java自實現的自然語言處理工具包。特點是完全用Java實現不引入第三方工具包。完全開源。中文的開源工具能做到這麼完整的大概只有HanLP。包括了詞法分析、句法分析、分類、聚類、關鍵詞抽取等常見NLP應用任務。並且github上問題回答快,作者很是認真的解決大家提出的問題。雖然用Java實現,HanLP也提供了Python介面。
簡單的安裝過程,請先確保安裝了anaconda3
# 安裝命令
$ pip install pyhanlp
# 更新到最新程式碼包和資料包
$ hanlp update
分詞與詞性標註
示例
In [1]: from pyhanlp import *
In [5]: print(HanLP.segment("你好,歡迎使用HanLP漢語處理包!接下來請從其他Demo中
...: 體驗HanLP豐富的功能~"))
[你好/vl, ,/w, 歡迎/v, 使用/v, HanLP/nx, 漢語/gi, 處理/vn, 包/v, !/w, 接下來/vl, 請/v, 從/p, 其他/rzv, Demo/nx, 中/f, 體驗/v, HanLP/nx, 豐富/a, 的/ude1, 功能/n, ~/nx]
In [11]: for word in word_li:
...: print(word.word, word.nature)
...:
你好 vl
, w
歡迎 v
使用 v
HanLP nx
漢語 gi
處理 vn
包 v
! w
接下來 vl
請 v
從 p
其他 rzv
Demo nx
中 f
體驗 v
HanLP nx
豐富 a
的 ude1
功能 n
~ nx
關於HanLP.segment的說明。記憶體要求:120MB以上,標準資料包(35萬核心詞庫+預設使用者詞典)。HanLP對詞典的資料結構進行了長期的優化,哪怕HanLP的詞典上百兆也無需擔心。HanLP.segment是一個工廠函式,它是對StandardTokenizer的封裝。當前StandardTokenizer使用的是viterbi最短路分詞。viterbi分詞器是目前效率和效果的最佳平衡。該函式的詳細程式碼在github.com/hankcs/HanLP/blob/master/src/main/java/com/hankcs/hanlp/seg/Viterbi/ViterbiSegment.java。分詞大致功能有:首先生成詞網和詞圖即可以得到粗分詞網,經維特比演算法找最短路徑和人工干預分詞後即可得到粗分結果。之後根據配置可以進行數字識別,人名識別,譯名識別,地名識別,機構名識別,如果是索引分詞則進行全切分分詞,詞性標註。
HanLP的com.hankcs.hanlp.tokenizer包中封裝了很多開箱即用的分詞器,但是不是所有的分詞器都能在Python介面中直接使用。這些分詞器有BasicTokenizer這是NGram分詞器,不識別命名實體,不能使用使用者詞典。SpeedTokenizer這是最長匹配分詞器。NotionalTokenizer這是實詞分詞器。StandardTokenizer當前效率和效果最佳的分詞器。NLPTokenizer更精確的中文分詞器。IndexTokenizer適用於資訊檢索的分詞器。
後續將要介紹的內容是文字的向量表示,這裡邊有一部分內容是跟特徵抽取重合的。好了,今天的