我想知道是否可以使用两个不同的数据集在 Spacy 中训练两个可训练的组件? 事实上,我想使用 NER 和文本分类器,但由于这两个组件的训练数据集应该有不同的注释,所以我不知道如何同时训练这两个组件...
我应该在单独的管道中训练每个任务并在最后组装两个管道吗? 或者我应该训练 NER,打包这个管道,然后使用这个包作为输入来训练文本分类器?
非常感谢您的帮助
最佳答案
如果数据集不同,您将无法同时训练它们。
如果您使用的是 spaCy v3,那么将两个训练步骤合并到一个最终流水线中应该相对简单。例如,创建一个首先训练 NER 的配置,并将其存储到磁盘。然后,在你 source
的位置创建一个新配置来自先前训练的管道的 NER,然后将此 NER 组件定义为 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
轻松设置
关于nlp - Spacy - 使用两个可训练的组件和两个不同的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67607627/