中文分詞工具(LAC) 試用筆記

1、背景

筆者2年前寫過一篇《PHP使用elasticsearch搜索安裝及分詞方法》的文章,記錄了使用ES的分詞的實現步驟,最近又須要用到分詞,在網上發現一個百度的中文分詞項目,中文詞法分析(LAC) ,決定使用一番,並把此次試用經過文章記錄下來,給有須要的朋友一個參考吧python

中文詞法分析LAC 支持Python、C++、JAVA、Android 用接口調用,其餘語言的話就須要開發者本身自行封裝了,筆者此次決定使用Python進行實驗,在文中也會把相關代碼給貼出來,給你們做爲一個參考git

二 安裝LAC

LAC2.0 的安裝方式很是簡單,直接使用pip安裝便可,可是國內訪問pip軟件源可能比較慢,所以咱們能夠用上加速地址,參考命令以下所示github

pip3 install lac  -i https://mirror.baidu.com/pypi/simple

命令執行完成以後,返回的信息以下所示算法

image

安裝注意事項

  1. LAC有1.0 和2.0 ,在碼雲中顯示的是1.0,可是並無特地標明,1.0 的版本安裝過程很是比較麻煩,安裝過程也容易出錯,建議你們能夠去github查看LAC 2.0的安裝方式
  2. 若是你是windows系統想用wsl去安裝,不要使用WSL1.0,由於他不支持LAC的依賴組件paddle,也就沒辦法正確安裝LAC了
  3. LAC 安裝須要注意你的Python版本,不能大於3.7,筆者作實驗的時候使用的Python3.8版本,結果報了以下錯誤

image

3、 運行DEMO

爲了驗證是否已經將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

image

從上面圖片能夠看到,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

命令執行以後,返回的分詞詞彙標註信息以下所示

image

在上圖中咱們能夠看到,此次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 時間

4、試用感想

LAC是一個很是不錯的分詞工具,並非用來直接爲業務提供搜索支持,而是做爲一個搜索引擎的基礎工具;

好比當你想將網站的文章標題用於站內搜索,使用LAC進行了分詞,分詞以後這些數據你還須要額外的存儲,用來做爲搜索使用,由於LAC只提供分詞功能,因此感受LAC適合做爲分詞搜索引擎的一部分,若是你想用來分詞搜索站內信息,倒不如ES的那麼方便。

筆者也好奇LAC項目的適用場景是什麼?從LAC項目的產品口中得知回答以下:

LAC適用場景更可能是與實體識別相關的,好比知識圖譜,知識問答,信息抽取等,也能夠做爲其餘模型算法的基礎工具,由於其分詞粒度是以實體做爲粒度的,同時兼具實體識別的效果,而在搜索引擎中通常使用的分詞粒度會更小一些,或者同時提供多種粒度,若是要面向搜索的分詞,還須要用戶自行進行微調模型

-

做者:湯青松

日期:2020-07-07

相關文章
相關標籤/搜索