http://spark.apache.org/docs/latest/ml-features.html#tf-idf
輸入org.apache.spark.ml.feature._
輸入org.apache.spark.ml.linalg.SparseVector
輸入org.apache.spark.sql.SparkSession
輸入scala.collection.mutable
輸入scala.io.Source
/ **
* 2017年6月3日にxubcによって作成されました。
* /
オブジェクトTestX {
DEFメイン(引数:配列[文字列]):単位= {
ヴァルスパーク= SparkSession.builder
管理組織のビー玉( "ローカル[5]")
。.appName(this.getClass.getName()stripSuffix( "$ 「))
.getOrCreate()
ヴァルsentenceData = spark.createDataFrame(配列(
(0.0、 "こんにちは、私はおよそスパークしている聞いた")、
(1.0、 "私はJavaは"ケース・スパーククラスを使用することがしたいです)、
(2.0、 "ロジスティック回帰回帰モデルがきちんとされているI")
))。toDF("ラベル"、 "文")
valをトークナイザ=新しいトークナイザ()。setInputCol( "文")。setOutputCol( "言葉")
のval wordsData = tokenizer.transform(sentenceData)
// HashingTF弓模型
// valをhashingTF =新しいHashingTF()
// .setInputCol( "言葉")。setOutputCol( "rawFeatures")。setNumFeatures(100)
// valをfeaturizedData = hashingTF.transform( wordsData)
// CountVectorizer弓模型
ヴァルcvModel:CountVectorizerModel =新しいCountVectorizer()
。.setInputCol( "言葉")setOutputCol( "rawFeatures")
。フィット(wordsData)
ヴァルfeaturizedData = cvModel.transform(wordsData)
ヴァルIDF =新しいIDF()。setInputCol( "rawFeatures")。setOutputCol( "フィーチャー")
のval idfModel = idf.fit(featurizedData)
ヴァルrescaledData = idfModel.transform(featurizedData)
rescaledData.printSchema()
valの語彙= cvModel.vocabulary
println(vocabulary.mkString(」、 "))
rescaledData.show(偽)
rescaledData.foreach(E => {
valのラベル= e.getAs [ダブル]("標識")
ヴァルSTR = e.getAs [文字列]("文")
ヴァル単語= e.getAs [mutable.WrappedArray [文字列]("言葉")。mkString("、 ")
ヴァルTF = e.getAs [スパーセベクター(" rawFeatures」)
ヴァルoriginWords = tf.indices。マップ(I =>語彙(I))。mkString( "")
ヴァルIDF = e.getAs [スパーセベクター]( "フィーチャー")
のprintln(
S "" "$ラベル$ strの
| $の言葉
| $ originWords TF $
| $ IDF" "" stripMargin。)
})
}
}