2011-05-15 3 views
5

웹 페이지의 가장 가까운 k 이웃을 식별하는 라이브러리 또는 알고리즘 (코드를 직접 작성하므로)을 찾고 싶습니다. 여기서 웹 페이지는 키워드 집합으로 정의됩니다. 나는 이미 키워드를 추출한 부분을 수행했다.키워드 기반의 가장 가까운 이웃 알고리즘 또는 라이브러리

매우 좋을 필요는 없습니다. 단지 충분합니다.

누구나 솔루션을 제안하거나 시작할 장소를 제안 할 수 있습니까? 나는 Yury Lifshits의 강연을 과거에 들여다 보았지만 가능한 한 기성품을 얻기를 희망한다.

Java 라이브러리가 선호됩니다.

+0

위치를 매핑 하시겠습니까? 아니면 키워드를 기반으로 다른 페이지와 관련된 알고리즘을 원하십니까? – fasseg

+0

당신은 웹 사이트 노드의 가중치없는 무향 그래프를 만들 수 있고, 가장자리의 가중치는 "근접성"을 나타낼 수 있습니다. 예 : 2 개의 위치가 공유지에서 가지고있는 각 키워드는 그들의 가장자리 weigth에있는 증가 일 수 있었다. 당신이 사용할 수있는 자바 그래프 라이브러리가 많이 있습니다. – fasseg

+0

@smegbrains, 네, 그렇게 생각합니다. 나는 두 키워드의 교차를 계산했다. (너는 '너비'라고 부르는 것에 해당한다.) – Ankur

답변

2

이미 말씀 드린대로 이미 페이지에서 키워드를 추출했습니다. 나는 당신이 각 문서/페이지를 단어들의 벡터로 표현한다고 가정하고있다. document term-frequency 행렬과 같은 것입니다.

페이지의 가장 가까운 이웃은 이상적으로 비슷한 내용의 페이지라고 생각합니다. 그래서 당신은 각 단어의 상대 빈도가 당신이 찾고있는 단어와 비슷한 문서를 찾고 싶습니다. 먼저 doc-term 행렬 WRT를 각 행으로 정규화합니다. 즉, 발생 카운트를 % tage 발생으로 대체하십시오.

다음으로이 벡터가 나타내는 두 문서 사이에 거리를 지정해야합니다. 일반 Euclidean distance 또는 Manhattan Distance을 사용할 수 있습니다. 그러나 텍스트 문서의 경우 일반적으로 가장 잘 작동하는 유사성 측정 값은 Cosine Similarity입니다. 거리 나 유사성 기능을 사용하여 문제를 해결하십시오 (가장 가까운 이웃에 대해 거리를 최소화하고 유사성을 최대화하길 바랍니다).

일단 벡터와 거리 함수를 사용하면 Nearest neighbour 또는 K-Nearest neighbour 알고리즘을 실행하십시오.

+0

감사합니다. 각 페이지에 키워드 (편의를 위해 크기 6)가 있습니다. 나는 단순히 각 쌍에 대한 키워드 집합의 교차점을 취할 것이고 그것은 유사성에 대한 단순하고 더러운 척도를 줄 것이다. – Ankur

+0

취미/숙제 인 경우 해당 측정 값은 정상적으로 처리됩니다. 그러나 ML 작업을 수행하는 경우 좀 더 엄격하고 시간을 테스트 한 방법을 사용해야합니다. – BiGYaN

관련 문제