Spacy - 使用两个可训练的组件和两个不同的数据集

Spacy - Use two trainable components with two different datasets

我想知道是否可以使用两个不同的数据集在 Spacy 中训练两个可训练组件? 事实上,我想使用 NER 和文本分类器,但由于这两个组件的训练数据集应该有不同的注释,所以我不知道如何同时训练这两个组件...

我应该在单独的管道中训练每个任务,然后 assemble 两个管道都放在最后吗? 或者我应该训练 NER,打包这个管道,然后使用这个包作为输入来训练文本分类器?

非常感谢您的帮助

如果数据集不同,您将无法同时训练它们。

如果您使用的是 spaCy v3,将两个训练步骤合并到一个最终流水线中应该相对简单。例如,创建一个首先训练 NER 的配置,并将其存储到磁盘。然后,在 source the NER from the previously trained pipeline, and then define this NER component as frozen:

的位置创建一个新配置
[nlp]
pipeline = ["ner", "textcat"]
...

[training]
frozen_components = ["ner"]
...

[components.ner]
source = "your_trained_ner_location"
component = "ner"

[components.textcat]
factory = "textcat"
...

现在 运行 训练你的 textcat

仅供参考 - 这种多步骤工作流程可以使用 spacy projects

轻松设置