在pyspark中使用tfidf向量的全对相似性



我试图在spark中找到基于文本的类似文档。我正在使用python与Spark。

到目前为止,我实现了RowMatrix, IndexedRowMatrix和coordinatemmatrix来设置它。然后我实现了columnsimilarity (DIMSUM)。DIMSUM的问题在于,它针对许多功能进行了优化,但只针对少数几个项目。http://stanford.edu/rezab/论文/dimsum.pdf

我们最初的方法是为所有文档中的所有单词创建tf-idf向量,然后将其转置到行矩阵中,其中每个单词有一行,每个项目有一列。然后我们运行columnsimilarity,得到一个坐标矩阵((item_i, item_j), similarity)。当列数>行数时,这不能很好地工作。

我们需要一种方法来计算大量项目的全对相似度,一些特征。#项目= 10 ^ 7 #特性= 10 ^ 4。在更高的层次上,我们尝试创建一个基于条目的推荐器,给定一个条目,它将只根据文本返回一些高质量的推荐。

我想把这写成一个评论而不是一个答案,但是SO不让我评论。

这可以通过使用ElasticSearch的more-like-this查询"简单"地解决。从docs中你可以看到它是如何工作的,以及考虑了哪些因素,即使你最终在Python中实现它,这些信息也应该是有用的。

他们还实现了其他有趣的算法,如有效项聚合。

最新更新