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,并可能导致错误。