上期文章我們分享了NLP 自然語言處理的基礎知識,本期我們分享幾個比較流行的中文分詞庫,且這些中文分詞庫絕大部分是JAVA程序編寫的,在linux系統上很容易使用,但是在windows環境下,如何使用Python/ target=_blank class=infotextkey>Python來使用這些分詞庫??
HanLP
HanLP中文分詞包
HanLP 是由一系列模型與算法組成的 Java 工具包,目標是普及自然語言處理在生產環境中的應用。HanLP 具備功能完善、性能高效、架構清晰、語料時新、可自定義的特點。在提供豐富功能的同時,HanLP 內部模塊堅持低耦合、模型堅持惰性加載、服務堅持靜態提供、詞典堅持明文發布,使用非常方便,同時自帶一些語料處理工具,幫助用戶訓練自己的語料。
當然python 環境下,hanlp名稱為pyhanlp,Python下安裝直接在cmd命令框中輸入pip install pyhanlp 即可,軟件會自動安裝所依賴的其他庫,安裝完成后,在cmd命令框中輸入hanlp segment ,使用命令hanlp segment進入交互分詞模式,輸入一個句子并回車,HanLP會輸出分詞結果,前提是你的電腦開發環境已經安裝好。
此時,軟件會先下載hanlp所需要的語言模型,大概1.2G,由于服務器都是國內的,所以下載速度會很快
模型下載
模型下載完成后,hanlp會檢測電腦系統上面是否有Java環境,畢竟HanLP 是由一系列模型與算法組成的 Java 工具包
Java環境下載
若沒有安裝Java,按照軟件提示的網站下載安裝自己系統的版本即可。
若一切沒有問題,便可以輸入一段話,進行分詞操作
中文分詞
依存句法分析,命令為hanlp parse,同樣支持交互模式和重定向,在cmd命令框中輸入指令,并輸入一段話
中文分詞
pyhanlp的python使用方法
安裝pyhanlp后,以上我們可以使用在cmd命令框中輸入指令進行操作,當然我們同樣也可以使用python 編程進行操作
分詞使用
from pyhanlp import *
print(HanLP.segment("我們都是一家人。"))
>>> [我們/rr, 都/d, 是/vshi, 一家人/n, 。/w]
依存分析使用
from pyhanlp import *
print(HanLP.parseDependency("我們都是中國人。"))
>>> 1 我們 我們 r r_ 3 主謂關系 _ _
>>> 2 都 都 d d _ 3 狀中結構 _ _
>>> 3 是 是 v v _ 0 核心關系 _ _
>>> 4 中國人 中國人 n n _ 3 動賓關系 _ _
>>> 5 。。? wp w _ 2 標點符號 _ _
pyhanlp可視化
pyhanlp提供了一個很好的可視化界面,可以直接在官網上進行可視化操作,當然在本地,只要一句命令就能啟動一個web服務
在cmd命令框里,直接輸入hanlp serve即可,然后軟件提示8765端口的本地網絡地址
瀏覽器輸入http://localhost:8765就能看到可視化界面,能看到分詞結果和依存關系的結果,是不是很直觀。這個網頁上還有安裝說明、源碼鏈接、文檔鏈接、常見的問題,國產庫果真想的很到位
可視化界面
中文分詞可視化
jieba中文分詞庫
jieba庫是一款優秀的 Python 第三方中文分詞庫,jieba 支持三種分詞模式:精確模式、全模式和搜索引擎模式
精確模式:試圖將語句最精確的切分,不存在冗余數據,適合做文本分析
全模式:將語句中所有可能是詞的詞語都切分出來,速度很快,但是存在冗余數據搜索引擎模式:在精確模式的基礎上,對長詞再次進行切分
Window環境下,在cmd命令框中輸入: pip install jieba 進行安裝即可
import jieba
seg_str = "我們都是中國人,我愛我的祖國。"
print("/".join(jieba.lcut(seg_str))) # 精簡模式,返回一個列表類型的結果
print("/".join(jieba.lcut(seg_str, cut_all=True))) # 全模式,使用 'cut_all=True' 指定
print("/".join(jieba.lcut_for_search(seg_str))) # 搜索引擎模式
jieba分詞
我們/都/是/中國/人/,/我/愛/我/的/祖國/。
我們/都/是/中國/國人/,/我/愛/我/的/祖國/。
我們/都/是/中國/人/,/我/愛/我/的/祖國/。
LTP中文分詞庫
LTP(哈工大)提供了一系列中文自然語言處理工具,用戶可以使用這些工具對于中文文本進行分詞、詞性標注、句法分析等等工作。
從應用角度來看,LTP為用戶提供了下列組件:
針對單一自然語言處理任務,生成統計機器學習模型的工具針對單一自然語言處理任務,調用模型進行分析的編程接口使用流水線方式將各個分析工具結合起來,形成一套統一的中文自然語言處理系統系統可調用的,用于中文語言處理的模型文件針對單一自然語言處理任務,基于云端的編程接口
LTP的python接口是pyltp,直接在cmd命令框中直接輸入pip install pyltp安裝即可,
ltp的安裝不會自動下載模型,可以到 http://ltp.ai/download.html下載
這里需要注意:pyltp 的當前版本0.2.1 對應模型是:3.4.0
0.1.9.1,對應的模型是:3.3.1
模型下載
這里需要下載對應的模型版本,否則會出現模型無法運行
python 操作pyltp
LTP提供的模型包括:(在ltp_data文件夾)
cws.model 分句模型,單文件
ner.model 命名實體識別模型,單文件
parser.model 依存句法分析模型,單文件
pos.model 詞性標注模型,單文件
pisrl.model模型等等,我們可以根據已經訓練好的模型進行中文的分詞或者其他操作
import pyltp
from pyltp import Segmentor
segmentor = Segmentor()segmentor.load('ltp_data_v3.4.0/ltp_data_v3.4.0/cws.model')#加載分詞庫
ltpword = segmentor.segment("我們是人工智能研究所,主要致力于分享人工智能方面的技術知識,
歡迎大家一起學習。")
print(' '.join(ltpword).split())#分詞后的結果
>>> ['我們', '是', '人工智能', '研究所', ',', '主要', '致力', '于', '分享', '人工智能', '方面', '的', '技術', '知識', ',
', '歡迎', '大家', '一起', '學習', '。']
以上我們便打造了一個LTP的分詞任務,當然,你也可以加載其他模型,進行不同的分詞任務,且可以加載大量的文本,只需要segmentor.segment文件里面輸入打開的文件便可
當然跟hanlp一樣,LTP同樣提供了可視化操作界面LTP可視化:可以到官方網站,進行可視化的操作http://ltp.ai/demo.html
LTP可視化