一个n-gram是一个包含n
个tokens
(如词)的序列。NGram
可以将输入特征 转换为n-grams
。
NGram
输入一系列的序列,参数n
用来决定每个n-gram
的词个数。输出包含一个n-grams
序列,每个n-gram
表示一个划定空间的连续词序列。 如果输入序列包含的词少于n
,将不会有输出。
N-Gram认为语言中每个单词只与其前面长度 N-1 的上下文有关。主要分为bigram和trigram,bigram假设下一个词的出现依赖它前面的一个词,trigram假设下一个词的出现依赖它前面的两个词。在SparkML中用NGram类实现,setN(2)为bigram,setN(3)为trigram。
// $example on$ import org.apache.spark.SparkConf import org.apache.spark.ml.feature.NGram // $example off$ import org.apache.spark.sql.SparkSession /** * N-Gram认为语言中每个单词只与其前面长度 N-1 的上下文有关。主要分为bigram和trigram, * bigram假设下一个词的出现依赖它前面的一个词,trigram假设下一个词的出现依赖它前面的两个词。 * 在SparkML中用NGram类实现,setN(2)为bigram,setN(3)为trigram。 */ object NGramExample { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf(); sparkConf.setMaster("local[*]").setAppName(this.getClass.getSimpleName) val spark = SparkSession .builder .config(sparkConf) .appName("NGramExample") .getOrCreate() // $example on$ 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("id", "words") val ngram = new NGram().setN(2).setInputCol("words").setOutputCol("ngrams") val ngramDataFrame = ngram.transform(wordDataFrame) ngramDataFrame.select("ngrams").show(false) // $example off$ spark.stop() } }
输出结果:
+——————————————————————+
|ngrams |
+——————————————————————+
|[Hi I, I heard, heard about, about Spark] |
|[I wish, wish Java, Java could, could use, use case, case classes]|
|[Logistic regression, regression models, models are, are neat] |
+——————————————————————+
Spark ML机器学习:SQLTransformer
Spark ML机器学习:Tokenizer分词器
Spark ML机器学习:多项式转化-PolynomialExpansion
Spark ML机器学习:N-gram
Spark ML机器学习:归一化之最小最大值标准化-MinMaxScaler
Spark ML机器学习:绝对值最大标准化-MaxAbsScaler
Spark ML机器学习:标准化-StandardScaler
Spark ML机器学习:连续型数据处理之给定分位数离散化-QuantileDiscretizer
Spark ML机器学习:连续型数据处理之二值化-Binarizer
Spark ML机器学习:连续型数据处理之给定边界离散化-Bucketizer
Spark ML机器学习:元素智能乘积-ElementwiseProduct
原文链接:https://blog.csdn.net/linweidong/article/details/87278781
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~