我想找到一個庫或算法(所以我自己編寫代碼)來識別網頁的最近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