问题描述
我正在尝试在 spacy v3 中准备一个自定义的 ner 模型。 从训练的角度来看,V3 与 v2 相比发生了显着变化。
我正在使用 en_web_lg 的默认配置。 我已经使用 convert 命令准备了训练数据 (training.spacy)。 但是,训练命令需要一个 dev.spacy 文件。
不确定 dev.spacy 中需要哪些数据。 这是在为 training.spacy 文件询问纯文本语料库吗? 但是有没有办法以spacy格式转换纯文本文件..
来自 spacy 站点的命令- python -m spacy train config.cfg --output ./output --paths.train ./train.spacy --paths.dev ./dev.spacy
有人可以帮忙解释一下如何准备 dev.spacy。
解决方法
train.spacy 是“训练”文件集合的占位符 - 通常使用 Spacy 转换实用程序的文件目录。 dev.spacy 是用于收集“验证”文件的占位符 - 格式与训练文件相同,但在训练期间用作验证样本(用于在每次训练迭代后计算预测、召回和 f 分数的 NER)。 通常建议的验证样本“大小”在训练样本的 10% 到 20% 之间。 我倾向于使用 20%,因为我的数据有很大的变化 - 但更大的验证样本会增加训练开销。
,dev.spacy
文件看起来应该与 train.spacy
文件完全相同,但应该包含训练过程之前没有见过的新示例,以便对模型的性能进行实际评估。
要创建此开发集,您可以先将原始数据拆分为训练/开发部分,然后分别对每个部分运行 convert
,分别调用较大的 train.spacy
和较小的 { {1}}。正如@mbrunecky 所建议的,80-20 的分割通常是好的,但这取决于数据集。