Stop words是那些需要从输入数据中排除掉的词。删除这些词的原因是, 这些词出现频繁,并没有携带太多有意义的信息。
StopWordsRemover输入一串句子,将这些输入句子中的停用词全部删掉。停用词列表是通过stopWords参数来指定的。
一些语言的默认停用词可以通过调用StopWordsRemover.loadDefaultStopWords(language)来获得。可以用的语言选项有danish, dutch, english, finnish, french, german,
hungarian, italian, norwegian, portuguese, russian, spanish, swedish以及 turkish。参数caseSensitive表示是否对大小写敏感,默认为false。
假设我们有下面的DataFrame,列名为id和raw。
id | raw
----|----------
0 | [I, saw, the, red, baloon]
1 | [Mary, had, a, little, lamb]
把raw作为输入列,filtered作为输出列,通过应用StopWordsRemover我们可以得到下面的结果。
id | raw | filtered
----|-----------------------------|--------------------
0 | [I, saw, the, red, baloon] | [saw, red, baloon]
1 | [Mary, had, a, little, lamb]|[Mary, little, lamb]
下面是代码调用的例子。
import org.apache.spark.ml.feature.StopWordsRemover
val remover = new StopWordsRemover()
.setInputCol("raw")
.setOutputCol("filtered")
val dataSet = spark.createDataFrame(Seq(
(0, Seq("I", "saw", "the", "red", "baloon")),
(1, Seq("Mary", "had", "a", "little", "lamb"))
)).toDF("id", "raw")
remover.transform(dataSet).show()