我想找到一个库或算法(所以我自己编写代码)来识别网页的最近k个邻居,其中网页被定义为一组关键字。我已经完成了提取关键字的部分。
它不一定非常好,只是足够好。
任何人都可以建议解决方案或从哪里开始。我过去曾看过Yury Lifshits的讲座,但我希望如果可能的话可以做一些现成的。
首选Java库。
答案 0 :(得分:2)
正如您所说,您已经拥有从页面中提取的关键字。我假设您通过单词向量表示每个文档/页面。类似document term-frequency矩阵的东西。
我猜一个页面的最近邻居理想情况下是一个内容相似的页面。因此,您希望找到每个单词的相对频率与您要搜索的相似频率的文档。因此,首先将每行的doc-term矩阵WRT标准化;即将发生次数替换为%tage发生。
接下来,您必须在这些矢量所代表的2个文档之间指定一些距离。您可以使用普通Euclidean distance或Manhattan Distance。但是对于文本文档,通常最有效的相似性度量是Cosine Similarity。使用适合您的问题的任何距离或相似度函数(记住您想要最小化距离的最近邻居;但最大化相似度)。
完成向量和距离函数后,运行Nearest neighbour或K-Nearest neighbour算法。