【发布时间】:2015-12-30 22:30:39
【问题描述】:
TL;DR;我正在尝试训练现有数据集(Seq[Words] 具有相应的类别),并使用该训练数据集使用类别相似性过滤另一个数据集。
我正在尝试训练一个数据语料库,然后将其用于文本分析*。我试过使用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 的部分,并最终得到一个空集合。
要点是我想在一个数据语料库上进行训练并找到它属于哪个类别。上面的代码至少试图将它归结为一个类别并检查我是否至少可以从中得到预测....
*请注意,这是一个玩具示例,所以我只需要运行良好的东西 *我使用的是 Spark 1.4.0
【问题讨论】:
-
@zero323 已更正,谢谢。并感谢您对代码的编辑....在我完成输入后忘记转移
-
不客气。那么,可以解释一下您到底想在这里做什么吗?我无法理解您的代码:(某种聚类?相似性搜索?
-
是的。相似性搜索
-
我添加了一个 TLDR...抱歉,ml 是我在 Spark 中最薄弱的方面...。
标签: scala machine-learning apache-spark apache-spark-mllib