百度LAC2.0试用
2020-07-21 本文已影响0人
夕一啊
最近看到推送,百度的开源词法LAC2.0发布了,可增量训练适应自己的数据, 赶紧来试验下。git
模型是两层的BI-GRU+CRF,隐藏层维度256词向量维度128,优化器SGD,基础学习率1e-3,词向量层学习率5e-3,batchsize250。
模型结构
据说在各种数据集上表现效果都很棒,且速度很快,一个200字的句子大概10ms。
增量训练
因为最近在做ner,所以用ner数据集来测试下。
首先得把数据处理成LAC所需的格式。
日本/LOC 知/n 名/n 学/n 者/n 石川一成/PER 先/n 生/n 曾/n 撰/n 文/n 说/n :/n 面/n 对/n 宝顶大佛湾/LOC 造/n 像/n ,/n 看/n 中华/LOC 民/n 族/n 囊/n 括/n 外/n 来/n 文/n 化/n 的/n 能/n 力/n 和/n 创/n 造/n 能/n 力/n ,/n 不/n 禁/n 使/n 我/n 目/n 瞪/n 口/n 呆/n 。/n
目前不支持自定义label,可以用已有的label来表示自己的数据。我是用“n“来代替”O“。
训练代码
from LAC import LAC
# 选择使用默认的词法分析模型
lac = LAC()
# 训练和测试数据集,格式一致
train_file = "lac_train_clue.txt"
test_file = "lac_test_clue.txt"
lac.train(model_save_dir='my_lac_model_clue_200/',train_data=train_file, test_data=test_file, iter_num=200)
测试结果
-
人民日报
bert+crf:94, LAC:91.18
差别不是很大但是比bert快十倍
-
clue
bert+crf:78, LAC:68.98,
与clue官网测试的lstm+crf F1:70类似,是因为细粒度分裂加上训练集只有1w所以效果比bert差很多吗