Spark NLP PipelineModel,其中包括分阶段的 Annotator Approach
SparkNLP PipelineModel which includes AnnotatorApproach in stages
在 SparkNLP 的 PipelineModel
中,所有阶段的类型都必须是 AnnotatorModel
。但是,如果其中一个注释器模型需要数据集中的某一列作为输入,而该输入列是 AnnotatorApproach
?
的输出怎么办?
例如,我有一个经过训练的 NER 模型(作为管道的最后阶段),它需要令牌和 POS 标签作为两个输入。词性标注器也需要令牌。但是 Tokenizer 是一个 AnnotatorApproach
,我无法将其添加到管道中。
这是 Tokenizer 的实例化方式(在 Java 中):
AnnotatorApproach<TokenizerModel> tokenizer = new Tokenizer();
这个有效:
Pipeline pipeline = new Pipeline().setStages( new PipelineStage[]{tokenizer} );
但这不起作用,因为 Tokenizer 不是 Transformer:
List<Transformer> list;
list.add(tokenizer);
PipelineModel pipelineModel = new PipelineModel("ID42", list);
始终拟合管道将 return 您的管道准备好进行推理,即使您拟合空数据集也是如此。
如果您只依赖不需要培训的注释器,那也没关系。
这是推荐的用法,操作各个阶段通常是不必要的,hacky,并可能导致错误。
在 SparkNLP 的 PipelineModel
中,所有阶段的类型都必须是 AnnotatorModel
。但是,如果其中一个注释器模型需要数据集中的某一列作为输入,而该输入列是 AnnotatorApproach
?
例如,我有一个经过训练的 NER 模型(作为管道的最后阶段),它需要令牌和 POS 标签作为两个输入。词性标注器也需要令牌。但是 Tokenizer 是一个 AnnotatorApproach
,我无法将其添加到管道中。
这是 Tokenizer 的实例化方式(在 Java 中):
AnnotatorApproach<TokenizerModel> tokenizer = new Tokenizer();
这个有效:
Pipeline pipeline = new Pipeline().setStages( new PipelineStage[]{tokenizer} );
但这不起作用,因为 Tokenizer 不是 Transformer:
List<Transformer> list;
list.add(tokenizer);
PipelineModel pipelineModel = new PipelineModel("ID42", list);
始终拟合管道将 return 您的管道准备好进行推理,即使您拟合空数据集也是如此。 如果您只依赖不需要培训的注释器,那也没关系。 这是推荐的用法,操作各个阶段通常是不必要的,hacky,并可能导致错误。