Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Ekstrakcja treści ze stron WWW

Autor: Piotr Karpiuk o wtorek 9. Kwiecień 2013

Zagadnienie „oczyszczania” dowolnej strony WWW ze śmieci (ang. clutter) w rodzaju reklamy, nagłówki, stopki, linki nawigacyjne itp. ma duże znaczenie praktyczne. Przydaje się przy indeksowaniu treści w Internecie na użytek późniejszego wyszukiwania, do czytania artykułów na urządzeniach mobilnych, czy po prostu prezentowania treści internetowych w przeglądarce, w przystępniejszej formie (inaczej poformatowanej, większa czcionka itp.).
Krótki rekonesans w Googlu pokazuje, że problem jest stary, a idealnego rozwiązania nie ma – choć jest wiele praktycznych narzędzi takich jak:

Sprawa się komplikuje, gdy zauważymy że podział zawartości strony WWW na śmieci i treść jest jednym z najprostszych możliwych – przydatny byłby dodatkowy podział treści na tytuł, wprowadzenie (ang. lead), treść właściwą (ang. article body), komentarze, oraz różne dodatki (ang. supplemential) w rodzaju obrazki z podpisami, czy ramki uzupełniające (ang. fact box), albo linki do artykułów o podobnej tematyce.
Programistów rzecz jasna interesuje wykorzystanie takiego mechanizmu we własnych programach.

Można się pokusić o własną implementację, która na dowolnej stronie WWW identyfikuje wzorce i wykrywa szablony posługując się pojęciami takimi jak:

  • największy ciągły obszar tekstu z najmniejszą ilością tagów HTML (ang. tag density),
  • podobieństwo sąsiednich bloków,
  • analiza elementów HTML (H1, P, DIV), nazw użytych klas CSS („footer”, „header”, „main”),

lub metrykami w rodzaju:

  • średnia długość zdania,
  • gęstość linków (ang. anchor percentage): stosunek liczby słów w linkach do liczby wszystkich słów w bloku,
  • iloraz znaków końca zdania do całkowitej liczby słów w bloku.

… co jest przedmiotem zainteresowania dużego grona osób, w tym naukowców i ich prac naukowych, takich jak ta. Są nawet zawody CleanEval gdzie różne algorytmy mogą porównać swą skuteczność.
Gdy programista chcący użyć mechanizmu oczyszczania stron WWW już zmęczy się kodowaniem i czytaniem prac naukowych, być może zechce po prostu skorzystać z jakiejś gotowej usługi webowej lub biblioteki w ulubionym języku programowania.
Okazuje się że i tu wybór jest dość duży. Pewnym standardem jest jedno z pierwszych narzędzi tego typu: Readability zaimplementowane jako skryptozakładka w przeglądarce, i doczekało się wielu implementacji w różnych językach. Można spotkać się z opinią, że najlepszą otwartoźródłową biblioteką do oczyszczania artykułów w sieci WWW jest Boilerpipe (Java) – patrz także demo. Uwaga: do poprawnego działania biblioteki dla języka polskiego trzeba zmodyfikować plik źródłowy de.l3s.boilerpipe.filters.english.TerminatingBlocksFinder.java – bez tego skuteczność mechanizmu będzie raczej zbyt niska.
Z usług webowych szczególnie polecam świetnie spisujący się również dla tekstów polskich ViewText.org, (darmowy, napisany w C#, ale nie ma opcji uruchomienia go na własnym serwerze, a źródła nie są dostępne nawet odpłatnie). Ponadto warto zerknąć na FiveFilters.org

Literatura

Share and Enjoy:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Blip
  • Blogger.com
  • Gadu-Gadu Live
  • LinkedIn
  • MySpace
  • Wykop

Zostaw komentarz

XHTML: Możesz użyć następujących tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>