2012-10-08 9 views
5

Estoy intentando crear un sistema de recomendación que recomiende páginas web al usuario en función de sus acciones (búsqueda de Google, clics, también puede calificar páginas web explícitamente). Para tener una idea de la forma en que lo hace google news, muestra artículos de noticias de la web sobre un tema en particular. En términos técnicos, es agrupamiento, pero mi objetivo es similar. Será una recomendación basada en el contenido basada en la acción del usuario.Sistema de recomendación de página web

Así que mis preguntas son:

  1. ¿Cómo es posible arrastre a la Internet para encontrar páginas web relacionadas?
  2. ¿Y qué algoritmo debo usar para extraer datos de la página web es el análisis textual y la frecuencia de palabras la única forma de hacerlo?
  3. Por último, qué plataforma es la más adecuada para este problema. He oído hablar de Apache mahout y viene con algunos algos reutilizables, ¿suena como un buen ajuste?
+2

Puede escribir varios libros acerca de sus preguntas. –

+0

jaja, ¿suenan como grandes problemas? Bueno, estoy buscando una solución simple. Solo una breve descripción de cómo abordar un proyecto de este tipo. –

+1

[Programming Collective Intelligence] (http://shop.oreilly.com/product/9780596529321.do) es una introducción fácil y sin matemáticas al aprendizaje automático y contiene un caso de uso como su pregunta. – Maurits

Respuesta

9

como dijo Thomas Jungblut, uno podría escribir varios libros sobre sus preguntas ;-) Trataré de darle una lista de sugerencias breves, pero tenga en cuenta que no habrá listas de uso listas para usar. solución ...

  1. arrastra el Internet: Hay un montón de juegos de herramientas para hacer esto, al igual que Scrapy para Python, crawler4j y Heritrix para Java, o WWW :: robot para Perl. Para extraer el contenido real de las páginas web, eche un vistazo a boilerpipe.

    http://scrapy.org/

    http://crawler.archive.org/

    http://code.google.com/p/crawler4j/

    https://metacpan.org/module/WWW::Robot

    http://code.google.com/p/boilerpipe/

  2. En primer lugar, a menudo se puede utilizar el filtrado de colaboración en lugar de enfoques basados ​​en los contenidos. Pero si quiere tener una buena cobertura, especialmente en la larga cola, no habrá forma de analizar el texto. Una cosa para mirar es el modelado de temas, p. LDA. Varios enfoques LDA se implementan en Mallet, Apache Mahout y Vowpal Wabbit. Para indexar, buscar y procesar texto, eche un vistazo a Lucene.Es una pieza de software increíble y madura.

    http://mallet.cs.umass.edu/

    http://mahout.apache.org/

    http://hunch.net/~vw/

    http://lucene.apache.org/

  3. Además Apache Mahout que también contiene cosas como LDA (véase más arriba), el agrupamiento, y el procesamiento de texto, también hay otros conjuntos de herramientas disponible si desea enfocarse en el filtrado colaborativo: LensKit, que también se implementa en Java, y MyMediaLite (descargo de responsabilidad: soy el autor principal), que se implementa en C#, pero también tiene un puerto Java.

    http://lenskit.grouplens.org/

    http://ismll.de/mymedialite

    https://github.com/jcnewell/MyMediaLiteJava

+0

gracias zenog por su respuesta descriptiva. Esa es la respuesta que estaba buscando, muy apreciada :) –

4

Esto debería ser una buena lectura: Google news personalization: scalable online collaborative filtering

Se centró en el filtrado colaborativo en lugar de recomendaciones basadas en contenido, pero que toca algunos puntos muy interesantes como la escalabilidad, la rotación artículo, algoritmos, la configuración del sistema y la evaluación.

Mahout tiene muy buenas técnicas de filtrado colaborativo, que es lo que usted describe como el uso del comportamiento de los usuarios (clic, leer, etc.) y puede introducir contenido basado en las clases rescorer.

Es posible que también desee echar un vistazo a Myrrix, que de alguna manera es la evolución de la porción de sabor (también conocido como recomendaciones) de Mahout. Además, también permite aplicar lógica basada en contenido sobre el filtrado colaborativo usando las clases rescorer.

Si está interesado en Mahout, el Mahout in Action book sería el mejor lugar para comenzar.

+0

Gracias Astatic. No he leído el documento que sugirió, pero espero que cubra cómo google encuentra páginas web de toda la web en comparación con artículos de un solo sitio. Myrrix parece interesante, necesita mirar más adentro. Gracias de nuevo –

Cuestiones relacionadas