在 spacy v3 中训练 NER 需要在命令行 dev.spacy

Train NER in spacy v3 needs dev.spacy at command line

我正在尝试在 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 是 'training' 文件集合的占位符 - 通常使用 Spacy 转换实用程序的文件目录。 dev.spacy 是 'validation' 文件集合的占位符 - 与训练文件的格式相同,但在训练期间用作验证样本(用于 NER 用于在每次训练后计算预测、召回和 f 分数迭代)。 通常建议 'size' 验证样本在训练样本的 10% 到 20% 之间。 我倾向于使用 20%,因为我的数据变化很大 - 但较大的验证样本会增加训练开销。

dev.spacy 文件看起来应该与 train.spacy 文件完全一样,但应该包含训练过程以前从未见过的新示例,以便对您的性能进行真实评估型号。

要创建此开发集,您可以先将原始数据拆分为 train/dev 部分,然后对每个部分分别 运行 convert,调用较大的部分 train.spacy 和较小的 dev.spacy。正如@mb运行ecky 所建议的那样,80-20 的分割通常很好,但这取决于数据集。