我想找到一个库或算法(所以我自己编写代码)来识别网页的最近k个邻居,其中网页被定义为一组关键字。我已经完成了我提取关键字的部分。基于关键词的最近邻居算法或库
它不一定非常好,只是够好。
任何人都可以提出解决方案,或从哪里开始。我过去曾浏览过Yury Lifshits的讲座,但我希望尽可能做些现成的东西。
首选Java库。
我想找到一个库或算法(所以我自己编写代码)来识别网页的最近k个邻居,其中网页被定义为一组关键字。我已经完成了我提取关键字的部分。基于关键词的最近邻居算法或库
它不一定非常好,只是够好。
任何人都可以提出解决方案,或从哪里开始。我过去曾浏览过Yury Lifshits的讲座,但我希望尽可能做些现成的东西。
首选Java库。
正如你所说,你已经有了从页面中提取的关键字。我假设你用文字向量表示每个文档/页面。像一个document term-frequency矩阵。
我猜一个页面的最近邻居理想情况下是一个内容相似的页面。因此,您希望查找每个单词的相对频率与您正在搜索的单词相似的文档。所以首先规范文档项矩阵WRT的每一行;即通过%tage发生来替换发生次数。
接下来,您必须在由这些向量表示的2个文档之间分配一定的距离。您可以使用正常Euclidean distance或Manhattan Distance。但是对于文本文档来说,通常效果最好的相似性度量是Cosine Similarity。使用任何距离或相似性函数适合您的问题(请记住最近的邻居,你想尽量减少距离,但最大的相似性)。
一旦你有了矢量和距离函数,运行Nearest neighbour或K-Nearest neighbour算法。
您是在映射位置吗?或者您是否需要一种仅基于关键字将不同页面关联的算法? – fasseg 2011-05-15 06:03:34
您可以创建网站节点的加权无向图,并且边缘权重代表“接近度”。例如每个关键词有两个共同点,可能会增加其边缘权重。你可以使用java中的很多图库。 – fasseg 2011-05-15 06:07:00
@smegbrains,是的,我认为这就是我所做的。我计算了两个关键字(我认为相当于你所说的'边缘宽度')的交集 – Ankur 2011-05-15 09:12:53