一个n-gram是一个包含n
个tokens
(如词)的序列。NGram
可以将输入特征
转换为n-grams
。
NGram
输入一系列的序列,参数n
用来决定每个n-gram
的词个数。输出包含一个n-grams
序列,每个n-gram
表示一个划定空间的连续词序列。
如果输入序列包含的词少于n
,将不会有输出。
import org.apache.spark.ml.feature.NGram
val wordDataFrame = spark.createDataFrame(Seq(
(0, Array("Hi", "I", "heard", "about", "Spark")),
(1, Array("I", "wish", "Java", "could", "use", "case", "classes")),
(2, Array("Logistic", "regression", "models", "are", "neat"))
)).toDF("label", "words")
val ngram = new NGram().setInputCol("words").setOutputCol("ngrams")
val ngramDataFrame = ngram.transform(wordDataFrame)
ngramDataFrame.take(3).map(_.getAs[Stream[String]]("ngrams").toList).foreach(println)