Jaki jest stan wiedzy w ekstrakcji treści HTML?

Jest wiele prac naukowych na temat ekstrakcji treści HTML, np. Gupta & Kaiser (2005) ekstrakcja treści z dostępnych stron internetowych , a niektóre oznaki zainteresowania tutaj, np. jeden, Dwa , i trzy, ale nie bardzo rozumiem, jak dobrze praktyka tego ostatniego odzwierciedla idee tego pierwszego. Jaka jest najlepsza praktyka?

Wskaźniki do dobrych (w szczególności open source) implementacji i dobrych badań naukowych wdrożeń być czymś, czego szukam.

Postscript pierwszy: aby być precyzyjnym, rodzaj ankiety, której szukam, byłby artykułem (opublikowanym, niepublikowanym, cokolwiek), który omawia zarówno kryteria z literatury naukowej, jak i szereg istniejących wdrożeń i analizuje, jak nieudane są wdrożenia z punktu widzenia kryteriów. I, naprawdę, post na listę mailingową też by mi pasował.

Postscript drugi żeby było jasne, po Odpowiedź Petera Rowella, którą zaakceptowałem, widzimy, że to pytanie prowadzi do dwóch pod-pytań: (i) rozwiązany problem czyszczenia niezgodnego HTML, dla którego piękna zupa jest najbardziej zalecanym rozwiązaniem, I (ii) nierozwiązany problem lub oddzielenie cruft (głównie Strona dodana boilerplate i materiały promocyjne) od mięsa (treść, że rodzaj ludzi, którzy uważają, że strona może być interesująca w rzeczywistości znaleźć istotne. Aby sprostać aktualnemu stanowi, nowe odpowiedzi muszą dotyczyć cruft-from-meat peoblem.

Author: Community, 2009-12-26

8 answers

Ekstrakcja może oznaczać różne rzeczy dla różnych ludzi. To jedno, móc poradzić sobie ze wszystkimi pokręconymi HTML-ami, a piękna zupa jest wyraźnym zwycięzcą w tym dziale. Ale BS nie powie Ci, co to jest cruft, a co to jest mięso.

Rzeczy wyglądają inaczej (i brzydko), gdy rozważa się ekstrakcję treści z punktu widzenia lingwisty obliczeniowego. Analizując stronę interesuje mnie tylko konkretna treść strony, minus wszystkie nawigacja / reklama / itp. cruft. I nie można zacząć robić ciekawych rzeczy - analiza koegzystencji, odkrywanie fraz, generowanie wektorów ważonych atrybutów itp. -- dopóki nie pozbędziesz się cruft.

Pierwszy artykuł, do którego odnosi się OP, wskazuje, że to było to, co próbowali osiągnąć-przeanalizuj stronę, określ ogólną strukturę, a następnie odjmij to i Voila! masz tylko mięso , ale okazało się, że było trudniejsze, niż sądzili. Byli podchodząc do problemu z lepszej dostępności, podczas gdy byłem wczesnym poszukiwaczem egine, ale obaj doszliśmy do tego samego wniosku: {]}

Oddzielenie cruft od mięsa jest trudne. i (czytać między wierszami twojego pytania) nawet po usunięciu cruft, bez starannie zastosowanych znaczników semantycznych jest niezwykle trudno określić "intencję autora" artykułu. Uzyskanie mięsa z witryny takiej jak citeseer (czysto i przewidywalnie ułożone z bardzo wysoki stosunek sygnału do szumu) jest 2 lub 3 rzędy wielkości łatwiejsze niż radzenie sobie z losową treścią internetową.

BTW, jeśli masz do czynienia z dłuższymi dokumentami, możesz być szczególnie zainteresowany pracą wykonaną przez Marti Hearst (obecnie profesor na UC Berkely). Jej praca doktorska i inne prace na temat robienia odkryć subtopowych w dużych dokumentach dały mi dużo wglądu w robienie czegoś podobnego w mniejszych dokumentach (co, o dziwo, może być trudniejsze do z). Ale możesz to zrobić tylko po pozbyciu się cruft.


Dla nielicznych, którzy mogą być zainteresowani, oto trochę historii (prawdopodobnie Off Topic, ale jestem dziś w takim nastroju):

W latach 80-tych i 90-tych naszymi klientami były głównie agencje rządowe, których oczy były większe niż ich budżety i których marzenia sprawiały, że Disneyland wyglądał ponuro. Zbierali wszystko, co mogli dostać w swoje ręce, a następnie poszli szukać technologii srebrnej kuli, która w jakiś sposób (giant hand wave ) wyodrębnij "znaczenie" dokumentu. Racja. Znaleźli nas, ponieważ byliśmy dziwną małą firmą zajmującą się" wyszukiwaniem podobieństw treści " w 1986 roku. Daliśmy im kilka dem (prawdziwych, Nie fałszywych), które ich wystraszyły.

Jedną z rzeczy, które już wiedzieliśmy (i zajęło im dużo czasu, aby nam uwierzyć) było to, że każda kolekcja jest inna i potrzebuje własnego specjalnego skanera, aby poradzić sobie z tymi różnicami. Na przykład, jeśli wszystko, co robisz, to żarcie proste historie z gazet, życie jest dość łatwe. Nagłówek w większości mówi coś ciekawego, a historia jest napisana w stylu piramidy-pierwszy akapit lub dwa ma mięso kto / co / gdzie / kiedy, a następnie następujące paras rozwinąć na tym. Jak mówiłem, to proste.

A może artykuły z czasopism? O Boże, nie zaczynaj! Tytuły są prawie zawsze bez znaczenia, a struktura różni się od jednego magazynka do następnego, a nawet od jednej sekcji magazynka do następnej. Zdobądź kopię "Wired" i "Atlantic Monthly". Spójrz na główny artykuł i spróbuj dowiedzieć się znaczące podsumowanie 1 paragrafu tego, o czym jest artykuł. Teraz spróbuj opisać, jak program mógłby osiągnąć to samo. Czy we wszystkich artykułach obowiązuje ten sam zestaw reguł? Nawet artykuły z tego samego magazynu? Nie, Nie mają.

Przepraszam, że brzmi to jak kurdupel, ale ten problem jest naprawdę trudny .

O dziwo, wielki powód dla google jest tak samo skuteczne (z perspektywy Wyszukiwarki), że przywiązują dużą wagę do słów w linku i otaczających link z innej strony. Ten tekst linku reprezentuje rodzaj mini-podsumowania wykonanego przez człowieka witryny/strony, do której linkuje, dokładnie tego, co chcesz podczas wyszukiwania. I działa w prawie wszystkich stylach gatunku/układu informacji. To jest pozytywnie genialny wgląd i żałuję, że sam go nie miałem. Ale to nie zrobiłoby mojego klienci są dobrzy, ponieważ nie było linków z wczorajszej Moskiewskiej telewizji do jakiejś nagranej przez nich wiadomości teletypowej, lub do jakiejś źle odczytanej wersji egipskiej gazety.

/ mini-rant-and-trip-down-memory-lane

 18
Author: Peter Rowell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-26 03:05:54

Jedno słowo: boilerpipe.

W przypadku domeny wiadomości, na reprezentatywnym korpusie, mamy teraz 98% / 99% dokładności ekstrakcji (avg/mediana)

Również całkiem niezależny od języka (dziś nauczyłem się, że działa również na nepalski).

Zastrzeżenie: jestem autorem tej pracy.

 14
Author: Christian Kohlschütter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-25 20:29:36

Widziałeś boilerpipe ? Znalazłem to wspomniane w podobnym pytaniu.

 6
Author: hippietrail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-21 17:27:40

Natknąłem się http://www.keyvan.net/2010/08/php-readability/

W zeszłym roku przeportowałem czytelność Arc90 do wykorzystania w projekcie pięć filtrów. To już ponad rok i Czytelność znacznie się poprawiła - dzięki Chrisowi Dary i reszcie zespół Arc90.

W ramach aktualizacji do pełnego tekstu Serwis RSS zacząłem portować więcej najnowsza Wersja (1.6.2) do PHP i kod jest teraz online.

Dla każdego, kto nie znajomy, czytelny został stworzony do użytku jako dodatek do przeglądarki (książeczka). Jednym kliknięciem przekształca strony internetowe dla łatwego czytania i usuwa bałagan. Jabłko niedawno włączyłem go do Safari Czytelniku.

Jest również bardzo przydatny do treści ekstrakcji, dlatego chciałem najpierw przenieś go do PHP.

 5
Author: Lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-20 12:39:47

Istnieje kilka narzędzi open source, które wykonują podobne zadania ekstrakcji artykułu. https://github.com/jiminoc/goose który był open source przez Gravity.com

MA informacje na wiki, jak również źródło, które możesz wyświetlić. Istnieją dziesiątki testów jednostkowych, które pokazują tekst wydobyty z różnych artykułów.

 3
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-08 16:07:12

Beautiful Soup jest solidnym parserem HTML napisanym w Pythonie.

Z wdziękiem obsługuje HTML ze złym znacznikiem i jest również dobrze zaprojektowana jako Biblioteka Pythona, wspierająca Generatory iteracji i wyszukiwania, notacja kropkowa dla dostępu potomnego (np. access <foo><bar/></foo>' usingdoc.foo.bar`) oraz Unicode.

 2
Author: Marcelo Cantos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-26 01:46:06

Pracowałem z Peterem Rowellem przez lata nad wieloma różnymi projektami wyszukiwania informacji, z których wiele wymagało bardzo trudnego wydobycia tekstu z różnych źródeł znaczników.

Obecnie koncentruję się na wydobyciu wiedzy z" firehose " źródeł takich jak Google, w tym ich rur RSS, które odkurzają ogromne ilości lokalnych, regionalnych, krajowych i międzynarodowych artykułów informacyjnych. W wielu przypadkach tytuły są bogate i znaczące, ale są tylko "hakami" używanymi do rysowania ruch do strony internetowej, gdzie faktyczny artykuł jest bezsensownym akapitem. Wydaje się, że jest to rodzaj "spamu na odwrót", który ma na celu zwiększenie oglądalności ruchu.

Aby sortować artykuły nawet z najprostszą metryką długości artykułu, musisz być w stanie wyodrębnić zawartość ze znaczników. Egzotyczne znaczniki i skrypty, które dominują w treściach internetowych, obecnie przerywają większość pakietów do parsowania open source, takich jak Beautiful Soup, gdy są stosowane do dużych woluminów charakterystycznych dla Google i podobnych źródła. Odkryłem, że 30% lub więcej wydobytych artykułów łamie te pakiety z reguły. To spowodowało, że skupiliśmy się na tworzeniu inteligentnych parserów opartych na znakach o bardzo niskim poziomie, aby oddzielić surowy tekst od znaczników i skryptów. Im bardziej drobnoziarniste parsowanie (tj. partycjonowanie treści), tym bardziej inteligentne (i ręcznie wykonane) muszą być twoje narzędzia. Aby uczynić rzeczy jeszcze bardziej interesującymi, masz ruchomy cel, ponieważ tworzenie stron internetowych nadal się zmienia i zmienia wraz z rozwój nowych metod skryptowych, znaczników i rozszerzeń językowych. Ma to tendencję do faworyzowania dostarczania informacji w oparciu o usługi, w przeciwieństwie do aplikacji "zawiniętych w folię termokurczliwą".

Patrząc wstecz na przestrzeni lat wydaje się, że niewiele artykułów naukowych napisano o mechanice niskiego poziomu (tj. "praktyce tej pierwszej", do której się odwołujesz) takiej ekstrakcji, prawdopodobnie dlatego, że jest tak specyficzna dla domeny i treści.

 2
Author: Jonathan Hujsak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-26 14:30:36

Jeśli chcesz wyodrębnić zawartość ze stron, które w dużym stopniu wykorzystują javascript, selenium remote control może wykonać to zadanie. To działa nie tylko do testowania. Głównym minusem tego jest to, że będziesz używać znacznie więcej zasobów. Plusem jest to, że otrzymasz znacznie dokładniejszy kanał danych z bogatych stron/aplikacji.

 0
Author: achristi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-16 00:06:48