我需要标记和删除停用词的两个过程:
val tokenizer = new Tokenizer()
.setInputCol("seg_text")
.setOutputCol("raw_words")
val remover = new StopWordsRemover()
.setInputCol("raw_words")
.setStopWords(stop_words)
.setOutputCol("words")
并创建管道:
val pipeline = new Pipeline()
.setStages(Array(tokenizer, remover))
最后,我希望通过此管道获得输出。我不知道怎么做,或者也许不知道。
答案 0 :(得分:1)
管道是您必须首先训练的ML模型,然后它才能为您工作。
在您的情况下,您的管道仅包含预处理阶段,因此最终将在实际训练阶段之前使用它,例如TF-IDF分类。
您可以使用fit
和transform
方法对其进行训练:
val model = pipeline.fit(df).transform(df)
但是在此之前,您需要使用一些培训文档来填充df
。您可以这样做:
val df = sc.textFile(paths.mkString(",")).toDF("docs")
path
是所有培训文档路径的Seq [String]。
您可以看到this example的线性判别分析使用的管道带有StopWordsRemover。
完成后,您将创建一个预处理ML模型。如果您需要模型实际执行真实的处理(例如分类,预测等),则可以将另一种算法添加到管道中(例如TF-IDF),也可以将其用作另一种管道中的一种算法。
训练模型后,您可能想要保存它,以便稍后加载它并使用它而不必再次训练:
model.write.overwrite().save("/tmp/your-model")
然后您可以像这样加载它:
val alreadyTrainedModel = PipelineModel.load("/tmp/your-model")