0、停止詞介紹
停止詞是應該從輸入中排除的詞,通常是因爲詞經常出現而且沒有那麼多含義。
StopWordsRemover 將字符串序列(例如,Tokenizer 的輸出)作爲輸入,並從輸入序列中刪除所有停用詞。停用詞列表由 stopWords 參數指定。某些語言的默認停用詞可通過調用訪問 StopWordsRemover.loadDefaultStopWords(language),其中可用選項爲“丹麥語”,“荷蘭語”,“英語”,“芬蘭語”,“法語”,“德語”,“匈牙利語”,“意大利語”,“挪威語” “,”葡萄牙語“,”俄語“,”西班牙語“,”瑞典語“和”土耳其語“。布爾參數 caseSensitive 指示匹配項是否區分大小寫(默認爲 false)。
1、示例
1.1、數據準備
id | raw
----|----------
0 | [I, saw, the, red, baloon]
1 | [Mary, had, a, little, lamb]
1.2、應用停用詞後結果
id | raw | filtered
----|-----------------------------|--------------------
0 | [I, saw, the, red, baloon] | [saw, red, baloon]
1 | [Mary, had, a, little, lamb]|[Mary, little, lamb]
1.3、說明
- 在過濾掉了停用詞“I”,“the”,“have”和“a”。
- 應用StopWordsRemoverwith raw 作爲輸入列和 filtered 輸出列
2、代碼實現
import org.apache.spark.ml.feature.StopWordsRemover
import org.apache.spark.sql.SparkSession
object Test {
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession.builder()
.appName("test")
.master("local[2]")
.getOrCreate()
spark.sparkContext.setLogLevel("WARN")
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()
}
}
3、輸出結果
+---+--------------------+--------------------+
| id| raw| filtered|
+---+--------------------+--------------------+
| 0|[I, saw, the, red...| [saw, red, baloon]|
| 1|[Mary, had, a, li...|[Mary, little, lamb]|
+---+--------------------+--------------------+
有問題請聯繫QQ:765120845