TL; DR; Я пытаюсь обучить существующий набор данных (Seq[Words]
с соответствующими категориями) и использовать этот подготовленный набор данных для фильтрации другого набора данных с использованием подобия категории.Как использовать RowMatrix.columnSymilarities (поиск подобия)
Я пытаюсь обучить корпус данных, а затем использовать его для анализа текста *. Я пробовал использовать NaiveBayes
, но, похоже, работает только с данными, которые у вас есть, поэтому алгоритм прогнозирования всегда будет возвращать что-то, даже если он ничего не соответствует.
Итак, теперь я пытаюсь использовать TFIDF и передавать этот вывод в RowMatrix и вычислять сходства. Но я не уверен, как запустить мой запрос (одно слово на данный момент). Вот что я пытался:
val rddOfTfidfFromCorpus : RDD[Vector]
val query = "word"
val tf = new HashingTF().transform(List(query))
val tfIDF = new IDF().fit(sc.makeRDD(List(tf))).transform(tf)
val mergedVectors = rddOfTfidfFromCorpus.union(sc.makeRDD(List(tfIDF)))
val similarities = new RowMatrix(mergedVectors).columnSimilarities(1.0)
Вот где я застрял (если я даже сделал все правильно, пока здесь). Я пробовал фильтровать similarities
i
и j
вплоть до частей TFIDF моего запроса и заканчивать пустой коллекцией.
Суть в том, что я хочу тренироваться на корпусе данных и находить, в какую категорию он попадает. Вышеприведенный код, по крайней мере, пытается довести его до одной категории и проверить, могу ли я получить прогноз от как минимум ....
* Обратите внимание, что это игрушка пример, так что мне нужно только то, что работает достаточно хорошо * Я использую искру 1.4.0
@ zero323 Исправлено, спасибо. И спасибо за редактирование кода .... забыл сдвинуть после того, как я закончил набирать –
. Добро пожаловать. Итак, можно объяснить, что именно вы пытаетесь сделать здесь? Я не могу понять ваш код :(Какая-то кластеризация? Поиск подобия? – zero323
Да. Поиск по подобию –