【发布时间】:2016-09-07 02:44:02
【问题描述】:
我正在使用 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)的错误;我怎样才能为每个术语保持唯一性。
【问题讨论】:
标签: java apache-spark svd lsa