Closed lingvisa closed 2 years ago
您好,请参考这个链接:https://github.com/syuoni/eznlp/blob/master/docs/boundary-smoothing.md
对中文数据集:
$ python scripts/entity_recognition.py @scripts/options/with_bert.opt \
--num_epochs 50 \
--batch_size 48 \
--dataset {ontonotesv4_zh | SIGHAN2006 | WeiboNER | ResumeNER} \
--ck_decoder boundary_selection \
--sb_epsilon {0.0 | 0.1 | 0.2 | 0.3} \
--sb_size {1 | 2} \
--bert_arch {BERT_base_wwm | MacBERT_base | MacBERT_large} \
--use_interm2 \
[options]
另外,根据以往 NER 领域多数论文,实验结果报告 Micro F1-score。
Weibo NER 数据量较小,单次实验结果波动较大,建议多次实验后看结果。
按照文档中的默认参数,我可以得到 %73.25 的 micro-f1, 试验结果可以重复,还要好点。一个问题是,默认参数的三个项目:
use_crf: True
use_biaffine: True
文章中说使用 biaffine 取代 crf 作为 decoder, 但是为什么默认参数两个都设置为 True?
另外,文章中说 Boundary Smoothing Parameter 是 {0.1, 0.2, 0.3} 之间取值,但运行脚本中默认参数是 ‘0’,这两个参数是一回事吗? 我试着调整 crf 参数:
python scripts/entity_recognition.py --dataset WeiboNER --ck_decoder boundary_selection --no_crf True
但得到错误:
entity_recognition.py: error: unrecognized arguments: True
怎么测试指定这个参数? 谢谢
您好,请具体参照代码实现来解读参数:
(1)如果采用 boundary_selection
作为解码框架,那 use_crf
取值无论是什么都没有影响。CRF 目前仅适配 sequence_tagging
框架。
(2)sb_epsilon
对应论文中 boundary smoothing 的 epsilon。代码里默认值为 0,则不使用 boundary smoothing;需要调整为 0.1/0.2/0.3 等取值以开启。
(3)如果在 sequence_tagging
框架下,可以用 --no_crf
禁用 CRF (不需要后面跟 True
)。
如果只看变量名,容易望文生义,请结合代码和注释来解读,谢谢!
好的。如果使用自己的数据,关于自己准备的数据格式你有什么建议吗?因为不同公共数据集的格式不一样。另外,如果多 GPU训练,有没有快速设置可以达到使用多个 GPU? 谢谢
On Mon, Jul 18, 2022, 6:49 PM Enwei Zhu @.***> wrote:
您好,请具体参照代码实现来解读参数: (1)如果采用 boundary_selection 作为解码框架,那 use_crf 取值无论是什么都没有影响。CRF 目前仅适配 sequence_tagging 框架。 (2)sb_epsilon 对应论文中 boundary smoothing 的 epsilon。代码里默认值为 0,则不使用 boundary smoothing;需要调整为 0.1/0.2/0.3 等取值以开启。 (3)如果在 sequence_tagging 框架下,可以用 --no_crf 禁用 CRF (不需要后面跟 True)。
如果只看变量名,容易望文生义,请结合代码和注释来解读,谢谢!
— Reply to this email directly, view it on GitHub https://github.com/syuoni/eznlp/issues/29#issuecomment-1188505944, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB4J634NEIGNZPPDACHQZHDVUYCRJANCNFSM53XBXM6A . You are receiving this because you authored the thread.Message ID: @.***>
数据格式推荐用 json 吧,比较灵活通用;形式类似 https://github.com/syuoni/eznlp/blob/master/data/conll2004/ 下的几个样例文件。
本仓库目前没有支持多 GPU 的设置。如果想要实现,可以参考:https://github.com/tczhangzhi/pytorch-distributed
好的,感谢。
您好,我跑了你的代码,没做任何修改,就用公共数据集 Weibo NER 评估,发现指标很低. 命令如下:
python scripts/entity_recognition.py --dataset WeiboNER --ck_decoder boundary_selection
得到的结果只有 40% 多,参数没做任何变动,日志如下: