[撒花\*/]百度词法分析工具LAC
百度词法分析工具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')
欢迎大家讨论