Я реализую скрытый семантический анализ LSA, используя eclipse Mars, java 8 и искровую искровую сборку-1.6.1-hadoop2.4.0.jar Я передал документы в качестве токенов, затем получил SVD и так далееHashingTF не дает уникальных индексов
HashingTF hf = new HashingTF(hashingTFSize);
JavaRDD<Vector> ArticlesAsV = hf.transform(articles.map(x->x.tokens));
JavaRDD<Vector> ArticlesTFIDF = idf.fit(ArticlesAsV).transform(ArticlesAsV);
RowMatrix matTFIDF = new RowMatrix(ArticlesTFIDF.rdd());
double rCond= 1.0E-9d;
int k = 50;
SingularValueDecomposition<RowMatrix, Matrix> svd = matTFIDF.computeSVD(k, true, rCond);
каждая вещь работает отлично, за исключением одного, что, когда я пытаюсь получить индексы терминов из hashingTF
int index = hf.indexOf(term);
я обнаружил, что есть много терминов, у которых имеются тот же индекс, некоторые из них я получил
0: Термин
1: все
1: Следующий
2: тт
3:
7: документ
9: например
9: Матрица
11: Документ
11: около
11: каждый
12: функция
12: случайный
14: this
14: обеспечивает
означает, что, когда я пытаюсь получить вектор термина с чем-то с ним, я могу получить вектор другого с тем же индексом, я сделал это после лемматизации и удаления остановки слово, но по-прежнему имеет ту же ошибку, есть ли что-то, что я пропустил, или ошибка с компонентами (например, MLip), которые необходимо обновить; как я могу сохранить уникальный для каждого термина.
Я получил его, я установил размер max() из 1048576, и он работал для 14696 уникальных терминов, и я получил 14453 уникальных указателей без 243 терминов, но будет ли он делать то же самое для 671333 уникальных условий. так как у меня есть больший размер данных для тестирования, будет ли он пропустить много терминов? – Yas
для 671333 я получил 489302, пропал без вести 185031, все еще не очень хорошо, мне нужен индекс для каждого термина, недостающие термины могут быть важными, любой способ работать с ним ??? – Yas
Вы можете увеличить максимальный размер более 1048576 с помощью конструктора ** HashingTF (numFeatures: Int) ** и надеяться, что он генерирует несколько столкновений. Даже если HashingTF пропущено много терминов, есть [две причины, по которым он все еще работает] (http://blog.someben.com/2013/01/hashing-lang/) –