pycorrector
pycorrector copied to clipboard
macbert微调
macbert微调,大概迭代到几轮达到了指标
macbert方法的预测,为什么infer.py和macbert_corrector.py加载的模型不一样。infer.py使用MacBert4Csc,而macbert_corrector.py使用BertForMaskedLM。
本质是一样,backbone都是BertForMaskedLM
@zhentaoCoding 我这边跑 5 轮 (SIGHAN13-15 除去 SIGHAN15_test;Wang271K)作为训练集,我在模型网络上有加一些其它的东西,可以在第 3 个 epoch 收敛。结论是我这个训练可以达到 repo 里相应指标的高度,也许可以作参考。
@shibing624 老师您好,关于评估指标有个小问题: 我用同一个模型的 predict 结果来跑 evaluation.py 里的句子级别评价指标 F1 和我用 iqiyi 的 FASPELL 的句子级别评价指标脚本算出来的会有些不同(FASPELL 的计算方式 F1 总是会低一些)。pycorrector 这里的指标计算看起来更加直观简单一些,所以想了解一下在指标对比计算上,这两种的哪一种会更加常用一些呢?
iqiyi的计算也放这里了的:https://github.com/shibing624/pycorrector/blob/master/pycorrector/macbert/evaluate_util.py 字和句子粒度的放一起统计的。
我常用句子粒度的F1计算,比较简单。
哈哈,这个 iqiyi 的评测指标函数应该是我写的,不过是在 BBCM 那个 repo 里写的。
那确实两种计算方法得出的结果会不一样呢…… 我好好研究一下区别,谢谢~
(Updated Mar 5th) 破案了,因为 pycorrector 有一个处理 UNK 的操作,evaluation 在这个操作之后,而我调用 FASPELL 的 evaluation 方法是在模型的 outputs 后直接接上的。所以在包含有 UNK 字符的句子中会产生不同。 谢谢 @shibing624 的指点~
@zhentaoCoding 我这边跑 5 轮 (SIGHAN13-15 除去 SIGHAN15_test;Wang271K)作为训练集,我在模型网络上有加一些其它的东西,可以在第 3 个 epoch 收敛。结论是我这个训练可以达到 repo 里相应指标的高度,也许可以作参考。
@shibing624 老师您好,关于评估指标有个小问题: 我用同一个模型的 predict 结果来跑 evaluation.py 里的句子级别评价指标 F1 和我用 iqiyi 的 FASPELL 的句子级别评价指标脚本算出来的会有些不同(FASPELL 的计算方式 F1 总是会低一些)。pycorrector 这里的指标计算看起来更加直观简单一些,所以想了解一下在指标对比计算上,这两种的哪一种会更加常用一些呢?
我用paddle改写了macbert方法,用Wang271K训练,效果远没达到指标,感觉是我有地方写的有问题
@zhentaoCoding 我的做法是上面我说的训练集按9:1分训练集和验证集。用验证集loss最低时的模型参数来做评估。使用pycorrector 这边的评测方法可以达到差不多的效果。一个想法是你仅在Wang271k上(看起来你是没有加入其他的sighan数据)拟合好了之后,和SIGHAN15的错误类型分布有较大不同?
但我在网络基础上有加一些额外的结构和loss,没有做过原版网络的实验,所以也说只能是仅作参考啦。
@zhentaoCoding 我的做法是上面我说的训练集按9:1分训练集和验证集。用验证集loss最低时的模型参数来做评估。使用pycorrector 这边的评测方法可以达到差不多的效果。一个想法是你仅在Wang271k上(看起来你是没有加入其他的sighan数据)拟合好了之后,和SIGHAN15的错误类型分布有较大不同?
但我在网络基础上有加一些额外的结构和loss,没有做过原版网络的实验,所以也说只能是仅作参考啦。
我加入SIGHAN15训练数据试试
@zhentaoCoding 我的做法是上面我说的训练集按9:1分训练集和验证集。用验证集loss最低时的模型参数来做评估。使用pycorrector 这边的评测方法可以达到差不多的效果。一个想法是你仅在Wang271k上(看起来你是没有加入其他的sighan数据)拟合好了之后,和SIGHAN15的错误类型分布有较大不同?
但我在网络基础上有加一些额外的结构和loss,没有做过原版网络的实验,所以也说只能是仅作参考啦。
加了SIGHAN15训练数据,指标就上去了
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.(由于长期不活动,机器人自动关闭此问题,如果需要欢迎提问)