HashTFとCountVectorizerでNLP -Sparkプロセスモデル

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。)
    })
  }
}

 

公開された276元の記事 ウォンの賞賛109 ビュー240 000 +

おすすめ

転載: blog.csdn.net/lvtula/article/details/105242498