sparkmllib算法之特徵轉換-第一篇(StopWordsRemover)

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、說明

  1. 在過濾掉了停用詞“I”,“the”,“have”和“a”。
  2. 應用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章