Мне нужно классифицировать множество продуктов в дереве категорий, я тестирую 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
и т.д. и т.п.
Где первый столбец — это идентификатор категории, а остальные — слова, преобразованные в индекс.
это (псевдо) код, который я использую для обучения:
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 для файла трейнера?