• Nie Znaleziono Wyników

Index of /rozprawy2/10469

N/A
N/A
Protected

Academic year: 2021

Share "Index of /rozprawy2/10469"

Copied!
133
0
0

Pełen tekst

(1)Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Katedra Informatyki. Krzysztof Dorosz. Strategie monitorowania polskojęzycznej informacji w Internecie. Rozprawa doktorska pod kierunkiem prof. dr hab. Wiesława Lubaszewskiego. Kraków, 2012.

(2) Dla Żony.

(3) Spis treści. Spis treści. i. 1 Wprowadzenie. 1. 2 Wprowadzenie do zagadnień crawlingu 2.1 Definicja i cechy crawlingu . . . . . . . . . . . . . . . . . . . 2.2 Cele crawlingu . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Crawling zorientowany tematycznie . . . . . . . . . . . . . . 2.4 Modele architektur systemów crawlingowych . . . . . . . . . 2.4.1 Crawler jednostanowiskowy . . . . . . . . . . . . . . 2.4.2 Crawler scentralizowany klient-serwer . . . . . . . . 2.4.3 Crawler rozproszony wieloagentowy . . . . . . . . . 2.5 Repozytorium linków URL . . . . . . . . . . . . . . . . . . 2.5.1 Wymagania dotyczące repozytoriów linków . . . . . 2.5.2 Relacyjna baza danych . . . . . . . . . . . . . . . . . 2.5.3 Dedykowane struktury pamięciowe . . . . . . . . . . 2.5.4 Porównanie i wybór metody . . . . . . . . . . . . . . 2.6 Definicja zadania crawlingowego i rozwiązywanie konfliktów 3 Eksperymenty z użyciem metod klasycznych 3.1 Architektura systemu crawlingowego . . . . . 3.2 Korpusy testowe . . . . . . . . . . . . . . . . 3.2.1 Korpus sport.onet.pl . . . . . . . . . . 3.2.2 Korpus wiadomosci.onet.pl . . . . . . 3.3 Metody klasyczne strategii doboru linków . . 3.3.1 Metoda BFS . . . . . . . . . . . . . . 3.3.2 Metoda DFS . . . . . . . . . . . . . . 3.3.3 Metoda Backlink . . . . . . . . . . . . 3.3.4 Metoda Reverse Backlink . . . . . . . 3.4 Wyniki i analiza eksperymentów . . . . . . . i. doboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. 9 9 10 12 13 13 14 14 15 15 19 20 26 27. linków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. 29 30 32 32 33 33 33 33 33 34 34. . . . . . . . . . . . . ..

(4) ii. 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6. Eksperyment 1. Eksperyment 2. Eksperyment 3. Eksperyment 4. Eksperyment 5. Wnioski . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 34 35 37 38 38 39. 4 Semantyczna ocena tekstu 4.1 Rozpoznawanie języka dokumentu . . . . . . . . . . . . . . 4.1.1 Słownik fleksyjny języka polskiego . . . . . . . . . . 4.2 Segmentacja dokumentu na teksty spójne . . . . . . . . . . 4.3 Ocena informacji tekstowej metodą słów kluczowych . . . . 4.4 Ocena informacji tekstowej metodą Conceptual Dependency. . . . . .. . . . . .. . . . . .. . . . . .. 41 51 52 55 64 64. 5 Semantyczne strategie doboru linków 5.1 Architektura i implementacja ekstraktora skryptów . . . . . 5.1.1 Klasa Pyxtractor . . . . . . . . . . . . . . . . . . . . 5.1.2 Klasa Script . . . . . . . . . . . . . . . . . . . . . . . 5.1.3 Klasa Text . . . . . . . . . . . . . . . . . . . . . . . 5.1.4 Klasa Token . . . . . . . . . . . . . . . . . . . . . . . 5.1.5 Klasy TokenWord, TokenCite, TokenUnknownWord 5.1.6 Reguły dopasowania skryptu . . . . . . . . . . . . . 5.2 Skrypty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Skrypt emerytury.yml . . . . . . . . . . . . . . . . . 5.2.2 Skrypt sukcesy naukowe.yml . . . . . . . . . . . . . 5.3 Semantyczne strategie doboru linków . . . . . . . . . . . . . 5.3.1 Strategia Page . . . . . . . . . . . . . . . . . . . . . 5.3.2 Strategia Url . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Strategia Url+Page . . . . . . . . . . . . . . . . . . 5.4 Złożoność pamięciowa i czasowa strategii crawlingu . . . . . 5.5 Pomocnicza miara zbieżności tematycznej crawlingu . . . . 5.6 Wyniki eksperymentów . . . . . . . . . . . . . . . . . . . . 5.6.1 Eksperyment 6. . . . . . . . . . . . . . . . . . . . . . 5.6.2 Eksperyment 7. . . . . . . . . . . . . . . . . . . . . . 5.6.3 Eksperyment 8. . . . . . . . . . . . . . . . . . . . . . 5.6.4 Eksperyment 9. . . . . . . . . . . . . . . . . . . . . . 5.6.5 Eksperyment 10. . . . . . . . . . . . . . . . . . . . . 5.6.6 Wnioski . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. 73 73 74 75 76 76 77 77 78 78 79 81 81 82 82 82 83 85 85 88 90 92 94 96. 6 Podsumowanie 97 6.1 Zastosowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100.

(5) iii. Bibliografia. 101. Dodatki. 107. A Edytor i tester skryptów. 108. B System Monitoringu Polskojęzycznego B.1 Architektura MPI . . . . . . . . . . . B.2 Moduł crawlingowy . . . . . . . . . . . B.3 Moduł ekstrakcji informacji z tekstu . B.4 Moduł korpusów tekstów . . . . . . .. Internetu . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 119 119 119 121 121. Spis rysunków. 123. Spis tabel. 126. Skorowidz. 127.

(6) Rozdział 1. Wprowadzenie. Wyszukiwanie informacji (ang. IR – „Information Retrieval”) jest od dawna obszarem badań naukowych. Szczególną rolę odgrywa ono w kontekście analizy zbiorów tekstowych, które zaczęły masowo pojawiać się od czasów Gutenberga umożliwiając ich składowanie – szczególnie intensywniejsze wraz z nastaniem ery treści cyfrowych. Posiadając obszerne zbiory tekstów – czyli takie, w których już sama ilość stanowi problem dla człowieka ze względu czas potrzebny do przeczytania całości zbioru, pojawia się naturalne pytanie: w jaki sposób korzystać z tej wiedzy? Typowymi problemami jakie się pojawiają są zagadnienia budowy metody odnajdywania danych faktograficznych (ang. „data retrieval”), odnajdywania dokumentów interesujących ze względu na tematykę/wzorzec (ang. „document retrieval”), czy w końcu metod odnajdywania odpowiedzi na zadane pytanie (ang. „information extraction”). Wszystkie te zagadnienia powiązane są ze sobą i często występują zamiennie, choć posiadają odrębne metody, teorię i praktykę. W roku 1945 Vannevar Bush opublikował wizjonerski artykuł „As We May Think” [5], który uznaje się za początek etapu nowoczesnego podejścia do wyszukiwania informacji. Choć różne uniwersalne techniki indeksowania i katalogowania tekstów, np. z użyciem słów kluczowych, były już znane od czasów antycznych (np. w Bibliotece Aleksandryjskiej), to dopiero powojenny XX-wieczny rozwój przemysłu elektroniczno-informatycznego (w dużej mierze inicjowany pobudkami militarnymi) katalizowany przez potrzebę przetwarzania i wyszukiwania niezwykle dużej ilości materiałów tekstowych umożliwił zdecydowany rozwój tej dziedziny naukowej. Praca Busha wśród wielu różnych przemyśleń zawierała wizjonerski pomysł związany z utworzeniem maszyny dysponującej kolektywną pamięcią zorganizowaną poprzez wprowadzoną przez niego koncepcją memexu. Koncepcja ta, której nazwa stanowi złączenie angielskich słów memory i index, stanowiła pewnego rodzaju protoplastę technologii hipertekstowych. Bush w swym błyskotliwym artykule przewidział również koncepcje komputerów osobistych, sieci 1.

(7) 2. Internet, rozpoznawania mowy, encyklopedie elektroniczne. Wyrażone przez Busha wizje i obawy związane ze sposobem dostępu do wiedzy w sposób taki jaki umysł człowieka potrafi przetwarzać (a więc za pomocą pojęć i skojarzeń, a nie numerów identyfikacyjnych kolejnych zbiorów) inspirowały naukowców przez kolejne lata. Pierwsze zautomatyzowane systemy wyszukiwania informacji pojawiły się w latach ‘50 i ‘60 XX wieku i stanowiły echo militarnych problemów USA związanych z umożliwieniem indeksowania i przeszukiwania wojskowych doświadczeń naukowych [65]. W latach ’70 XX wieku powstał pierwszy system dużej skali wyszukiwania informacji o nazwie Lockheed Dialog. Przełomowymi dla dziedziny wydarzeniami były również powołanie w roku 1987 przez Defense Advanced Research Projects Agency (DARPA) programu konferencji MUC (Message Understanding Conference) [25] oraz powołanie programu TREC (Text Retrieval Conference) w 1992 roku przez National Institute of Standards and Technology razem z US Department of Defense. Oba działania skupiały się silnie na utworzeniu infrastruktury dla naukowców w postaci sesji warsztatowych, która umożliwiłaby powstanie zaawansowanych badań w dziedzinie przetwarzania i wyszukiwania informacji z tekstów. MUC został zakończony w roku 1997, natomiast TREC odbywa się do dnia dzisiejszego. Typowym modelowym problemem dziedziny Document Retrieval jest klasyfikacja dokumentów ze względu na przynależność do zadanej klasy tematycznej. Rolą algorytmu jest klasyfikacja dokumentów w zbiorze wejściowym względem konkretnego tematu wyszukania. Wyjście algorytmu stanowi podzbiór dokumentów należących do zadanej klasy związanej z tematem wyszukania. Innymi słowy na wyjściu oczekuje się dokumentów, które są interesujące z punktu widzenia zadanego tematu wyszukania. Stosuje się także bardziej precyzyjne podejścia, w których zakłada się że metoda zwraca uporządkowany ciąg dokumentów posortowany według stopnia przynależności do klasy. Stopień ten, najczęściej wyrażony za pomocą liczby, odzwierciedlać ma jak bardzo dokument jest interesujący z punktu widzenia tematu wyszukania. W celu oceny jakości działania algorytmu document retrieval należy dysponować zbiorem dokumentów wraz z przypisanymi ocenami, tzn. każdy element powinien posiadać znaną z góry przynależność do zadanej klasy. Do porównania jakości różnych metod IR należy skorzystać z miar pozwalających na precyzyjne (liczbowe) wyrażenie tej jakości i jej porównanie. Jedną z najbardziej znanych i popularnych miar jest miara precision–recall– fall-out (dokładność–pełność–fall-out). Miara dokładności (ang. „precision”) odpowiada na pytanie w jakim stopniu metoda poprawnie klasyfikuje dokumenty, które zwróciła jako pasujące do wzorca. Miarę liczy się jako stosunek ilości dokumentów rzeczywiście należących do zadanej klasy jaką zwróciła metoda do ilości wszystkich dokumentów jaką zwróciła metoda. Warto zauważyć, że sam parametr dokładności niewiele mówi o pełnej jakości metody. Przykładowo innym wyznacznikiem jakości może być liczba dokumentów, która w ogóle nie została.

(8) 3. odkryta podczas klasyfikacji. Łatwo bowiem utworzyć algorytm z bardzo silnym warunkiem pasującym tylko do jednego dokumentu należący do klasy tematu wyszukania i w ten sposób uzyskać dokładność równą 1 (najlepszą). O ile dokładność w tym przypadku będzie najwyższa naturalnie wiadomo, że metoda taka nie ma dobrej jakości, ponieważ pominęła potencjalnie dużą liczbę innych dokumentów z tej klasy. Poszerzenie oceny jakości wymaga więc skorzystania z drugiej miary – pełności (ang. „recall”), którą definiuje się jako stosunek ilości wszystkich dokumentów z zadanej klasy zwróconych przez metodę do liczby wszystkich dokumentów z zadanej klasy w całym zbiorze stanowiącym wejście metody IR. Połączenie informacji powyższych dwóch miar daje więc bardzo dobry obraz na temat jakości metody, mówiący jak wiele dokumentów danej klasy zostało odkrytych oraz jednocześnie jaki był stopień pomyłek przy klasyfikacji. Dodatkową miarą pomocniczą jest fall-out, która może być interpretowana jako prawdopodobieństwo błędnej klasyfikacji dokumentu, liczona jako stosunek liczby dokumentów nienalężących do zadanej klasy zwróconych przez metodę do liczby wszystkich dokumentów w zbiorze nienależących do zadanej klasy. W tym przypadku najlepszym wynikiem jest 0 a najgorszym 1. Poza tymi podstawowymi miarami, stosuje się jeszcze inne miary pochodne, jak na przykład F-score, która stanowi ważoną średnią harmoniczną precision i recall. Kolejne metody takie jak average precision, R-Precision, mean average precision czy discounted cumulative gain, umożliwiają uwzględnienie kolejności zwracanych dokumentów jako istotnego warunku precyzji. Wszystkie powyższe metody posiadają pewną cechę wspólną, mianowicie do ich policzenia należy posiadać: korpus, czyli statyczny zbiór dokumentów, zapytanie stanowiące temat poszukiwania oraz ocenę dokumentów względem ich przynależności do klas tematycznych. Testowanie metod tymi miarami jest niezależne od specyfiki samego zbioru tekstów (w sensie jego doboru, kolejności, itp.) i umożliwia porównywanie samej jakości oceny metod wyszukiwania dokumentów. Elementy takie jak kolejność analizowanych dokumentów, wielkość zbioru dokumentów, stosunek liczby dokumentów odpowiadających wzorcowi wyszukiwania do nieodpowiadających w zbiorze są nieistotne dla samej metody. Jeśli metoda potrafi poprawnie klasyfikować teksty, otrzyma zawsze odpowiednio podobny wskaźnik dokładność–pełność. Wyszukiwanie dokumentów w sieci WWW przynosi dodatkowy poziom skomplikowania, ze względu na aspekt związany z istnieniem odsyłaczy pomiędzy dokumentami i sposobie dostępu do nich poprzez trawersowanie po grafie tych odsyłaczy. Można jednak w pewnym określonym kontekście traktować graf połączonych odsyłaczami dokumentów WWW jako korpus (statyczny zbiór dokumentów). Dysponując automatem crawlingowym – czyli systemem umożliwiającym zautomatyzowane systematycznie przeglądanie sieci WWW dokument po dokumencie, można wykonać przejście po wycinku sieci w celu zebrania do-.

(9) 4. kumentów WWW. Typowym sposobem formalnego reprezentowania struktury odsyłaczy tak pobranego wycinka sieci WWW jest graf skierowany, którego węzły stanowią dokumenty (np. HTML), natomiast krawędzie stanowią odsyłacze pomiędzy dokumentami. Znając pojedynczy węzeł takiego grafu, możliwe jest trawersowanie po nim w celu odkrywania kolejnych węzłów. Upraszczając można więc przyjąć, że taka statyczna reprezentacja grafowa powstała poprzez pobranie crawlerem wycinka sieci odpowiada w pewnym sensie reprezentacji korpusowej. Mianowicie statyczny zbiór dokumentów stanowi pewną uproszczoną postać grafu będącą jedynie zbiorem wierzchołków, przy czym porządek ułożenia wierzchołków w korpusie jest nieistotny. Ilość wierzchołków w grafie, jak i elementów w zbiorze, jest skończona i możliwa jest ich ręczna ocena, a następnie zastosowanie miar wymienionych powyżej. W takim rozumieniu i reprezentacji dokumentów znajdujących się w sieci WWW możliwe jest zastosowanie metod ekstrakcji i miar oceny jakości algorytmów, analogicznie jak w przypadku statycznych korpusów, z dokładnością do kolejności przeglądania korpusu (która jak wynika z przedstawionych wcześniej miar, nie wpływa na ocenę jakościową metody – jedynie wpływ może mieć kolejność rankingowa znalezionych dokumentów). Tego typu podejście stosowane było przez uczestników konferencji TREC gdzie wykorzystywano np. korpus ClueWeb09. Korpus ten zawiera ponad 1 mld dokumentów, z czego około 50% stanowią teksty w języku angielskim, a kolejną część korpusu stanowią teksty w 9 pozostałych najważniejszych językach takich jak chiński, japoński, hiszpański, itd. Zespoły biorące udział w TREC często do badań wykorzystywały tzw. korpus TREC kategorii B, który był podzbiorem pierwszych 50 mln dokumentów anglojęzycznej części korpusu ClueWeb09 [6]. Sytuacja ulega zmianie w sytuacji gdy przeprowadza się wyszukiwanie dokumentów on-line w sieci WWW. Okazuje się, że reprezentacja dokumentów w postaci korpusowej (zbioru dokumentów) nie jest możliwa, co warunkuje także niemożność użycia wcześniej przedstawionych miar oceny jakości algorytmów IR. W przypadku wyszukiwania w sposób on-line algorytm IR jest ściśle połączony z crawlerem. Analiza i wyszukanie dokumentów następuje w momencie przechodzenia crawlera po sieci, gdzie podejmowana jest natychmiastowa decyzja o klasyfikacji dokumentów. Taka natychmiastowa ocena dokumentu pozwala uniknąć tworzenia korpusu wszystkich dokumentów. Jest to ważna cecha tego podejścia przede wszystkim dlatego, że rozmiar grafu stanowiącego odwzorowanie całej sieci WWW jest zdecydowanie zbyt duży, aby mówić o możliwości praktycznego zeskładowania takiego grafu w całości w ograniczonym czasie, nawet posiłkując się instalacjami systemów crawlingowych niezwykle wyspecjalizowanych i dedykowanych do tego celu. Kolejny aspekt stanowi czas związany z operacją crawlingu który sprawia, że typowy system crawlingowy ograniczony jest jedynie do możliwości przeglądnięcia wybranego wycinka sieci w skończonym czasie. Następnym aspektem jaki należy wziąć pod uwagę jest bardzo duży stopień dy-.

(10) 5. namiczności sieci WWW. Wiele treści (w tym zawierających odsyłacze) stanowią elementy wygenerowane dynamicznie (zmienne), a nawet losowe. Trawersowanie po tak skonstruowanym grafie skierowanym, który z natury dynamicznie lub nawet losowo zmienia swoją topografię prowadzi do wniosku, że graf ten posiadałby nieskończoną liczbę krawędzi i wierzchołków. Tak więc próba ograniczenia zakresu tego grafu tak, by reprezentować go jako graf o skończonej liczbie krawędzi i wierzchołków, wymaga stosowania heurystyk odróżniające treści i odsyłacze potencjalne od rzeczywistych. W praktyce w typowym przypadku nie jest więc możliwe wykonanie dwóch następujących po sobie sekwencji przejść po ścieżce odsyłaczy w sieci WWW zgodnej z jedną strategią, przy założeniu że obie ścieżki będą miały identyczne przebiegi oraz dostarczą identycznych treści (wierzchołków grafów). Podejście on-line do wyszukiwania dokumentów w sieci WWW charakteryzuje się więc niemożnością zbudowania odpowiedniego korpusu statycznego, ponieważ próby wyszukań mają charakter unikalny, rozpinając za każdym razem różny, rozbieżny graf dokumentów, co implikuje zmienność korpusu pozyskanego na bazie tego grafu. Z przytoczonych powyżej faktów wynika, że przy wyszukiwaniu informacji on-line z WWW nie da się użyć miary pełności (recall) [48]. Można zaproponować wykorzystanie samej miary dokładności (precision), której wyznaczenie w najprostszy sposób wymaga ręcznej analizy wyników zwróconych przez algorytm IR. Jest to możliwe ponieważ rezultat zwracany przez metodę stanowi skończony (w przypadku szczegółowych zapytań zwykle niewielki) zbiór. Wyznaczenie dokładności na zbiorze wyników nie jest więc problematyczne, a jedynie czasochłonne. Problematyczne natomiast jest wyliczenie pełności (recall). Nie da się bowiem wyznaczyć całkowitej liczby dokumentów w sieci WWW, lub przynajmniej nie da się jej podać wprost w sposób jednoznaczny do danego uruchomienia procesu crawlingu. Nawet jeśli liczba ta mogła być wyznaczona, byłaby ona zbyt wielka, aby udało się annotować zbiór dokumentów przynależnością klas tematycznych. Brak wiedzy o tym ile w Internecie znajduje się wszystkich dokumentów należących do zadanej klasy uniemożliwia policzenie miary pełności, co powoduje, że ocena dokładności samodzielnie nie dostarcza wiedzy o jakości metody. Kolejnym aspektem jest zmienność środowiska WWW w czasie. Metoda powinna uwzględniać upływ czasu, ponieważ przeprowadzenie kolejnych eksperymentów na sieci WWW przyniesie odmienne wyniki (ze względu na dynamiczne zmiany). W praktyce jednak nie jest możliwe uwzględnienie tego czynnika, ponieważ sam czas fizyczny trwania przetwarzania tekstu wprowadza już niezerowy moment, w którym mogła nastąpić zmienność, tak więc przetwarzanie musiałoby się odbywać w czasie zerowym co oczywiście nie jest możliwe. Poza tym faktem istnieje jeszcze drugi problem. Każde pobranie strony w sieci WWW może samo w sobie zmienić stan tej strony (np. zmiana licznika wejść na stronę), co powoduje że nie istnieje możliwość powtórzenia wyniku pomiaru na dokładnie tych samych.

(11) 6. danych, ponieważ sam fakt wykonania eksperymentu w środowisku, zmienia to środowisko. Przedstawiony powyżej problem stosowania pełnej miary precision–recall w odniesieniu do wyszukiwania dokumentów on-line w WWW powoduje konieczność posiłkowania się innym rodzajem miary niż recall w przypadku oceny i porównania algorytmów IR. Zagadnienie doboru miar oceny strategii crawlingowych przy wyszukiwaniu dokumentów on-line posiada bogatą literaturę. W pracach Menczera i Panta [41], [48] ale także Saha et. al. [55] odnaleźć można podejścia starające się estymować recall. Proponowane są dwie miary target recall oraz robustness. Pierwsza z tych miar w głównej mierze opiera się na bezpośrednim podziale zbioru testowego na zbiory źródeł (ang. „seeds”) i celów (ang. „targets”). Ocena jakości crawlingu wynika z umiejętności odkrywania elementów zbioru celów startując ze zbioru źródeł. Druga metoda także dzieli zbiór testowy na dwie części wykonując dwa przebiegi crawlingowe używając tych podzbiorów osobno jako strony startowe. Miara mierzy część wspólną zbiorów wynikowych obu przejść. Miary te zdolne są jedynie do estymacji i silnie zależą od losowości podziału zbioru testowego. W celu uniknięcia oceny jakości crawlingu za pomocą wartości estymowanych proponuje się wykorzystanie innej miary np. miary postulowanej w rozdziale 5.5, którą jest pomocnicza miara zbieżności tematycznej1 , oceniająca jakość mechanizmu crawlera sprzężonego z algorytmem IR poprzez jego umiejętność odkrywania wartościowych dokumentów (tj. pasujących do wzorca wyszukania, ang. „valid”, „relevant”) . Wpływ tej miary na ocenę jakości algorytmu bardzo łatwo przedstawić intuicyjnie. Strategia crawlingu to zewnętrzna (w stosunku do IR) metoda sterująca pracą crawlera, która definiuje porządek w jakim następuje trawersowanie po sieci w poszukiwaniu dokumentów. Sposób konstrukcji metody strategii crawlingu determinuje zakres grafu jaki zostanie przeszukany w ograniczonej ilości czasu, a wynika to z przytoczonego wcześniej faktu, że sieć WWW stanowiąca graf o nieskończonej liczbie krawędzi i wierzchołków, podczas skończonego czasu, zostanie przeglądnięta jedynie w pewnym konkretnym podgrafie o skończonej liczbie wierzchołków i krawędzi. W zależności od ułożenia dokumentów z danej klasy tematycznej w grafie, jedna metoda strategii crawlingu przeglądać może podgraf nie zawierający żadnych takich dokumentów, inna metoda w tym samym czasie poprzez odpowiednie trawersowanie po linkach odkryć może wszystkie takie dokumenty. Od strategii crawlingu zależeć będzie więc jaki zakres tego podgrafu zostanie użyty w celu odnalezienia treści spełniającej warunki zapytania. Sposobem na zmierzenie jakości strategii crawlingu w tak postawionym problemie będzie zmierzenie jej zbieżności tematycznej, czyli stosunku liczby znalezionych dokumentów odpowiadających wzorcowi wyszukiwania do wszystkich dokumentów przeszukanych na danym etapie. Crawler idealnie zbieżny tematycznie uzyska wynik 1 w każdym 1. w ang. literaturze nazywanej często miarą harvest-ratio lub harvest-rate [58, 72, 70, 28].

(12) 7. kroku działania, gdy w każdym momencie crawlingu wszystkie dokumenty przez niego odkryte zawierają treść odpowiadającą kryteriom wyszukiwania. Dla systemów wyszukiwania on-line dokumentów WWW potrzeba więc nowej miary. W niniejszej pracy w przypadku wyszukiwania on-line w sieci WWW postuluje się użycie pomocniczej miary zbieżności tematycznej opisanej w rozdziale 5.5 jako miary będącej surogatem miary pełności (recall). Przyjęcie zbieżności tematycznej jako miary oceny implikuje warunek, że strategie klasyczne (np. BFS, DFS) uzyskają dobry wynik zbieżności tematycznej tylko w przypadku gdyby dokumenty pasujące do wzorca wyszukiwania rozłożone były w grafie odsyłaczy w sposób odpowiadający sekwencjom przejść w tych metodach. Celem pracy jest wykazanie słuszności tez: 1. Postulowana miara zbieżności tematycznej użyta jako surogat miary pełności (recall) w przeszukiwaniu sieci WWW on-line jest zależna od przyjętej strategii crawlingu. 2. Zastosowanie aparatu semantycznego w strategiach crawlingu w każdym przypadku przynosi poprawę zbieżności tematycznej crawlingu zorientowanego na zapytanie. Do wykazania przedstawionych tez użyty zostanie system crawlingowy, za pomocą którego przetwarzany zostanie wybrany wycinek ogólnodostępnej sieci Internet. Problematyka utworzenia takiego systemu została opisana w rozdziale 2. „Wprowadzenie do zagadnień crawlingu”. W rozdziale 2.5 omówiono szczegóły budowy repozytorium linków URL, ponieważ repozytorium to zapewnia realizację strategii crawlingu. Architektura i implementacja systemu crawlingowego zorientowanego na zapytanie została przedstawiona w rozdziale 3.1. W celu sprawdzenia tez przedstawionych w pracy opracowano dwie serie eksperymentów. Pierwsza seria została opisana w rozdziale 3. Eksperymenty z użyciem metod klasycznych doboru linków. W sekcji 3.2 przedstawiono sposób wykonania korpusów na których wykonano eksperymenty. Korpusy odwzorowywały topologię wybranego wycinka sieci na którym w sposób powtarzalny testować można zbieżność tematyczną strategii crawlingu. Przetwarzany zakres zostanie zebrany w postaci statycznych korpusów zapewniających powtarzalność kolejnych eksperymentów. Przetestowane zostaną metody klasyczne. Eksperymenty zakładały sprawdzenie jaką zbieżność tematyczną uzyskuje się stosując wybraną strategie klasyczną crawlingu, przy użyciu konkretnej metody IR na konkretnym korpusie. W rozdziale 3.3 wprowadzono definicje klasycznych strategii, które bazują na typowych algorytmach przechodzenia po grafie. Jako metody klasyczne opisano: 1. BFS – przeglądanie wszerz,.

(13) 8. 2. DFS – przeglądanie w głąb, 3. Backlink – przeglądanie zgodnie z porządkiem wynikającym z największej ilości odkrytych krawędzi (odsyłaczy) przychodzących (strony najczęściej wskazywane są najważniejsze), 4. Reverse Backlink - przeglądanie zgodnie z porządkiem wynikającym z najmniejszej ilości odkrytych krawędzi (odsyłaczy) przychodzących (strony najbardziej ukryte są najważniejsze). Przeprowadzone eksperymenty zostały opisane w rozdziale 3.4 Następnie wprowadzono w rozdziale 4 aparat semantyczny, którym posłużono się do utworzenia semantycznych strategii doboru adresów (i które również służyły za metody IR użyte w eksperymentach). Przewidywał on użycie dwóch biegunowych metod semantycznej analizy tekstu – płytkiej i głębokiej: 1. metodę słów kluczowych, będącą jedną z metod płytkiej analizy semantycznej, opisaną w rozdziale 4.3, 2. metodę skryptów Conceptual Dependency będącą jedną z metod głębokiej analizy semantycznej opisaną w rozdziale 4.4. Na bazie tych metod IR przedstawiono w rozdziale 5 nowe strategie semantyczne: 1. metoda Page – waga oceny semantycznej strony wejściowej wpływa na ranking stron wskazywanych przez stronę wejściową, 2. metoda Url – waga oceny semantycznej treści odsyłacza wpływa na ranking strony wskazywanej przez odsyłacz, 3. metoda Page+Url – złożenie dwóch powyższych metod. Wyniki powtórzono na utworzonych uprzednio korpusach dla nowych strategii semantycznych w eksperymentach odpowiadających kolejno poprzednim eksperymentom. Rezultaty porównano i zestawiono z metodami klasycznych strategii w rozdziale 5.6. Zbadano wpływ doboru strategii crawlingu na zbieżność tematyczną crawlingu. Wybrano metody, które otrzymały najlepszą skuteczność. Wnioski wynikające z analizy wyników przedstawiono w podsumowaniu w rozdziale 6..

(14) Rozdział 2. Wprowadzenie do zagadnień crawlingu. Przetwarzanie dokumentów z Internetu wymaga użycia specjalnego oprogramowania sieciowego zdolnego do automatycznego pobierania treści z sieci. Systemy takiej klasy nazywa się mianem systemów crawlingowych, od ang. „crawling” co tłumaczy się jako „pełzać”. Najbardziej prawdopodobną interpretacją genezy tego nazewnictwa jest analogia procesu crawlingowego do świata naturalnego. W procesie crawligowym jednostki robocze zwane crawlerami w sposób ciągły przechodzą przez kolejne odsyłacze URL co może nasuwać luźne skojarzenia do pełzania robaków. Pojedynczy crawler nazywany jest także często w literaturze jako pająk (ang. „spider”), robak internetowy, robot, bot. Budowa systemów crawlingowych stanowi względnie duży problem ze względu na bardzo dużą skalę i wolumen adresów URL w Internecie na konieczność jednoczesnego uwzględnienia wielu zagadnień sieciowych z różnych warstw modelu OSI/ISO oraz ze względu na duże różnice w standardach technologii internetowych. Zakres całej tematyki crawlingu (szczególnie tematyka ściśle sieciowa) jest bardzo szeroki i nie mieści się w zakresie podejmowanym w niniejszej pracy, która skupia się na aplikowaniu aparatu semantycznego do systemu crawlingowego. Niemniej w niniejszym rozdziale przedstawione zostaną kluczowe elementy budowy systemu crawlingowego.. 2.1. Definicja i cechy crawlingu. Manning w [38] podaje dość ograniczoną definicje web crawlingu przedstawiając go jako proces gromadzenia stron WWW w celu indeksacji treści i wsparcia. 9.

(15) 10. wyszukiwarki internetowej. Celem crawlingu jest szybkie i wydajne zgromadzenie interesujących zbiorów danych wraz z topologią odsyłaczy URL. W tej pracy termin crawling jest rozumiany szerzej niż w zacytowanym zakresie podanym przez Manninga: Web crawling jest to systematyczne gromadzenie treści z sieci komputerowej z użyciem wyspecjalizowanego narzędzia zdolnego pracy ciągłej oraz do samoczynnego rozpoznawania topologii połączeń między dokumentami i trawersowania po nich w celu odkrywania treści nie znanych przed rozpoczęciem przetwarzania. Podana definicja zwraca uwagę na kilka aspektów crawlingu. Przede wszystkim gromadzenie treści przez system crawlingowy wymaga odpowiedniego sprofilowania, co zostało ujęte w rozdziale 2.2. Zdolność do pracy ciągłej wymaga specjalnej konstrukcji bazy odsyłaczy, w którym przechowywany będzie stan crawlingu opisany w rozdziale 2.5 oraz wymaga przyjęcia odpowiedniej architektury systemowej, która zidentyfikowana jest w rozdziale 2.4.. 2.2. Cele crawlingu. Ze względu na dużą złożoność procesu crawlingu związaną szczególnie z dużą ilością danych na jakich system crawlingowy operuje nie jest możliwe stworzenie uniwersalnego systemu crawlingowego dużej skali. Przeprowadzony crawling zawsze związany jest z zadanym celem jaki postawiono systemowi. Cel ten determinuje sposób i ilość wykorzystanych zasobów, co ma znaczący wpływ na ostateczną architekturę rozwiązania (np. sposób przetwarzania danych, model komunikacji elementów systemu, ilość zapisywanych informacji, itd.). Cele systemów crawlingowych można podzielić na dwie kategorie: przetwarzanie treści strony oraz przetwarzanie adresów URL. Do celów kategorii „przetwarzanie treści stron” należą: Indeksowanie stron — polega na ekstrahowaniu jednostek z treści przeglądanych dokumentów (najczęściej strony WWW) w celu przyspieszenia wyszukiwania dokumentów zawierających te jednostki. Najprostszymi jednostkami mogą być wyrazy, jednak mogą nimi także być liczby, daty itp. Wyszukiwarki internetowe stosują szereg metod indeksacji sieci w celu konstrukcji odwróconego indeksu stron WWW umożliwiający wyszukiwanie stron za pomocą słów kluczowych. Przeszukiwanie stron — metoda polega na zdefiniowaniu precyzyjnego wzorca wyszukiwania, który jest następnie ewaluowany na treści kolejnych stron. System crawlingowy przetwarzając treść zapisuje jedynie informacje zgodne ze wzorcem wyszukania. Metoda ta bez stosowania metod indeksacji nie.

(16) 11. zapewnia szybkości działania, jednak ogranicza liczbę zasobów potrzebnych podczas wyszukania. Katalogowanie stron — celem katalogowania stron jest próba automatycznej klasteryzacji adresów URL (lub też adresów domen) na kategorie tematyczne. Tworzenie hierarchicznych kategorii stron WWW jest alternatywnym sposobem wyszukiwania stron na zadany temat w porównaniu do systemów opartych na indeksacji. Budowanie korpusów tekstów — cel ten realizuje automatyczne zbieranie tekstów ze stron internetowych w celu budowy korpusów lingwistycznych. Korpusy tekstowe są ważnym elementem przy badaniach nad algorytmami lingwistycznymi. Najczęściej zapisane teksty powinny spełniać odpowiednie kryteria jakościowe, dlatego podczas zbierania danych potrzebne są dedykowane strategie przechodzenia po stronach oraz ograniczanie tekstów redundantnych. Tworzenie kopii serwisów — (ang. mirroring) technika tworzenia redundancji, w celu zapewnienia większej dostępności. Technika ta była szczególnie popularna we wcześniejszych latach, gdzie szybkość łącz i wydajność serwerów była niewielka. Obecnie technika ta jest stosowana dla zasobów o stosunkowo dużych rozmiarach lub niezwykle dużej popularności. Alternatywną technologią dla tworzenia kopii stron są sieci peer-to-peer. Mirroring może służyć także jako sposób na skopiowanie treści dostępnej online do użytku offline. Monitoring zmian — systematyczne przeglądanie wycinku sieci oraz porównywanie informacji znalezionej na stronach prowadzi do monitorowania zmian informacji na stronach. Istnieje wiele strategii porównywania zmian tekstu, najprostsza z nich zastosowana jest w narzędziu diff systemów *nix. Polega ona na porównywaniu zmian w poszczególnych liniach tekstu. Monitorowanie zmian za pomocą cyklicznego odwiedzania stron jest nieodporne na przypadkowe (np. automatyczne) zmiany treści. W przypadku portali internetowych do monitorowania zmian stosuje się także technologię RSS Feed. Do celów kategorii „przetwarzanie adresów URL” należą: Wyznaczanie topologii odsyłaczy — dzięki analizie informacji na stronach internetowych dotyczących hiperłączy, możliwe jest zbudowanie grafów skierowanych przejść pomiędzy stronami. Informacje takie mogą prowadzić do wyznaczania topologii serwisów internetowych (np. wyznaczyć kluczowe strony serwisu, które są ważne ze względu na rolę nawigującą po serwisie). Użyteczną część linku stanowi także jego opis tekstowy, który charakteryzuje treść znajdującą się pod wskazywanym adresem. Nowoczesne systemy.

(17) 12. indeksujące sieć korzystają z tego typu informacji w metryce oceny dopasowania słów kluczowych do treści strony. Walidowanie stron — przy obsłudze dużych serwisów internetowych stosuje się automatyczne metody walidowania działania stron. Spośród wielu możliwych aspektów walidacji najprostszą jej formą jest wykrywanie wszystkich niepoprawnych lub nieaktywnych odsyłaczy URL w celu uniknięcia błędów typu HTTP 404. System crawlingowy może realizować wiele celów jednocześnie współdzieląc pulę zasobów pomiędzy celami crawlingu.. 2.3. Crawling zorientowany tematycznie. Podejmowane w pracy zagadnienia związane z doborem strategii crawlingowej mieszczą się w celu crawlingu zdefiniowanym jako przeszukiwania stron pod kątem zapytania (technik tych także można użyć w celu katalogowania stron WWW lub budowania korpusów tematycznych). Literatura wyszczególnia tego typu zastosowanie jako specjalny typ crawlingu zwany crawlingiem zorientowanym tematycznie (ang. „topic crawling”, „topical crawling”, „focused crawling”) [7, 40]. Specjalizacją tego typu systemu crawlingowego jest selektywne przeszukiwanie sieci w celu odkrycia dokumentów pasujących do z góry określonego tematu wyszukiwania. W crawlerze takim definiuje się specjalną funkcję podobieństwa (ang. „similarity” function), która zwraca liczbę v stanowiąca stopień podobieństwa dokumentu P do zadanego tematu (czyli wzorca wyszukania) T . similarityT : P → v ∈ [0, 1] Sposób implementacji tej funkcji jest zróżnicowany ze względu na istnienie wielu metod statystycznych czy semantycznych umożliwiających reprezentacje wzorców wyszukiwawczych i sposób ich dopasowania do tekstów dokumentów. Przegląd literatury pokazuje użycie szerokiej gamy metod m.in.: dopasowanie słów kluczowych [12], VSM (Vector Space Model) [56, 23], ontologie [27], logika rozmyta z ważeniem konceptów ontologii [30, 21, 73], probabilistyczne metody Bayesowskie (ang. „naive Bayes classifiers”) [72], LSI (Latent Semantic Indexing) [16, 34]. W niniejszej pracy wykorzystano inne podejście semantyczne, różniące się od wyżej przedstawianych konstrukcją wzorca poszukiwanej informacji poprzez użycie skryptów Conceptual Dependency [62, 60, 61, 59]. Wykorzystane podejście semantyczne wraz z opisem teorii Conceptual Dependency, jak i budową skryptów CD, zostało szczegółowo opisane w rozdziale 5. W crawlingu tematycznym wyróżnia się strony pasujące do wzorca (ang. „authorities”) oraz strony agregujące odsyłacze do stron pasujących do wzorca (ang. „hubs”). Poprawny crawler tematyczny powinien możliwie szybko odnajdywać.

(18) 13. strony pasujące do wzorca, w tym realizując cel także poprzez odnajdywanie stron agregujących. W tym celu crawling rozpoczynany jest ze zbioru odsyłaczy startowych (ang. „seed”). Przetwarzając kolejne dokumenty crawler ekstrahuje odsyłacze umieszczając je w kolejce stron do przeglądnięcia (ang. „frontier”). Zwykle zbiór odsyłaczy startowych dobierany jest ręcznie i stanowi wyselekcjonowany zestaw dokumentów zawierających informacje pasujące do wzorca. Celem crawlingu tematycznego jest zebranie w jak najkrótszym czasie jak największej liczby dokumentów pasujących, co pociąga za sobą problem wyboru kolejności odwiedzanych linków z kolejki stron do przeglądnięcia. Istnieje wobec tego uporządkowanie, które można wprowadzić w zbiorze odsyłaczy do przeglądnięcia, zależne od kontekstu działania crawlera, uwzględniające możliwość predykcji, który z odsyłaczy zawiera dokument pasujący do wzorca. Kontekst taki stanowi informacja o dotychczasowej klasyfikacji znalezionych dokumentów. Za pomocą zbioru wartości funkcji podobieństwa do wzorca dla każdego przeglądniętego dokumentu wyznaczyć można metodę przypisująca każdemu odsyłaczowi w zbiorze odsyłaczy do przeglądnięcia wartość rankingową, którą można interpretować jako prawdopodobieństwo znalezienia pod tym odsyłaczem dokumentu pasującego do wzorca. Metody te mogą skupiać się na wykorzystywaniu samej wartości klasyfikacji treści dokumentu, treści nazwy tekstowej odsyłacza, zawartości adresu odsyłacza i innych metodach wykorzystujących informacje strukturalne (np. liczby cytowań) [12]. Rankingowanie puli odsyłaczy następuje cyklicznie w trakcie odkrywania stron, z tym że przypadek idealny tj. rankingowanie po każdym jednostkowym przetworzeniu strony może być w praktyce trudny do implementacji ze względów wydajnościowych. Dobór puli adresów początkowych wraz z metodą oceny podobieństwa oraz metodą rankingowania odsyłaczy stanowi kompletną strategię crawlingu zorientowanego tematycznie.. 2.4. Modele architektur systemów crawlingowych. Implementacja rzeczywistego systemu crawlingowego wymaga rozważenia modelu architektury, w której system taki zostanie zrealizowany. Możliwe do zastosowania architektury różnią się poziomem złożoności implementacyjnej i zależą od celu oraz skali crawlingu jaki ma zostać zrealizowany.. 2.4.1. Crawler jednostanowiskowy. Jest to najprostszy model crawlera wykorzystywany głównie do tworzenia mirrorów małych stron internetowych oraz w badaniach naukowych. Konstrukcja crawlera uwzględnia jeden proces, który przegląda kolejne strony i zapisuje stan crawlingu do podręcznej bazy danych. Najczęściej dane te są przechowywane w sposób nie persystentny i są tracone po zakończeniu przetwarzania. Najprost-.

(19) 14. szym narzędziem służącym za crawler jednostanowiskowy może być narzędzie Unix o nazwie wget1 , które posiada wśród swoich mnogich opcji konfiguracyjnych przełącznik --spider. Zaletami tego typu crawlerów jest niezwykła prostota budowy oraz użycia w typowych zastosowaniach. Wadą jest niska wydajność i praktyczny brak możliwości skalowania crawlingu w przypadku ogólnym.. 2.4.2. Crawler scentralizowany klient-serwer. Architektura klient-serwer jest jedną z najczęściej spotykanych architektur systemów sieciowych. Ze względu na dość prostą koncepcję, w której serwer przejmuje centralną rolę (np. nadzorczą), w sposób stosunkowo prosty można przenieść idee działania klasycznego systemu jednoprocesowego na tą architekturę. W przypadku konstrukcji systemów crawlingowych jest to więc jedna z najlepiej opisanych w architekturze i najczęściej wykorzystywanych architektur. W oparciu o model scentralizowany zbudowane są crawlery Google [3], Mercator [26, 43], WebFountain [20], UbiCrawler [1, 2], crawler opisany przez GarciaMolina [9] oraz Shkapenyuk i Suel [64]. Główną koncepcją budowy systemu crawlingowego w tej architekturze jest wydzielenie z systemu crawlera elementu decyzyjnego w postaci repozytorium odsyłaczy URL wraz z mechanizmami priorytetyzowania ich i umieszczenie tych elementów w postaci scentralizowanego serwera. Crawlery pozostają klientami systemu centralnego. Pobierają od niego pule adresów URL do przeglądania, w ten sposób są zarządzane i kontrolowane. W wielu detalach budowa takich systemów między sobą może się różnić, w zależności od tego w jaki sposób crawlery dysponują następnie pobranymi z sieci treściami. Jest to już jednak ściśle zależne od celów systemu crawlingowego opisanych w rozdziale 2.2 i podlega dostosowaniom do konkretnych przypadków użycia. Do zalet crawlerów tworzonych w tej architekturze wymienić należy stosunkową prostotę implementacyjną ze względu na centralny charakter synchronizacji i sterowania pracy crawlerów, łatwość zarządzania systemem. Do zdecydowanych wad tego rozwiązania należy fakt, że każdy system typu klient-serwer jest podatny na tak zwany bottleneck, czyli efekt „wąskiego gardła”, który może wystąpić na styku centralnego serwera i wielu klientów. W związku z tym przeważnie architektura taka ma ograniczone możliwości skalowania, co może stanowić duży problem w przypadku crawlingu na bardzo szeroką skalę.. 2.4.3. Crawler rozproszony wieloagentowy. Systemy agentowe zyskały popularność wśród niektórych zastosowań sieciowych, szczególnie tam gdzie potrzebna jest silna decentralizacja, odporność na 1. http://www.gnu.org/s/wget/.

(20) 15. błędy i sytuacje kryzysowe. Koncepcja bazuje na podejściu do jednostek przetwarzających jako niezależnych autonomicznych jednostek, które posiadają własne cele do realizacji. Cele te mogą pokrywać się bądź pozostawać sprzeczne wśród grupy agentów, które aby maksymalizować własną funkcję celu mogą negocjować kompromisowe rozwiązania pomiędzy sobą np. współdzieląc zasoby. Agent posiada wycinkową i niepełną wiedzę o całości środowiska w którym został uruchomiony, często powielając czynności realizowane przez innych agentów. Ta cecha systemów agentowych o ile niekiedy pożądana stanowi główną trudność do adaptacji tej architektury jako systemu crawlingowego. W literaturze można odnaleźć prace związane z implementacją crawlerów w oparciu o systemy agentowe takie jak [68], jednak tego typu rozwiązania nie zyskały popularności wśród dostawców wyszukiwarek internetowych (właścicieli największych sieci crawlingowych). Główna trudność wynika z faktu, że zapewnienie autonomiczności crawlera, przy jednoczesnej synchronizacji pracy całego środowiska crawlerów i unikania konfliktów jest niezwykle trudne koncepcyjnie i implementacyjnie. Przy założeniu, że każdy crawler jest całkowicie autonomiczny, musi on utrzymywać własną podręczną bazę adresów URL co powoduje, że bardzo szybko wyczerpałby własne zasoby, ponieważ przechowywałby zwielokrotnione informację w stosunku do innych agentów. Potrzebne są więc wyrafinowane techniki i cele agentów, względem których minimalizacja kosztu przechowywania wiedzy o stanie crawlingu oraz omijanie kolizji byłoby nagradzane dla agenta. Pozostaje wobec tego narzut komunikacyjny, jaki agenci musieliby utrzymywać, aby negocjować kontrakty między sobą. Narzut ten przy wolumenie odsyłaczy URL znajdujących się w sieci mógłby być większy niż sama komunikacja agenta z siecią w celu pobierania treści.. 2.5. Repozytorium linków URL. Repozytorium odsyłaczy stanowi element krytyczny dla wydajności systemu crawlingowego. Ze względu na duży wolumen adresów internetowych, a także z uwagi na ich specyfikę, wydajne przetwarzanie baz adresów URL wymaga dedykowanego podejścia. Przed analizą konkretnych rozwiązań należy sprecyzować formalne wymagania stawiane takiemu repozytorium z punktu widzenia celu crawlingowego.. 2.5.1. Wymagania dotyczące repozytoriów linków. Następujące zagadnienia mają wpływ na architekturę i wymagania funkcjonalne stawiane repozytoriom linków. Warto nadmienić, iż nie są to wszystkie możliwe aspekty tego zagadnienia, a jedyne te które związane były z realizacją postawionego celu crawlingu..

(21) 16. Użycie zasobów systemowych Powołując się na [35] każdy system crawlingowy może być opisany używając następujących parametrów: • liczba N stron, które crawler może obsłużyć do momentu, w którym nie może przetwarzać dalej ze względu na brak zasobów, • szybkość przeglądania sieci S jako funkcja zależna od argumentu będącego liczbą stron już odwiedzonych, • liczba zasobów Σ (CPU i RAM) wymaganych do podtrzymania przetwarzania N stron w średnim czasie S. Cytując dalej za [35] „in most crawlers, larger N implies higher complexity of checking URL uniqueness, verifying robots.txt, and scanning the DNS cache, which ultimately results in lower S and higher Σ. At the same time, higher speed S requires smaller data structures, which often can be satisfied only by either lowering N or increasing Σ”. Komentując przytoczony cytat, przy tworzeniu systemu potrafiącego pokryć dużą liczbę stron N przy założonej szybkości S wymaga, aby repozytorium linków potrafiło obsłużyć zadane natężenie operacji dodania i modyfikacji, co pociąga za sobą konieczność zwiększania zasobów Σ. Wobec tego repozytorium URL staje się głównym konsumentem zasobów całego systemu, co potwierdza istotność roli tego elementu w całym systemie. Unikanie pułapek Angielski termin „spider trap”, a także często spotykany w literaturze termin „black hole” odnosi się do specyficznej dla struktury odsyłaczy w dokumentach HTML nieskończonej pętli odsyłaczy. Niektóre takie pętle są naturalną konsekwencją stosowania na stronach dynamicznych skryptów generujących treści. Najprostszymi przykładami mogą być: dynamiczny kalendarz na stronie WWW, który umożliwia nawigowanie w nieskończoność kolejnych dni, źle zaprojektowana strona WWW z paginacją umożliwiającą nieskończone przechodzenie po kolejnych (pustych) stronach materiału. Inne opisane tutaj pułapki mogą być związane z intencjonalnym działaniem webmasterów chcących zakłócić pracę robota internetowego. Przykładami takich działań mogą być: tzw. farmy linków, ukrywanie treści na stronach. W związku z tym należy traktować graf linków URL w sieci Internet jako graf o nieskończonej ilości węzłów i krawędzi, potencjalnie nawet dla grafu dotyczącego jednej domeny. Takie podejście wymaga więc, aby repozytorium linków zapewniało w czasie rzeczywistym analizę wartości informacji w danej domenie, umożliwiając przeglądanie jedynie skończonego jej fragmentu, czyli z góry zadanego wolumeny linków URL w ramach jednej domeny..

(22) 17. Zgodnie z [35] poprzednie implementacje tego typu systemów crawlingowych, takie jak opisywane przez [26], [43], [64] oraz [11] oparte były na metodzie BFS 2 i nie brały pod uwagę faktu istnienia pułapek. Powodowało to bardzo szybką zbieżność procesu crawlingowego (około 3 do 4 poziomów BFS), przy bardzo ograniczonej liczbie domen, co wyczerpywało zasoby systemu czyniąc dalsze przetwarzanie bezskutecznym. W celu ograniczenia takich sytuacji stosuje się różne techniki dostosowane do konkretnych zastosowań. Jednym z przykładów rozwiązania jest stosowanie progu odcięcia drzewa BFS do ustalonej wysokości drzewa oraz wolumenu linków dla każdej domeny. Takie podejście jednak przynosi niższą dokładność w przetwarzaniu globalnego Internetu, ponieważ trudno przewidzieć i ustalić pojedynczą granicę takiego odcięcia. Wzięcie dowolnej liczby może spowodować albo zbyt płytkie przeglądnie domen, albo zbyt głębokie (co spowoduje wyczerpanie zasobów). Cytując za [35] „Yahoo currently reports indexing 1.2 billion objects just within its own domain and blogspot claims over 50 million users, each with a unique hostname”. Przytoczony cytat wskazuje jak duży jest rozrzut pomiędzy pojemnością poszczególnych portali oraz jak ciężki jest on do przewidzenia. Inne techniki wykorzystują dodatkowe metryki takie jak Page Rank opisaną w [3] i [46], które umożliwiają ocenę jakości domeny i przypisanie jej funkcji progu odcięcia drzewa w zależności od wyniku metryki. Z tego powodu repozytorium URL powinno zapewniać metodę umożliwiającą kontrolę poziomu zagłębienia oraz wolumenu linków dla każdej przetwarzanej domeny. Czas życia informacji Każda informacja opublikowana na stronie jest powiązana z adresem URL. Jeśli zawartość strony zmieni się w trakcie okresu czasu, może to oznaczać że nowa informacja została dodana lub stara informacja została zmodyfikowana/usunięta. System crawlingowy, który ma na celu utrzymanie dobrego stopnia synchronizacji informacji musi posiadać mechanizmy, związane z obsługą zmiany treści dostępnej pod adresem URL uprzednio odwiedzonym. Zadanie to jest dziś szczególnie trudne ze względu na bardzo dynamiczny charakter treści portali. Termin Web 2.0 powstał, aby zdefiniować ten nowy trend, gdzie to użytkownicy portalu stają się producentami treści, a dostarczanie treści trwa praktycznie nieprzerwanie i ciągle. W związku z tym istnieje problem czasu życia informacji, który możemy zdefiniować jako problem oceny, jak długo informacja, która została pobrana przez system, pozostaje aktualna. Olston et al. w [45] stwierdzają, że kluczową rolą w radzeniu sobie z oceną czasu życia informacji jest zdolność do odróżnienia informacji efemerycznej od persystentnej. Definiują oni dwa ważne wskaźniki: 2. BFS – Breadth-first search..

(23) 18. • częstotliwość zmian (change frequency) – jak często strona jest uaktualniana przez właściciela (także w [10], [31] i [20]) • wpływ (relevance) – jak duży wpływ poprzednia i nowa strona ma wpływ na wynik wyszukiwania (także w [47] i [69]) Analizując strukturę dzisiejszych wiodących portali można stwierdzić, że zbudowane one są z elementów o bardzo zróżnicowanym typie (teksty, grafiki, nagrania audio, nagrania video, elementy interaktywne flash, itp. . . ). Elementy te mogą mieć charakter dynamiczny, co powoduje, że odświeżenie tej samej strony w jednym momencie powoduje wygenerowanie różnych treści (np. polecane artykuły mogą losować się przy każdym przeładowaniu strony). Przynosi to problematyczną kwestię rozpoznania, w którym momencie nastąpiła rzeczywista zmiana treści, a w którym jedynie zmieniono dobór materiałów. Olston et al. [45] skupili się w swojej pracy na wyróżnieniu tzw. individual content fragments – czyli na fragmentaryzacji strony na spójne treściowo fragmenty poddawane monitoringowi. Koncepcja ta jest analogiczna do przedstawianej w rozdziale 4.2 segmentacji tekstu na potrzeby algorytmów lingwistycznych. Repozytorium linków URL powinno wobec tego umożliwiać oznaczenie poszczególnych linków URL jako gotowych do ponownego odwiedzenia po upływie pewnego momentu czasu. Taki mechanizm może być wykorzystany przez dowolną strategię odświeżania stron stosującą własną metodę określenia czasu po którym należy odświeżyć link. Formalne wymagania dla repozytoriów linków Podsumowując omówione zagadnienia i warunki jakie nałożone są na konstrukcję repozytorium linków URL zdefiniowano następujące wymagania. Repozytorium powinno umożliwiać: • przechowywanie unikalnych linków URL z użyciem metody umożliwajacej szybki test unikalności adresu URL w bazie, • przechowywanie głębokości adresu URL w odniesieniu do domeny w celu restrykcji dotyczących wolumenu przeglądanych stron, • przechowywanie kolejki linków do odwiedzenia w sposób priorytetyzowany, • rozróżnianie stanów adresów URL związanych z gotowością do odwiedzenia, zakończenia przeglądania, ponownej gotowości do odwiedzenia, • odporność na błędy gwarantującą, że każdy link zostanie przetworzony niezależnie od awarii poszczególnych crawlerów..

(24) 19. 2.5.2. Relacyjna baza danych. W teście porównawczym użyty został silnik relacyjnych baz danych PostgreSQL w wersji 8.2. System ten jest popularną bazą obiektowo-relacyjną udostępnioną na zasadzie otwartych źródeł. PostgreSQL jest aktywnie rozwijany od ponad 15 lat, w ciągu których dojrzała architektura tego systemu potwierdziła swoją jakość, niezawodność, spójność i poprawność uzyskując dobrą reputację wśród dużego grona użytkowników na całym świecie. PostgreSQL posiada wersje na większość głównie używanych systemów operacyjnych w tym Linux, UNIX (AIX, BSD, HP-UX, SGI IRIS, Mac OS X, Solaris , Tru64) oraz Windows. Silnik bazodanowy w pełni obsługuje ACID (atomicity, consistency, isolation, durability), tzn. zapewnia atomowość transakcji, spójność transakcji, izolację transakcji oraz trwałość danych.3 W celu przetestowania wydajności przechowywania odsyłaczy URL w relacyjnej bazie danych utworzono prosty schemat bazy danych oparty na dwóch tabelach: pages oraz pagesToUpdate. Pierwsza tabela – pages – była odpowiedzialna za przechowywanie odsyłaczy URI wraz z dodatkowymi metainformacjami. W języku SQL tabela posiadała następującą strukturę: CREATE TABLE pages ( id url checksum page_size last_visit );. bigserial primary key, character(300) unique, character(32) default ’’, int default 0, timestamp default null. Druga tabela – pagesToUpdate – zawierała kolejkę stron, które należało odwiedzić w dalszym toku crawlingu: CREATE TABLE pagesToUpdate ( page_id bigserial primary key REFERENCES pages(id) ON DELETE CASCADE, newpage boolean default true, blockade timestamp default null ); Dodawanie elementów oparte było na kwerendach w języku SQL opartych na poleceniu INSERT. Wybieranie elementów do przetwarzania oparte było także na kwerendach SQL wykorzystujących warunki czasowe związane z przeterminowaniem ważności ostatniej wizyty. W celu przyspieszenia operacji SELECT utworzono następujące indeksy. 3. http://www.postgresql.org/about/.

(25) 20. CREATE INDEX index_pages_lastvisit ON pages(last_visit); CREATE INDEX update_blockade ON pagesToUpdate(blockade); Blokowanie odsyłaczy na czas wykonywania crawlingu oparte było na kolumnie blockade będącej znacznikiem czasowym, które także mogło ulec przeterminowaniu i uwzględnione było w warunku odpowiedniego zapytania SQL selekcjonującego adresy URI do przetworzenia.. 2.5.3. Dedykowane struktury pamięciowe. Berkeley DB4 jest systemem bazodanowym wraz z biblioteką zapewniającą wysoko wydajną bazę danych w całości oparte na prostych strukturach pamięciowych. Podejście takie eliminuje warstwy pośrednie jak języki zapytań (np. SQL) oraz komunikacje międzyprocesową poprzez operowanie na niskopoziomowych strukturach pamięciowych, czemu zawdzięcza głównie swoją wysoką wydajność. Zgodnie z dokumentacją5 biblioteka ta zapewnia dostęp do czterech podstawowych struktur danych: B-tree, Hash, Queue, Recno. Wspólne dla wszystkich struktur jest założenie przechowywania w nich danych będących dwójką (klucz, wartość). Odnosząc się do implementacji wrapper bazy Berkeley DB dla języka Python pary te mają następujące typy: • (integer, string) – dla struktury Recno, • (string, string) – dla innych struktur. B-tree Jest to implementacja posortowanego i zbalansowanego drzewa. Złożoność czasowa wyszukania, dodania i usunięcia klucza wynosi Θ(logb N ) gdzie b jest średnią liczbą kluczy na stronę, a N jest całkowitą liczbą przechowywanych kluczy. Bardzo istotnym faktem jest to, że B-tree zachowuje porządek kluczy, co jest istotne przy wyszukaniu pierwszego/ostatniego elementu, lub też przy przeglądaniu kolejnych elementów drzewa. Hash Jest to implementacja tablicy z haszowaniem bazującej na Extended Linear Hashing opisywanym przez [36].Tablica z haszowaniem zawiera zmienną przestrzeń adresową, co umożliwia dynamiczne zwiększanie jej pojemności wraz ze wzrostem kluczy. Można założyć z pewną dokładnością, że złożoność czasowa wyszukania klucza wynosi Θ(1), tzn. jest stała. Struktura ta nie zapewnia utrzymywania porządku kluczy. 4 5. http://www.oracle.com/database/berkeley-db/index.html http://www.oracle.com/technology/documentation/berkeley-db/db/ref/toc.html.

(26) 21. Queue Jest to implementacja kolejki typu FIFO, gdzie rekordy zapisywane są sekwencyjnie i bezpośrednio mapowane na offset w pliku płaskim. Kolejka jest zaprojektowana z myślą o szybkich operacjach dodania rekordu, wspiera także możliwość usuwania rekordów. Kolejka ta umożliwia zapis jedynie rekordów o stałej długości. Recno Struktura ta umożliwia zapis rekordów o stałej i zmiennej długości. Posiada wiele dodatkowych funkcjonalności ponad implementację kolejki, z której najważniejszą jest umiejętność składowania rekordów o zmiennej długości oraz przechowywanie ich wraz z logicznym numerem w postaci klucza rekordu. Użyty formalizm Ze względu na złożoność opisu słownego, tam gdzie możliwe zostanie on zastąpiony następującym formalizmem [18]: • A[B] – struktura A adresowana kluczem B, • B in A – wartość logiczna; test przynależności klucza B do struktury A, • (C, D) – para wartości C i D, • A[B] = (C, D) – przypisanie pary (C, D) do struktury A pod kluczem B, • A[B] : C – ekstrakcja wartości C z pary wskazywanej przez strukturę A[B], • C ⊕ D – konkatenacja wartości C i D będąca napisem. Opisane w poniższych sekcjach procesy zobrazowane zostały na rysunku 2.1. Liniami ciągłymi oznaczono przebiegi procesów związanych z dodawaniem linku do bazy, linie kreskowane odnoszą się do operacji selekcji linku z bazy, natomiast linie kropkowane odnoszą się do procesu zapewnienia kontroli przeglądnięcia odsyłaczy i ewentualnego ich ponownego dodania do kolejki. Test unikalności adresu URL Dana jest tablica z haszowaniem U z niepustym kluczem K reprezentowanym przez adres URL. Niech U [K] = (G, V ). Test unikalności adresu URL K w bazie jest tożsamy ze sprawdzeniem warunku K in U ..

(27) 22. Rysunek 2.1: Graf zależności między komponentami bazy.. Głębokość przeglądania Niech wartość G w tablicy z haszowaniem U będzie głębokością przeglądania dla adresu URL K. Wyrażenie dn(K) reprezentuje nazwę domenową wyekstrahowaną z adresu K. Dla danej pary kluczy K i K  , gdzie K  jest adresem referencyjnym, pod którym adres K został znaleziony, wartość wyrażenia U [K] : G definiuje się jako: . U [K] : G =. U [K  ] : G + 1 if dn(K) = dn(K  ) 1 if dn(K) = dn(K  ). Dla adresów URL początkowych zakłada się, że K  jest pustym napisem ∅, co prowadzi do dn(K) = dn(K  ) ⇒ U [K] : G = 1. Niech Gf będzie wartością progową do której adresy zostają przeglądane. Adres K może być dodany do U ⇐⇒ G  Gf . Priorytetyzowana kolejka z rozproszeniem obciążenia hosta Dane jest B-drzewo Q[B] = K z indeksem B = U [K] : G ⊕ p(K) ⊕ h(K) gdzie K – jest danym adresem URL. G – jest głębokością przeglądania dla danego K. p(K) – jest funkcją jednoargumentową zwracającą priorytet pobrania adresu K sformatowany jako ciąg znaków o stałej długości dopełniony znakiem „0”.

(28) 23. (np. liczba 12 w czteroznakowej reprezentacji ma postać „0012”); wartość priorytetu jest liczbą odwrotnie proporcjonalną do ważności („0000” reprezentuje najwyższy priorytet, „9999” reprezentuje najniższy priorytet). Liczba znaków użyta do reprezentacji priorytetu jest uzależniona od potrzebnej granularności priorytetów. h(K) – jest haszem o stałej długości adresu K. Może być wyliczony dowolną metodą haszującą jak md5, sha1, etc. Ponieważ B-drzewo utrzymuje leksykalny porządek kluczy, pobranie w każdym momencie pierwszego elementu z Q[B] ⇒ K zwraca pierwszy element zgodny z porządkiem: 1. adresy URL, które są na najniższym poziomie głębokości przeglądania, 2. adrsy URL o największych priorytetach, 3. posortowane wg haszu adresu URL – oznacza to losową dystrybucję wśród domen. Struktura taka wykazuje podobieństwo do struktury kolejki, w której skonstruowano dedykowany warunek porządku kluczy. W tym przypadku jest to porządek BFS z priorytetyzowaniem za pomocą głębokości przeglądania linków. Pobieranie elementu z takiej kolejki wymaga selekcji pierwszej zgodnie z porządkiem drzewa pary (key, value) z Q i usunięcie danego indeksu B ze struktury Q. Sortowanie rekordów za pomocą haszy adresów URL wprowadza rozproszenie obciążenia pomiędzy hostami. Metoda ta nie sprawdza się jednak w zastosowaniach gdzie występuje duża zbieżność procesu crawlingowego, co oznacza małą liczbę różnych hostów w Q. Metoda ta nie gwarantuje także poprawności rozproszenia, ze względu na charakter samej funkcji haszującej. Potwierdzanie przetworzenia adresu Niech V z U [K] = (G, V ) będzie wartością logiczną reprezentującą fakt czy strona K została przetworzona. Każdy link K dodany do U posiada domyślnie wartość U [K] : V = F alse. Po przetworzeniu strony K wartość ta zmieniania jest na U [K] : V = T rue. Gwarancja przetworzenia adresu Niech Tcnf będzie zdefiniowanym czasem po upływie którego wartość U [K] : V pobieranej strony K musi wynosić T rue. Jeśli wartość ta jest U [K] : V = F alse.

(29) 24. adres K powinien zostać ponownie udostępniony do puli adresów do przetworzenia. Niech Qc [Bc ] = K będzie tablicą potwierdzeń z indeksem Bc = T ⊕ h(K), gdzie: K jest napisem reprezentującym adres URL, T jest znacznikiem czasowym w formacie Unix timestamp (liczba sekund) przy założeniu stałej długości i wypełnieniu od lewej znakami 0, h(K) jest stałej długości skrótem z haszowania napisu K. Skrót może być wyliczony dowolną standardową metodą np. md5, sha1, etc. Wybór elementu K z kolejki następuje zgodnie z poniższymi krokami: 1. Wybierz pierwszy element z kolejki Q[B] = K. 2. Usuń element Q[B]. 3. Niech B  = Tnow + Tcnf ⊕ h(K), gdzie Tnow jest aktualnym znacznikiem czasowym. 4. Dodaj do kolejki Qc [B  ] = K. Ze względu na fakt, że Qc utrzymuje leksykalny porządek kluczy, elementy w Qc są ułożone zgodnie z rosnącym czasem T . Unikalność klucza przechowywanego w Qc jest gwarantowana przez dodanie do niego skrótu h(k). W związku z tym różne linki o tej samej wartości T są zgrupowane oraz umieszczone między sobą w losowej kolejności wyznaczonej przez skrót z haszowania. Czas T reprezentuje chwilę w przyszłości, w której należy wykonać sprawdzenie czy strona K została w sposób poprawny pobrana. Poniższy algorytm powinien być wykonany periodycznie w zadanym oknie czasowym lub przed każdą operacją wyboru linku: 1. Pobierz pierwszy element z Qc [Bc ] = K. 2. Podziel Bc na parę wartości: T or h(K). 3. Jeśli T > Tnow to zakończ przetwarzanie. 4. Usuń element Qc [Bc ]. 5. Jeśli U [K] : V = T rue to skocz do kroku 1. 6. Dodaj element Q[U [K] : G ⊕ p(K) ⊕ h(K)] = K. 7. Skocz do kroku 1..

(30) 25. Qc może być interpretowana jako kolejka planowanych sprawdzeń czy adresy z kolejki Q zostały poprawnie przetworzone. W kroku 1. opisywany powyżej algorytm oczekuje na pierwszy element do sprawdzenia. Ponieważ elementy jak już zostało wspomniane wyżej, ułożone są zgodnie z narastającym czasem T to pierwszy element będzie miał najmniejszą wartość T ze wszystkich elementów w tej kolejce. Jeśli więc element ten ma wartość T będącą chwilą w przyszłości, należy przerwać przetwarzanie i nie usuwać elementu z kolejki ponieważ nie nadeszła jeszcze pora do sprawdzenia ani tego, ani jakiegokolwiek dalszego elementu. W przeciwnym wypadku w dalszych krokach podejmowane są działania mające na celu wykonanie sprawdzenia. W kroku 4. usunięty zostaje element z kolejki Qc , a dalej sprawdzany jest stan crawlingu dla strony K. Jeśli wartość U [K] : V określająca stan czy strona była odwiedzona jest ustawiony na prawdę, sprawdzenie powiodło się i można kontynuować algorytm z innymi elementami kolejki Qc co jest zaprezentowane jako skok do kroku 1. Jeśli sprawdzenie nie powiodło się, należy ponownie do kolejki Q przekazać adres K, aby adres ten ponownie został odwiedzony. Ponowne odwiedzanie adresu Użycie B-tree zamiast struktury Queue do implementacji kolejki Qc [Bc ] = K umożliwia dodawanie do kolejki dowolnych kluczy Bc posiadających dowolny znacznik T przy zachowaniu porządku elementów. Pozwala to na proste rozszerzenie algorytmu w taki sposób aby obsługiwana była także możliwość ponownego przekazania po upłynięciu zadanego okresu czasu adresu URL do przeglądniecia. Pozwala to na utworzenie mechanizmu repozytorium linków, które monitoruje (powraca) do adresów, które zostały już przeglądnięte. Niech r(K) będzie funkcją jednoargumentową od K zwracającą czas w jakim strona K powinna zostać ponownie przeglądnięta. Modyfikacja (zaznaczona jako wytłuszczenie) algorytmu sprawdzania stanu strony K opisanego w poprzednim rozdziale wprowadza możliwość ponownego wystawienia adresu K po zadanej ilości czasu do ponownego odwiedzenia: 1. Pobierz pierwszy element z Qc [Bc ] = K. 2. Podziel Bc na parę wartości: T or h(K). 3. Jeśli T > Tnow to zakończ przetwarzanie. 4. Usuń element Qc [Bc ]. 5. Jeśli U [K] : V = T rue to skocz do kroku 8. 6. Dodaj element Q[U [K] : G ⊕ p(K) ⊕ h(K)] = K. 7. Skocz do kroku 1..

(31) 26. 8. Jeśli nieprawda, że r(K) > 0 to skocz do kroku 1. 9. Niech U [K] : V = F alse. 10. Niech B  = Tnow + r(K) ⊕ h(K), gdzie Tnow to obecny znacznik czasowy. 11. Dodaj do kolejki Qc [B  ] = K. Po pomyślnym sprawdzeniu odwiedzenia strony K w kroku 5. link może być ponownie dodany do kolejki Qc . Wartość funkcji r(K) w kroku 8. może także zwrócić wartość ujemną aby zapobiec ponownemu dodawaniu linku do kolejki. Ustawienie wartości U [K] : V ponownie na F alse w kroku 9. oraz dodanie linku K do Qc w kroku 11. powoduje ponowne sprawdzenie warunku w chwili Tnow +r(K), które zawiedzie i spowoduje dodanie linku ponownie do kolejki Q.. 2.5.4. Porównanie i wybór metody. W celu przetestowania przedstawionych metod przechowywania odsyłaczy wykonano symulację intensywnego użycia. Testy zostały przeprowadzone na maszynie IBM wyposażonej w procesory Power5+ (8 rdzeni – 1648.35 Mhz każdy) oraz 12 GB RAM. Opisywane modele zostały zaimplementowane w języku Python (wersja 2.x). Pierwszą implementacją było rozwiązanie oparte na bazie DB Berkeley wykorzystującą moduł bsddb36 dla Pythona. Drugą implementację stanowiło wykorzystanie bazy danych PostgreSQL (wersja 8.x) przy użyciu jako interfejsu modułu pg dla Pythona. Do pomiaru czasu wykorzystano moduł timeit języka Python. Reprezentatywny test składał się z czasu opóźnień jakie występowały podczas dodawania nowych adresów do bazy. Operacja ta stanowi wąskie gardło systemu przechowywania linków, ponieważ crawlery odnajdują wielokrotnie więcej linków niż przetwarzają w danej chwili co sprawia, że efektywność bazy sprowadza się do przepustowości zapisu nowych odsyłaczy przy jednoczesnym sprawdzeniu i unikaniu duplikatów. Jako punkt startowy ustalono stan bazy zawierający już 1 mln linków. Następnie w ramach przeprowadzonego testu dodano kolejne 3 mln linków i sprawdzono w jaki sposób wpływa to na średnie opóźnienie dodania pojedynczego linku. Odsyłacze generowane były losowo z zachowaniem reguł, które miały zapewnić podobieństwo charakterystyki odsyłaczy do tych znajdowanych na stronach. Na początku wyznaczono zbiór 10 000 różnych losowych domen. Następnie tworzone były losowe odsyłacze, które były konkatenacją prefiksu http:// oraz losowej domeny ze zbioru oraz losowej długości napisu z klasy znaków [a-zA-Z/- ] reprezentującą ścieżkę. Losowane znaki miały różny rozkład prawdopodobieństwa 6. http://pybsddb.sourceforge.net/.

(32) 27. w celu imitowania zwykłych odsyłaczy (np. znaki / oraz miały większe prawdopodobieństwo). Czas generowania linku nie miał wpływu na wykonany pomiar opóźnienia.. Rysunek 2.2: Średnie opóźnienie [s] dodania jednego linku podczas dodawania 3 mln odsyłaczy do repozytoriów adresów. Dla każdych 100 000 adresów, które zostały dodane do bazy wyznaczono średnie opóźnienie bazy na dodanie jednego adresu. Zebrane wyniki zostały przedstawione na rysunku 2.2. Na osi X oznaczono ilość linków w bazie, na osi Y oznaczono wartość będącą średnim opóźnieniem dodania jednego linku. Jak widać rozwiązanie DB Berkeley charakteryzuje się dużą odpornością na wolumen przechowywanych adresów (nie wpływa ona w wykonanym badaniu na opóźnienie), występują jedynie sporadyczne zwiększające się opóźnienia wynikające najprawdopodobniej z metod synchronizacji I/O zastosowanych w tej bazie. Rozwiązanie oparte na bazie danych wykazuje liniowy trend wzrostu opóźnienia w zależności od wolumenu.. 2.6. Definicja zadania crawlingowego i rozwiązywanie konfliktów. W zależności od celu crawlingu budowa wewnętrzna systemu crawlingowego może mieć różną granularność. W przypadku indeksacji treści na potrzeby budowy wyszukiwarki internetowej system crawlingowy utrzymuje spójny globalny system repozytorium linków URL, w którym zapewnia rozwiązywanie konfliktów.

(33) 28. - czyli taką synchronizację pracy crawlerów, w której roboty nie wykonują pracy w sposób redundantny. W przypadku query driven crawlingu, na którym bazowane są opisywane w tej pracy eksperymenty wprowadzić można dodatkowy podział procesu crawlingowego na zadania crawligowe. Zadanie crawlingowe w query driven crawlingu jest to proces pobierania i przetwarzania treści z Internetu, zdeterminowany poprzez wyspecyfikowaną funkcję oceny treści, strategię doboru i priorytetyzacji odsyłaczy URL oraz adresy startowe. Zgodnie z podaną definicją każde zadanie powiązane jest z aparatem oceny treści co oznacza, że dla każdego tematu dla którego konstruuje się crawling tworzy się niezależne repozytorium adresów z własną priorytetyazją i przestrzenią adresową. Rozwiązywanie konfliktów crawlingu polegające na synchronizacji pracy crawlerów odbywa się wobec tego na poziomie zadania crawlingowego, ponieważ problem ten rozwiązywany jest w repozytorium linków, które jak już zostało wspomniane, jest niezależne wobec każdego zadania..

Cytaty

Powiązane dokumenty

• Detektory pozwalają na obserwację (rejestrację) serii oddziaływań, podjęcie decyzji czy oddziaływanie jest interesujące, identyfikację produkowanych cząstek, pomiar

znak początku ^ i końca $ oznacza domyślnie początek i koniec łańcucha; zaś jeśli ustawimy m, wtedy oznacza początek i koniec wiersza, więc może być dane wyrażenie

W tym celu każdej z pięciu wylosowanych z określonej populacji osób daje do rozwiązania trzy równolegle wersje tej skali, przy czym kolejność w jakiej te wersje występują

Mając napisać referat o własnej pracy, której tytuł wyżej został wypisany, uważałem za rzecz ważną, uzupełnić ją w dopiskach tym ma- teryałem, jaki już ukazał się po

kw estia oceny wartościującej: „Dysponując modelem danej poezji, oceniam y ją nie bezpośrednio, ale ustosunkowując się do jej za­ w artości modelowej,

Na podstawie otrzymanych wyników i analizie danych dla trzech założonych stanów zdatności silnika spalinowego wyznaczone zostały dwie częstości charakterystyczne

36 A. Siekierski, Ksi¹¿ka we wspó³czesnej kulturze polskiej, Pu³tusk 2006, s. 39 Wczoraj, dziœ i jutro ksiêgarstwa pañstwowego…, dz. Trzaska, Czy rozwój sieci ksiê- garskiej

The presence of 0.016% NMCS induced a signi ficant cathodic shift in E corr and higher i corr values at early stages (sample B6) compared to the additive-free case (sample B5); a