2011-05-15 14 views
5

Quiero encontrar una biblioteca o un algoritmo (así que escribo el código) para identificar los vecinos k más cercanos de una página web, donde la página web se define como un conjunto de palabras clave. Ya hice la parte donde extraigo las palabras clave.Algoritmo o biblioteca de vecino más cercano basado en palabras clave

No tiene que ser muy bueno, solo lo suficientemente bueno.

¿Alguien puede sugerir una solución o por dónde empezar? He revisado las conferencias de Yury Lifshits en el pasado, pero espero obtener algo listo, si es posible.

Se prefieren las bibliotecas de Java.

+0

¿está mapeando las ubicaciones, o desea un algoritmo que relacione las diferentes páginas según sus palabras clave solamente? – fasseg

+0

puede crear un gráfico ponderado no dirigido de nodos de sitio web, y las ponderaciones de borde representan la "cercanía". p.ej. cada palabra clave que dos sitios tienen en común podría ser un aumento en su peso de borde. hay muchas librerías de gráficos en Java que podrías usar. – fasseg

+0

@smegbrains, sí, creo que eso es lo que hice. He calculado la intersección de los pares de palabras clave (que creo que es equivalente a lo que usted llama el 'ancho del borde') – Ankur

Respuesta

2

Como dijo, ya tiene las palabras clave extraídas de una página. Supongo que representa cada documento/página por un vector de palabras. Algo así como una matriz document term-frequency.

Supongo que el vecino más cercano de una página es idealmente una página con contenido similar. Entonces, le gustaría encontrar documentos donde la frecuencia relativa de cada palabra sea similar a la que está buscando. Así que primero normalice la matriz de término de ejercicio WRT en cada fila; es decir, reemplace el recuento de ocurrencia por% de ocurrencia de tage.

A continuación, debe asignar cierta distancia entre 2 documentos representados por estos vectores. Puede usar la normal Euclidean distance o Manhattan Distance. Sin embargo, para el documento de texto, la medida de similitud que generalmente funciona mejor es Cosine Similarity. Use cualquier distancia o función de similitud que se adapte a su problema (recuerde que para el vecino más cercano desea minimizar la distancia, pero maximice la similitud).

Una vez que tenga los vectores y su función de distancia en su lugar, ejecutar el algoritmo o Nearest neighbourK-Nearest neighbour.

+0

Gracias, tienes razón, cada página tiene un vector (tamaño 6, por conveniencia) de palabras clave. Simplemente tomaré la intersección del conjunto de palabras clave para cada par y eso dará una medida simple y sucia de la similitud. – Ankur

+0

En caso de que se trate de un hobby/tarea, esa medida funcionará bien. Pero si está haciendo un trabajo ML, necesita utilizar algunos métodos más rigurosos y probados por el tiempo. – BiGYaN

Cuestiones relacionadas