自然语言处理

百度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)

测试结果

  1. 人民日报
    bert+crf:94, LAC:91.18
    差别不是很大但是比bert快十倍


  2. clue
    bert+crf:78, LAC:68.98,
    与clue官网测试的lstm+crf F1:70类似,是因为细粒度分裂加上训练集只有1w所以效果比bert差很多吗

上一篇下一篇

猜你喜欢

热点阅读