筆者2年前寫過一篇《PHP使用elasticsearch搜索安裝及分詞方法》的文章,記錄了使用ES的分詞的實現步驟,最近又須要用到分詞,在網上發現一個百度的中文分詞項目,中文詞法分析(LAC) ,決定使用一番,並把此次試用經過文章記錄下來,給有須要的朋友一個參考吧python
中文詞法分析LAC 支持Python、C++、JAVA、Android 用接口調用,其餘語言的話就須要開發者本身自行封裝了,筆者此次決定使用Python進行實驗,在文中也會把相關代碼給貼出來,給你們做爲一個參考git
LAC2.0 的安裝方式很是簡單,直接使用pip安裝便可,可是國內訪問pip軟件源可能比較慢,所以咱們能夠用上加速地址,參考命令以下所示github
pip3 install lac -i https://mirror.baidu.com/pypi/simple
命令執行完成以後,返回的信息以下所示算法
paddle
,也就沒辦法正確安裝LAC了
爲了驗證是否已經將LAC安裝成功,這裏筆者運行了一下DEMO示例代碼,首先新建了一個代碼文件lac.py
,而後將demo代碼複製進去,代碼以下所示windows
# -*- coding: utf-8 -*- from LAC import LAC # 裝載分詞模型 lac = LAC(mode='seg') # 單個樣本輸入,輸入爲Unicode編碼的字符串 text = u"大王叫我來巡山" seg_result = lac.run(text) print(seg_result) # 批量樣本輸入, 輸入爲多個句子組成的list,平均速率會更快 texts = [u"山裏有個廟", u"廟裏有個老和尚跟一個小和尚"] seg_result = lac.run(texts) print(seg_result)
接着使用Python運行這個文件,執行命令以下安全
python lac.py
命令執行以後,返回的分詞詞彙標註信息以下所示elasticsearch
從上面圖片能夠看到,LAC已經將一段文本進行了分詞,說明咱們安裝LAC成功,工具
LAC 除了能夠進行分詞以外,還能夠用來作詞性標註與實體識別,咱們接着繼續運行demo代碼,筆者首先新建了一個代碼文件lac2.py
,而後將用來作詞性標註和實體識別的demo代碼複製進去,代碼以下所示網站
from LAC import LAC # 裝載LAC模型 lac = LAC(mode='lac') # 單個樣本輸入,輸入爲Unicode編碼的字符串 text = u"我想漲工資" lac_result = lac.run(text) print(lac_result) # 批量樣本輸入, 輸入爲多個句子組成的list,平均速率更快 texts = [u"湯青松長得好帥", u"我喜歡作安全開發工程師"] lac_result = lac.run(texts) print(lac_result)
接着使用Python運行這個文件,執行命令以下搜索引擎
python lac2.py
命令執行以後,返回的分詞詞彙標註信息以下所示
在上圖中咱們能夠看到,此次LAC不只返回了分詞結果,還返回另一個詞彙類型的list,筆者粗略的核對了一下,基本都能對應上,好比筆者的名字標識爲PER 人名
類型,好帥
標示爲 a 形容詞
類型
下面是詞性和專名類別標籤集合,其中咱們將最經常使用的4個專名類別標記爲大寫的形式:
標籤 | 含義 | 標籤 | 含義 | 標籤 | 含義 | 標籤 | 含義 |
---|---|---|---|---|---|---|---|
n | 普通名詞 | f | 方位名詞 | s | 處所名詞 | nw | 做品名 |
nz | 其餘專名 | v | 普通動詞 | vd | 動副詞 | vn | 名動詞 |
a | 形容詞 | ad | 副形詞 | an | 名形詞 | d | 副詞 |
m | 數量詞 | q | 量詞 | r | 代詞 | p | 介詞 |
c | 連詞 | u | 助詞 | xc | 其餘虛詞 | w | 標點符號 |
PER | 人名 | LOC | 地名 | ORG | 機構名 | TIME | 時間 |
LAC是一個很是不錯的分詞工具,並非用來直接爲業務提供搜索支持,而是做爲一個搜索引擎的基礎工具;
好比當你想將網站的文章標題用於站內搜索,使用LAC進行了分詞,分詞以後這些數據你還須要額外的存儲,用來做爲搜索使用,由於LAC只提供分詞功能,因此感受LAC適合做爲分詞搜索引擎的一部分,若是你想用來分詞搜索站內信息,倒不如ES的那麼方便。
筆者也好奇LAC項目的適用場景是什麼?從LAC項目的產品口中得知回答以下:
LAC適用場景更可能是與實體識別相關的,好比知識圖譜,知識問答,信息抽取等,也能夠做爲其餘模型算法的基礎工具,由於其分詞粒度是以實體做爲粒度的,同時兼具實體識別的效果,而在搜索引擎中通常使用的分詞粒度會更小一些,或者同時提供多種粒度,若是要面向搜索的分詞,還須要用戶自行進行微調模型
-
做者:湯青松
日期:2020-07-07