返回向量空间模型中表示的相似文档的算法
我有一个包含大约 30,000 个文档的 tf-idf 向量的数据库。
我想为给定的文档返回一组类似的文档 - 大约 4 个左右。
我考虑过在数据上实现 K-Means(聚类算法)(具有余弦相似度),但由于存在许多不确定性,我不知道这是否是最佳选择:我不确定要在初始聚类中放入什么,我不知道要创建多少个集群,我担心集群会太不平衡,我不确定结果质量会很好等等。
经验丰富的用户的任何建议和帮助将不胜感激。
谢谢你,
凯蒂
I have a DB containing tf-idf vectors of about 30,000 documents.
I would like to return for a given document a set of similar documents - about 4 or so.
I thought about implementing a K-Means (clustering algorithm) on the data (with cosine similarity), but I don't know whether it's the best choice because of many uncertainties: I'm not sure what to put in my initial clusters, I don't know how many clusters to create, I fear the clusters will be too unbalanced, I'm not sure the results quality will be good, etc.
Any advice and help from experienced users will be greatly appreciated.
Thank you,
Katie
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
那么就不要做k-means。只需通过 tf-idf 相似度返回四个最接近的文档,就像任何搜索引擎都会做的那样。您可以将其实现为 k 最近邻搜索,或者通过安装搜索引擎库并使用初始文档作为查询来更轻松地实现。我想到了 Lucene。
Then don't do k-means. Just return the four closest documents by tf-idf similarity, as any search engine would do. You can implement this as a k-nearest neighbor search, or more easily by installing a search engine library and using the initial document as a query. Lucene comes to mind.
如果我理解,您
你能分别估计这些阶段的运行时间吗?
30k 个向量总共有多大?
在 c 或 java 中,应该采用 < 1秒。
一般来说,进行一些粗略的估计
在变得花哨之前。
(顺便一提,
我发现 best-4 在直接 c 中比 std::partial_sort 更快更简单;嗯嗯。)
If I understand, you
Can you estimate the runtimes of these phases separately ?
how big are the 30k vectors all together ?
In c or java, that should take < 1 second.
In general, make some back-of-the-envelope estimates
before getting fancy.
(By the way,
I find best-4 faster and simpler in straight-up c than std::partial_sort; ymmv.)