カテゴリ ツリーで多くの製品を分類する必要があります。Spark と Mlib Naive Bayes でテストしています。しかし、TF-IDF の計算方法がわかりません。
次のようなトレーナー ファイルがあります。
#filenameTrainer:
103,355 4 50 60 71 72 66 73 57 53
103,35 45 55 65 75 85 66 73 57 53
104,355 41 51 61 71 72 67 73 58 54
などなど
最初の列はカテゴリ ID で、残りの列はインデックスに変換された単語です。
これは、トレーニングに使用する (疑似) コードです。
val conf = new SparkConf()
.setAppName("SparseNaiveBayes test")
.setMaster("local[1]")
.set("spark.executor.memory", "2g")
val sc = new SparkContext(conf)
val trainData = MLUtils.loadLabeledPoints(sc, filenameTrainer);
val trained:NaiveBayesModel = NaiveBayes.train(trainData);
カテゴリを検索しようとすると、次のようになります。
val testData:Vector = Vectors.dense(Array[Double](3, 35,45,55,65,75,85,66,73,92 ))
val result:Double = trained.predict(testData)
println("Result = " + result)
結果は正しく、カテゴリ 103 が返されます: 結果 = 103.0
問題は、トレーナー ファイルの TF-IDF をどのように計算できるかということです。