百度詞法分析工具LAC 2.0
LAC(Lexical Analysis of Chinese),是百度的詞法分析工具,實現中文分詞、詞性標注、專名識別等功能。
使用的模型論文Chinese Lexical Analysis with Deep Bi-GRU Network
據官方介紹整體任務F1超過0.91,CPU單線程800QPS,移動端200QPS,支持Android、C++、Java、python接口。
我只試了python的版本,如果想要使用C++、Android,有CMakeLists直接編譯就好。
- 安裝
-
pip install lac -i https://mirror.baidu.com/pypi/simple
-
#先下載 http://pypi.python.org/pypi/lac/ #解壓后 python setup.py install
- 分詞
from LAC import LAC #加載模型 lac = LAC(mode='seg') #單個樣本 text = 'LAC是一個優秀的分詞工具' results = lac.run(text) #多樣本 texts = ['LAC是一個優秀的分詞工具','我愛中華人民共和國'] results = lac.run(texts)
- 詞性標注和命名實體識別
from LAC import LAC lac = LAC(mode='lac') #單個樣本 text = 'LAC是一個優秀的分詞工具' results = lac.run(text) #多樣本 texts = ['LAC是一個優秀的分詞工具','我愛中華人民共和國'] results = lac.run(texts)
標簽 | 含義 | 標簽 | 含義 | 標簽 | 含義 | 標簽 | 含義 |
---|---|---|---|---|---|---|---|
n | 普通名詞 | f | 方位名詞 | s | 處所名詞 | nw | 作品名 |
nz | 其他專名 | v | 普通動詞 | vd | 動副詞 | vn | 名動詞 |
a | 形容詞 | ad | 副形詞 | an | 名形詞 | d | 副詞 |
m | 數量詞 | q | 量詞 | r | 代詞 | p | 介詞 |
c | 連詞 | u | 助詞 | xc | 其他虛詞 | w | 標點符號 |
PER | 人名 | LOC | 地名 | ORG | 機構名 | TIME | 時間 |
- 支持自定義詞典
通過裝載詞典文件的形式實現該功能,詞典文件每行表示一個定制化的item,由一個單詞或多個連續的單詞組成,每個單詞后使用'/'表示標簽,如果沒有'/'標簽則會使用模型默認的標簽。每個item單詞數越多,干預效果會越精准。
custom.txt自定義內容
春天/SEASON 花/n 開/v 秋天的風 落 陽
from LAC import LAC lac = LAC() # 裝載干預詞典 lac.load_customization('custom.txt') # 干預后結果 custom_result = lac.run(u"春天的花開秋天的風以及冬天的落陽") #輸出結果 #不用自定義字典 #春天/TIME 的/u 花開/v 秋天/TIME 的/u 風/n 以及/c 冬天/TIME 的/u 落陽/n #使用自定義字典 #春天/SEASON 的/u 花/n 開/v 秋天的風/n 以及/c 冬天/TIME 的/u 落/n 陽/n
- 增量訓練
官方提供了增量訓練的接口,用戶可以使用自己的數據,進行增量訓練,首先需要將數據轉換為模型輸入的格式,並且所有數據文件均為"UTF-8"編碼。
1.分詞訓練
數據樣例,使用空格作為單詞的切分標記:
LAC 是 個 優秀 的 分詞 工具 。 百度 是 一家 高科技 公司 。 春天 的 花開 秋天 的 風 以及 冬天 的 落陽 。
from LAC import LAC # 選擇使用分詞模型 lac = LAC(mode = 'seg') # 訓練和測試數據集,格式一致 train_file = "./data/seg_train.tsv" test_file = "./data/seg_test.tsv" lac.train(model_save_dir='./my_seg_model/',train_data=train_file, test_data=test_file) # 使用自己訓練好的模型 my_lac = LAC(model_path='my_seg_model')
2.詞法分析訓練
樣例數據:
LAC/nz 是/v 個/q 優秀/a 的/u 分詞/n 工具/n 。/w 百度/ORG 是/v 一家/m 高科技/n 公司/n 。/w 春天/TIME 的/u 花開/v 秋天/TIME 的/u 風/n 以及/c 冬天/TIME 的/u 落陽/n 。/w
from LAC import LAC # 選擇使用默認的詞法分析模型 lac = LAC() # 訓練和測試數據集,格式一致 train_file = "./data/lac_train.tsv" test_file = "./data/lac_test.tsv" lac.train(model_save_dir='./my_lac_model/',train_data=train_file, test_data=test_file) # 使用自己訓練好的模型 my_lac = LAC(model_path='my_lac_model')
歡迎大家討論