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


一、背景

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

中文詞法分析LAC 支持Python、C++、JAVA、Android 用接口調用,其他語言的話就需要開發者自己自行封裝了,筆者這次決定使用Python進行實驗,在文中也會把相關代碼給貼出來,給大家作為一個參考

二 安裝LAC

LAC2.0 的安裝方式非常簡單,直接使用pip安裝即可,但是國內訪問pip軟件源可能比較慢,因此我們可以用上加速地址,參考命令如下所示

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

三、 運行DEMO

為了驗證是否已經將LAC安裝成功,這里筆者運行了一下DEMO示例代碼,首先新建了一個代碼文件lac.py,然后將demo代碼復制進去,代碼如下所示

# -*- 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

命令執行之后,返回的分詞詞匯標注信息如下所示

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 時間

四、試用感想

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

比如當你想將網站的文章標題用於站內搜索,使用LAC進行了分詞,分詞之后這些數據你還需要額外的存儲,用來作為搜索使用,因為LAC只提供分詞功能,所以感覺LAC適合作為分詞搜索引擎的一部分,如果你想用來分詞搜索站內信息,倒不如ES的那么方便。

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

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

作者:湯青松

日期:2020-07-07


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM