计算 Lucene 文档之间的相似度和质心
为了对从 Lucene 获得的结果执行简单的聚类算法,我必须计算 Lucene 中两个文档之间的余弦相似度,我还需要能够制作一个质心文档来表示每个聚类的质心。
我能想到的就是使用 tf-idf 加权构建我自己的向量空间模型,使用 TermFreqVectors 和整体项频率来填充它。
我的问题是:这不是一个有效的方法,有更好的方法吗?
这感觉有点不清楚,因此也欢迎任何关于如何改进我的问题的建议。
In order to perform a simple clustering algorithm on results that I get from Lucene, I have to calculate Cosine similarity between 2 documents in Lucene, I also need to be able to make a centroid document to represent the centroid of each cluster.
All I can think of doing is building my own Vector Space model with tf-idf weighting, using the TermFreqVectors and Overall Term frequencies to populate it.
My question is: This is not an efficient approach, is there a better way to do this?
This feels a little unclear so any suggestions on how I can improve my question are also appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
马克,你可能会发现将 Mahout 与 Lucene 集成,使用 Java 进行 IR 数学 或 使用 Lucene 的向量空间分类器很有用。
Mark, you may find Integrating Mahout with Lucene, IR Math with Java or Vector Space Classifier Using Lucene useful.
简短的回答是:不。
我花了很多时间(太多了)研究这个问题,据我所知,您可以创建自己的向量空间模型并从中工作,或者使用 Mahout 来生成Mahout 向量,您可以从中进行文档之间的比较。我要继续做我自己的,所以我将这个问题标记为已回答!
The short answer is: No.
I have spent a lot of time (way way too much) looking into this, and as far as I can see, you can make your own Vector Space Model and work from that, or use Mahout to generate a Mahout Vector, which you can make comparisons between documents from. I am gonna go ahead and make my own, so I'm marking this question answered!
为了获得一个文档与另一个文档的相似性,为什么不使用一个文档的内容进行一个查询并针对索引运行查询?
这样,您将获得分数(余弦相似度值)
in order to get similarity of one document to the other, why not make a one query with the content of one document and run query against index?
that way, you will get score(cosine similarity values)