我想找到一个库或一种算法(所以我自己写代码)来标识网页的最近k个邻居,其中该网页被定义为一组关键字。我已经完成了提取关键字的部分。
它不必很好,也可以足够好。
任何人都可以提出解决方案或从哪里开始。过去,我浏览过Yury Lifshits的演讲,但我希望尽可能地准备一些现成的东西。
首选Java库。
最佳答案
如您所说,您已经从页面中提取了关键字。我假设您用单词 vector 表示每个文档/页面。类似于document term-frequency矩阵。
我猜想页面的最近邻居最好是内容相似的页面。因此,您想查找每个单词的相对频率与您要搜索的单词相似的文档。因此,首先对每行的文档项矩阵WRT进行归一化;即用%tage发生次数代替发生次数。
接下来,您必须在这些 vector 表示的2个文档之间分配一些距离。您可以使用普通的Euclidean distance或Manhattan Distance。但是对于文本文档,通常最有效的相似性度量是Cosine Similarity。使用适合您问题的任何距离或相似性函数(记住要使距离最小化但使相似性最大化的最近邻居)。
一旦有了 vector 和距离函数,就可以运行Nearest neighbour或K-Nearest neighbour算法。