2012-10-08 40 views
5

Próbuję zbudować system rekomendujący, który polecałby strony internetowe użytkownikowi na podstawie jego działań (wyszukiwanie google, kliknięcia, może również jawnie oceniać strony internetowe). Aby uzyskać pomysł w taki sposób, w jaki robią to wiadomości google, wyświetla on artykuły z wiadomości na dany temat. Pod względem technicznym to klastrowanie, ale mój cel jest podobny. Będzie to zalecenie oparte na treści na podstawie działania użytkownika.System rekomendacji strony internetowej

Więc moje pytania to:

  1. Jak mogę ewentualnie włoka z Internetu w celu znalezienia stron internetowych związanych z?
  2. A jaki algorytm należy użyć do wyodrębnienia danych ze strony internetowej to tylko analiza tekstowa i częstotliwość słów?
  3. Wreszcie, która platforma najlepiej nadaje się do tego problemu. Słyszałem o mahoutach Apache i pochodzi z algosami wielokrotnego użytku, czy to brzmi jak dobre dopasowanie?
+2

Można napisać wiele książek o pytania. –

+0

haha, czy brzmią jak duże problemy? Cóż, szukam prostego rozwiązania. Tylko krótki opis, jak podejść do takiego projektu. –

+1

[Programowanie wywiadu kolektywnego] (http://shop.oreilly.com/product/9780596529321.do) to prosty, bezk matowy wstęp do uczenia maszynowego i zawiera przypadek użycia, jak na przykład twoje pytanie. – Maurits

Odpowiedz

9

jak powiedział Thomas Jungblut, można napisać kilka książek na swoje pytania ;-) Postaram się podać listę krótkich wskazówek - ale należy pamiętać, że nie będzie gotowych do użycia z półki rozwiązanie ...

  1. Crawling internecie: Istnieje wiele zestawów narzędzi dla tej operacji, jak Scrapy dla Pythona, crawler4j i Heritrix dla Java lub WWW :: Robot na Perl. Aby wyodrębnić rzeczywistą zawartość ze stron internetowych, spójrz na rurę bojową.

    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. Przede wszystkim, często można użyć filtrowania współpracy zamiast podejść opartych na treści. Ale jeśli chcesz mieć dobry zasięg, szczególnie w długim ogonie, nie będzie możliwości przeanalizowania tekstu. Na uwagę zasługuje modelowanie tematu, np. LDA. Kilka podejść LDA zostało zaimplementowanych w Mallet, Apache Mahout i Vowpal Wabbit. Do indeksowania, wyszukiwania i przetwarzania tekstu, spójrz na Lucene.To niesamowity, dojrzały program.

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

    http://mahout.apache.org/

    http://hunch.net/~vw/

    http://lucene.apache.org/

  3. Poza Apache Kornak, która zawiera również takie rzeczy jak LDA (patrz wyżej), grupowanie i obróbki tekstu, istnieją również inne zestawy narzędzi dostępne, jeśli chcesz skoncentrować się na filtrowaniu grupowym: LensKit, który jest również zaimplementowany w Javie i MyMediaLite (disclaimer: jestem głównym autorem), który jest zaimplementowany w języku C#, ale ma również port Java.

    http://lenskit.grouplens.org/

    http://ismll.de/mymedialite

    https://github.com/jcnewell/MyMediaLiteJava

+0

dzięki zenog za odpowiedź opisową. Oto odpowiedź, której szukałem, bardzo doceniam :) –

4

To powinien być dobry do odczytu: Google news personalization: scalable online collaborative filtering

To koncentruje się na współpracy filtrowania zamiast zaleceń treści oparte, ale dotyka kilka bardzo interesujących punktów, takich jak skalowalność, poz rezygnacji, algorytmy, konfiguracji systemu i oceny.

Mahout ma bardzo dobre techniki filtrowania kolaboracyjnego, które opisujesz jako zachowanie użytkowników (kliknij, czytaj, itp.) I możesz wprowadzić pewne treści oparte na klasach rescorer.

Być może zechcesz również rzucić okiem na Myrrix, która jest pod pewnymi względami ewolucją smaku (czyli rekomendacji) części Mahouta. Ponadto pozwala również na stosowanie logiki opartej na treści, a także na filtrowanie grupowe przy użyciu klas rescorer.

Jeśli jesteś zainteresowany Mahoutem, najlepiej byłoby zacząć od Mahout in Action book.

+0

Dziękuję Astatic. Nie przeczytałem artykułu, który zasugerowałeś, ale mam nadzieję, że obejmuje ono sposób wyszukiwania stron internetowych z całej sieci w porównaniu do artykułów z jednej witryny. Myrrix ma ciekawą potrzebę przyjrzenia się temu. Jeszcze raz dziękuję –