2012-10-08 11 views
5

Ich versuche ein Empfehlungssystem zu erstellen, das dem Benutzer Webseiten basierend auf seinen Aktionen empfiehlt (Google-Suche, Klicks, kann er auch Webseiten explizit bewerten). Um eine Vorstellung davon zu bekommen, wie Google News es macht, zeigt es Nachrichtenartikel aus dem Web zu einem bestimmten Thema an. In technischer Hinsicht ist das Clustering, aber mein Ziel ist ähnlich. Es wird eine inhaltsbasierte Empfehlung basierend auf der Aktion des Benutzers sein.Webseiten-Empfehlungssystem

Also meine Fragen sind:

  1. Wie kann ich das Internet möglicherweise Schleppnetz verwandte Web-Seiten zu finden?
  2. Und welchen Algorithmus sollte ich verwenden, um Daten von der Webseite zu extrahieren, ist Textanalyse und Worthäufigkeit der einzige Weg, es zu tun?
  3. Zuletzt welche Plattform für dieses Problem am besten geeignet ist. Ich habe von Apache Mahout gehört und es kommt mit einigen wiederverwendbaren Algos, klingt es wie eine gute Passform?
+2

können Sie mehrere Bücher über Ihre Fragen schreiben. –

+0

Haha, klingen sie wie große Probleme? Nun, ich suche nach einer einfachen Lösung. Nur eine kurze Beschreibung, wie man sich einem solchen Projekt nähert. –

+1

[Programmierung Collective Intelligence] (http://shop.oreilly.com/product/9780596529321.do) ist eine einfache, mathematische Einführung in Machine Learning und enthält einen Anwendungsfall wie Ihre Frage. – Maurits

Antwort

9

Wie Thomas Jungblut sagte, könnte man mehrere Bücher über deine Fragen schreiben ;-) Ich werde versuchen, dir eine Liste mit kurzen Zeigern zu geben - aber sei dir bewusst, dass es keine gebrauchsfertige Standardlösung geben wird Lösung ...

  1. Crawling im Internet: Es gibt viele Toolkits sind, dies zu tun, wie Scrapy für Python, crawler4j und Heritrix für Java oder WWW :: Robot für Perl. Um den tatsächlichen Inhalt von Webseiten zu extrahieren, werfen Sie einen Blick auf Kesselpipe.

    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. Zu allererst oft können Sie Collaborative Filtering anstelle von inhaltsbasierten Ansätzen. Aber wenn Sie eine gute Berichterstattung haben wollen, vor allem im langen Schwanz, wird es keinen Weg geben, den Text zu analysieren. Eine Sache, die betrachtet werden sollte, ist die Themenmodellierung, z. LDA. Mehrere LDA-Ansätze sind in Mallet, Apache Mahout und Vowpal Wabbit implementiert. Für Indexierung, Suche und Textverarbeitung, werfen Sie einen Blick auf Lucene.Es ist eine großartige, reife Software.

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

    http://mahout.apache.org/

    http://hunch.net/~vw/

    http://lucene.apache.org/

  3. Neben Apache Mahout, die auch Dinge wie LDA (siehe oben), Clustering und Textverarbeitung enthält, gibt es auch andere Toolkits verfügbar, wenn Sie sich auf das kollaborative Filtern konzentrieren möchten: LensKit, das ebenfalls in Java implementiert ist, und MyMediaLite (Disclaimer: Ich bin der Hauptautor), der in C# implementiert ist, aber auch einen Java-Port hat.

    http://lenskit.grouplens.org/

    http://ismll.de/mymedialite

    https://github.com/jcnewell/MyMediaLiteJava

+0

danke zenog für deine beschreibende Antwort. Das ist die Antwort, nach der ich gesucht habe, sehr geschätzt :) –

4

Dies sollte gut zu lesen sein: Google news personalization: scalable online collaborative filtering

Es auf kollaboratives Filtern fokussiert ist, statt inhaltsbasierte Empfehlungen, aber es berührt einige sehr interessante Punkte wie Skalierbarkeit, Punkt Churn, Algorithmen, Systemaufbau und Auswertung.

Mahout hat sehr gute kollaborative Filtertechniken, was Sie als das Verhalten der Benutzer beschreiben (klicken, lesen, etc) und Sie könnten einige Inhalte basierend auf den Rescorer-Klassen einführen.

Sie können auch einen Blick auf Myrrix werfen, die in gewisser Weise die Entwicklung des Geschmacks (alias Empfehlungen) Teil von Mahout ist. Darüber hinaus ermöglicht es auch die Anwendung von Content-basierter Logik auf kollaborative Filterung mithilfe der Rescorer-Klassen. Wenn Sie an Mahout interessiert sind, wäre der Mahout in Action book der beste Startpunkt.

+0

Danke Astatic. Ich habe das von Ihnen vorgeschlagene Papier nicht gelesen, aber es wird hoffentlich behandelt, wie Google Webseiten aus dem gesamten Web im Vergleich zu Artikeln einer einzelnen Website findet. Myrrix sieht interessant aus, muss genauer hinschauen. Danke nochmal –