我正在使用 eclipse Mars、java 8 和 spark-spark-assembly-1.6.1-hadoop2.4.0.jar 实现潜在语义分析 LSA,我将文档作为令牌传递,然后得到 SVD 等等
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:tt
3:
7:文档
9:这样
9:矩阵
11:文档
11:大约
11:每个
12:函数
12:机会
14:这个
14:提供
意味着,当我尝试用它来获取术语的向量,我可能会得到另一个具有相同索引的向量,我在词形还原和删除停用词之后做了它,但仍然得到相同的错误,有什么我错过了,或需要更新的组件(例如 MLip)出错;我怎样才能为每个术语保持唯一性。