我想知道是否可以使用两个不同的数据集在 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