Apache spark 创建复合变压器火花

Apache spark 创建复合变压器火花,apache-spark,composition,transformer,Apache Spark,Composition,Transformer,我使用的是一个NGram变压器然后是一个CountVectorizerModel 我需要能够创建一个复合转换器,以便以后重用 我可以通过制作一个列表并遍历所有元素来实现这一点,但我想知道是否可以使用另外两个转换器创建转换器这实际上非常简单,您只需使用管道API来创建管道: 导入java.util.array; 导入org.apache.spark.ml.Pipeline; 导入org.apache.spark.ml.PipelineModel; 导入org.apache.spark.ml.Pip

我使用的是一个
NGram
变压器
然后是一个
CountVectorizerModel

我需要能够创建一个复合转换器,以便以后重用


我可以通过制作一个
列表
并遍历所有元素来实现这一点,但我想知道是否可以使用另外两个
转换器创建
转换器
这实际上非常简单,您只需使用
管道
API来创建管道:

导入java.util.array;
导入org.apache.spark.ml.Pipeline;
导入org.apache.spark.ml.PipelineModel;
导入org.apache.spark.ml.PipelineStage;
导入org.apache.spark.ml.feature.CountVectorier;
导入org.apache.spark.ml.feature.NGram;
导入org.apache.spark.ml.feature.Tokenizer;
导入org.apache.spark.sql.Row;
导入org.apache.spark.sql.RowFactory;
导入org.apache.spark.sql.types.DataTypes;
导入org.apache.spark.sql.types.Metadata;
导入org.apache.spark.sql.types.StructField;
导入org.apache.spark.sql.types.StructType;
List data=Arrays.asList(
RowFactory.create(0,“嗨,我听说了Spark”),
create(1,“我希望Java能够使用用例类”),
创建(2,“逻辑、回归、模型、are、整洁”)
);
StructType架构=新StructType(新StructField[]{
新建StructField(“id”,DataTypes.IntegerType,false,Metadata.empty()),
新建StructField(“句子”,DataTypes.StringType,false,Metadata.empty())
});
现在让我们定义我们的管道(标记器、ngram transformer和计数向量器):

Tokenizer-Tokenizer=new-Tokenizer().setInputCol(“文本”).setOutputCol(“文字”);
NGram NGram Transformer=NGram().setN(2).setInputCol(“文字”).setOutputCol(“ngrams”);
CountVectorizer CountVectorizer=新的CountVectorizer()
.setInputCol(“ngrams”)
.setOutputCol(“功能”)
.setVocabSize(3)
.setMinDF(2);
我们现在可以创建管道并对其进行培训:

Pipeline管道=新管道()
.setStages(新的PipelineStage[]{tokenizer、ngramTransformer、countvectorier});
//将管道与培训文件相匹配。
PipelineModel=pipeline.fit(sentenceDataFrame);

我希望这有帮助

这实际上非常简单,您只需要使用
管道
API来创建管道:

导入java.util.array;
导入org.apache.spark.ml.Pipeline;
导入org.apache.spark.ml.PipelineModel;
导入org.apache.spark.ml.PipelineStage;
导入org.apache.spark.ml.feature.CountVectorier;
导入org.apache.spark.ml.feature.NGram;
导入org.apache.spark.ml.feature.Tokenizer;
导入org.apache.spark.sql.Row;
导入org.apache.spark.sql.RowFactory;
导入org.apache.spark.sql.types.DataTypes;
导入org.apache.spark.sql.types.Metadata;
导入org.apache.spark.sql.types.StructField;
导入org.apache.spark.sql.types.StructType;
List data=Arrays.asList(
RowFactory.create(0,“嗨,我听说了Spark”),
create(1,“我希望Java能够使用用例类”),
创建(2,“逻辑、回归、模型、are、整洁”)
);
StructType架构=新StructType(新StructField[]{
新建StructField(“id”,DataTypes.IntegerType,false,Metadata.empty()),
新建StructField(“句子”,DataTypes.StringType,false,Metadata.empty())
});
现在让我们定义我们的管道(标记器、ngram transformer和计数向量器):

Tokenizer-Tokenizer=new-Tokenizer().setInputCol(“文本”).setOutputCol(“文字”);
NGram NGram Transformer=NGram().setN(2).setInputCol(“文字”).setOutputCol(“ngrams”);
CountVectorizer CountVectorizer=新的CountVectorizer()
.setInputCol(“ngrams”)
.setOutputCol(“功能”)
.setVocabSize(3)
.setMinDF(2);
我们现在可以创建管道并对其进行培训:

Pipeline管道=新管道()
.setStages(新的PipelineStage[]{tokenizer、ngramTransformer、countvectorier});
//将管道与培训文件相匹配。
PipelineModel=pipeline.fit(sentenceDataFrame);

我希望这有帮助

您可以使用spark mlI的管道API,查看官方mllib/ml文档中的thanksIt。您可以使用spark mlI的管道API,查看官方mllib/ml文档中的thanksIt