WPROWADZENIE DO EKSPLORACJI DANYCH TEKSTOWYCH W … · WPROWADZENIE DO EKSPLORACJI DANYCH...
Transcript of WPROWADZENIE DO EKSPLORACJI DANYCH TEKSTOWYCH W … · WPROWADZENIE DO EKSPLORACJI DANYCH...
WPROWADZENIE DO EKSPLORACJI DANYCH TEKSTOWYCH W ŚRODOWISKU WWW
SPAM WŚRÓD STRON INTERNETOWYCH (SEO)RÓŻNOŚCIWYKŁAD 13
Piotr Gawrysiak [email protected]
Anna Wróblewska [email protected]
Piotr Andruszkiewicz [email protected]
Politechnika WarszawskaZakład Systemów Informacyjnych
PageRank cd.
PageRank to nie jest „srebrna kula”
• PR mierzy „ogólną” jakość strony, a zatem nie nadaje się do oceny jakości w przypadku specyficznych tematów wyszukiwania
• PR jest stosunkowo łatwo oszukać
• Istnieją inne algorytmy analizujące strukturę grafu WWW• HITS• Hilltop• Topic Specific/Sensitive Page Rank (TSPR)• ...
największy problem
Optymalizacja wyszukiwania(ang. Search engine optimization, SEO)• Wyszukiwarki internetowe są najważniejszym narzędziem
nawigacyjnym w WWW
• Strona, której nie można znaleźć w wyszukiwarkach,w zasadzie nie istnieje z praktycznego punktu widzenia
• W wyszukiwarce warto być na początku listy wyników, dla dowolnego zapytania
• A nuż ktoś kliknie? Kliknięcia użytkowników mogą przynosić wymierne zyski:• reklama internetowa – często płatna za wyświetlenie (ang. „per view”)• Strony e-commerce – a nuż jak kliknął, to i coś kupi?• Strony „dystrybujące” malware• Zwiększenie popularności strony / domeny – a nuż ktoś od nas ją odkupi...
Optymalizacja wyszukiwania(ang. Search engine optimization)• Większość powyższych celów wymaga przyciągnięcia
użytkownika na stronę, pomimo jej znikomej użyteczności dla użytkownika – podczas gdy wyszukiwarki optymalizują wyniki wyszukiwania według użyteczności
• A zatem konieczna jest sztuczna manipulacja wynikami wyszukiwania – „oszukanie” algorytmów budujących listę wyników
• Zreszta czy wyszukiwarkom komercyjnym można wierzyć? Stąd projekty takie jak Nutch…
SEO = SPAM?
• Manipulowanie wynikami działania wyszukiwarek jest działalnością niepożądaną dla użytkowników WWW – podobnie jak rozsyłanie niechcianych wiadomości email
• A zatem można pokusić się o mówienie o spamie wśród stron internetowych (ang. Web Spam) – stronach WWW, których jedynym powodem istnienia jest wpływanie na działanie algorytmów wyszukiwarek
• Oczywiście wiele osób może się tutaj nie zgodzić. Należy pamiętać, iż istnieje już cały przemysł SEO – ang. Search Engine Optimization
• Udział stron typu spam w całej sieci WWW to około 10-15%
Techniki „webspamowe”
Zwiększanie ważności stron (ang. boosting)• Techniki mające na celu sztuczne zawyżanie istotności strony
dla danych wyszukiwarek.• Istotność zawyżona – niezgodna z subiektywną oceną
dokonywaną przez większość użytkowników WWW.• Teoretycznie można sobie zatem wyobrazić etyczne
zastosowania boostingu – do poprawienia błędów w algorytmach wyszukiwarek
Ukrywanie (ang. hiding)• Techniki mające na celu zamaskowanie faktu wykorzystywania
boostingu• Ukrywanie przez ludźmi• Ukrywanie przed robotami sieciowymi
Gyongyi & Garcia-Molina, 2004
Techniki „webspamowe” cd.
Zwiększanie ważności stron (ang. boosting)
• Spamowanie wyrazami (ang. term spamming)Generowanie treści strony WWW tak, aby znalazła się w wyniku
wyszukiwania dla wielu zapytańGenerowana treść jest zwykle sztuczna – tj. zawartość strony
nie ma wartości (informacyjnej) dla człowiekaWynikiem jest pojedyncza strona WWW (lub nawet kod HTML
wysyłany jedynie na żądanie robota sieciowego)
• Spamowanie linkami (ang. link spamming)Wykorzystanie algorytmów analizy struktury hiperpołączeń tak,
aby zwiększyć istotność danej stronyWymaga stworzenia struktury wielu stron, często na różnych
serwerach
Spamowanie wyrazami (ang. term spamming)
Powtarzanie (ang. repetition)• Powtarzanie jednego lub kilku słów kluczowych• Celem jest zaburzenie działania algorytmów skalowania
atrybutów takich jak TF/IDF
• Np. „viagra viagra viagra viagra” -> 2015 – 7 930 000 wyników w Google (2014 – 7 300 000, 2013 – 12 600 000, 2011 – 12 800 000, 2010 – 77 300)
Zrzucanie (ang. dumping) • Umieszczanie w treści strony bardzo dużej liczby
niepowiązanych semantycznie słów• Np. można kopiować całe słowniki lub części słowników• Można też stosować metody generacji tekstu
Spamowanie wyrazami (ang. term spamming)
Kopiowanie ze wstawianiem (ang. Weaving)Kopiowanie treści innych stron WWW i wstawianie do środka
słów „spamowych”
Sklejanie (ang. Phrase Stitching)Sklejanie zdań i fragmentów tekstu z różnych źródeł (głównie
innych stron WWW, ale także wyników wyszukiwania np. z Google)
Generowane są przede wszystkim te elementy strony, które są traktowane jako szczególnie cenne przy ustalaniu tematyki strony, a zatem:• tytuł (<TITLE></TITLE>)• Forma URL• Meta tags• Tekst w odwołaniach hiperlinków• ...
Spamowanie linkami (ang. Link spamming)
Dla spammera sieć WWW dzieli się na trzy części:
● Strony niedostępne – nie ma możliwości zmiany ich zawartości
● Strony dostępne – można częściowo wpływać na ich zawartość np.• komentarze w blogach, fora dyskusyjne, itp.• można umieszczać tam odnośniki do stron własnych
• Strony własne – można całkowicie kontrolować ich zawartość
• mogą znajdować się w kilku (nastu, dziesięciu) różnych domenach
• to może być system współdzielony (np. linkor.pl itp.)
Farma linków (ang. Link Farm)Celem spammera jest zwiększenie istotności strony s, obliczanej
zwykle algorytmem typu PageRank
Należy zatem posiąść możliwie wiele stron i hiperpołączeń, odwołujących się do strony s – tworzenie bezpośrednich połaczeń jest jednak żmudne i nieefektywne
Przyspieszenie – Farma linków (ang. Link Farm)
Internet (strony
niedostępne)
Strony dostępne
Strona s
Strony własne
Czy to może dać jakiś efekt?Niech:
x – przyrost PageRank od stron dostępnych
y – PageRank strony s
Farma linków (ang. Link Farm) cd.
R ( p )=ε /n+ (1−ε )⋅ ∑(q , p )∈G
R (q )
out deg ree (q )
PageRank każdej strony z Farmy linków (ang. LinkFarm) = ε/n+(1- ε)(y/M)
y = ε/n + x + (1- ε)(M*(ε/n+(1- ε)(y/M)))y = x *(1/ ε(2- ε)) + (M/n)((ε-1)/(ε-2))
ε zwykle około 0.2 zatem otrzymujemyy≈2.78*x+0.45 (M/n)
to oczywiście znaczne uproszczenie
y≈2.78*x+0.45 (M/n)
Osiągamy• Zwielokrotnienie wartości PageRank „wpływającego” ze stron
dostępnych• Zwiększając liczbę stron własnych, możemy dowolnie zwiększać
wartość PageRank strony s – (z tym, że stron tych musi być rzeczywiście dużo)
Farma linków (ang. Link Farm) cd.
Internet (strony
niedostępne)
Strony dostępne
Strona s
Strony własne
Ukrywanie• Techniki tworzenia spamu wśród stron internetowych (ang. Web
Spamming) są aktywnie zwalczane przez firmy obsługujące największe wyszukiwarki
• Nie są to także techniki zbyt dobre z punktu widzenia public relations
• Niezbędne jest zatem ukrycie mechanizmów spamowych:
• Urywanie zawartości (ang. Content hiding)• Ukrywanie treści przed człowiekiem• Najczęściej wykorzystywana technika – użycie tych samych kolorów tła
i tekstu• “Płaszczowanie” (ang. Cloaking)
• Rozpoznawanie rodzaju dostępu do strony (robot / człowiek)• Inna treść przesyłana jest do przeglądarek WWW a inna do robotów
sieciowych• Przekierowania
• Alternatywna metoda typu „cloaking”• Przekierowania są zwykle obsługiwane przez przeglądarki a nie przez
roboty sieciowe
Wykrywanie spamu wśród stron internetowych (ang. Web Spam)
• Spamowanie wyrazami (ang. term spamming)• Jest to zadanie b. podobne do wykrywania klasycznego (tj.
pocztowego) spamu, mogą tu mieć zatem zastosowanie podobne techniki np.• Analiza tekstu przy wykorzystaniu algorytmów klasyfikacji• Heurystyki wykrywające „dziwne” wykorzystanie tagów HTML• Wykrywanie stron podobnych do siebie (ang. near duplicates)• ...
• Spamowanie linkami (ang. link spamming)• Tu jest trudniej, jak na razie nie wymyślono rzeczywiście
skutecznych metod• Wpływa bezpośrednio na działanie rankingu wyszukiwarek• Przykład metody – Trust Rank
Najważniejsza konferencja dot. WWW
WorldWideWeb Conference
• www2011.org• www2012.org• www2013.org• itd.
Do poczytania
Obliczenia dla całego WWW
• Całe WWW jest duże – a nawet bardzo duże
• Do analizy nie wystarczy superkomputer
• Niezbędne zatem zastosowanie klastrów• Tanie – nawet tysiąc komputerów PC jest tańsze od superkomputera
ale…• Pojedyncze komputery klasy PC są zawodne,• Pojedyncze komputery klasy PC są powolne,• Trzeba zatem odpowiednio projektować algorytmy.
Mapuj/redukuj (ang. Map/Reduce)
• Pomysł – wykorzystanie modelu map & reduce• Znane z języków funkcyjnych, ang. functional languages, (Lisp,
Scheme)• Np. w Pythonie:• map(function, list, ...)
• Zastosuj funkcję function do każdego elementu obiektu list i zwróc listę rezultatów.
• reduce(function, sequence[, initializer])• Zastosuj funkcję function z dwoma argumentami w sposób skumulowany do
elementów obiektu sequence, z lewej do prawej, aby zredukować sekwencję do pojedynczej wartości.
• Zalety – da się w ten sposób przedstawić wiele problemów• Łatwe do zrównoleglenia• Pojedyncze operacje atomowe łatwo powtórzyć w przypadku
awarii
Map / Reduce - przykład
Obliczyć sumę kwadratów ciągu (1..5):
map(lambda x: x**2, [1,2,3,4,5])
[1, 4, 9, 16, 25]
reduce(lambda x, y: x+y, [1, 4, 9, 16, 25]) ((((1+4)+9)+16)+25) = 55
W przypadku map – operator unarny
W przypadku reduce – operator binarny
Map/Reduce w praktyce• map(key, val) działa na każdym elemencie zbioru
• Wynik – nowe pary key / value
• reduce(key, vals) działa dla listy wartości związanych każdą unikalną wartością key wygenerowaną przez map()• Wynik – rezultat końcowy
• Przykład – zliczanie słów w dokumentach• Wejście: pary (url, zawartość)
• map(key=url, val=zawartość dokumentu):• Dla każdego słowa w należącego do zawartości, generuj(w, “1”)
• reduce(key=w, vals=unikalne wystąpienia):• Zlicz wszystkie “1” na liście vals• Generuj“(w, zliczona_suma)”
Zliczanie słów
Best lawyer is
a dead lawyer
best 1
lawyer 1
is 1
a 1
dead 1
lawyer 1
a 1
best 1
dead 1
is 1
lawyer 2
• map(key=url, val=zawartość dokumentu):• Dla każdego słowa w należącego do zawartości, generuj(w, “1”)
• reduce(key=w, vals=unikalne wystąpienia):• Zlicz wszystkie “1” na liście vals• Generuj“(w, zliczona_suma)”
map
reduce(best,[1])reduce(lawyer,[1,1])reduce(is,[1])reduce(a,[1])reduce(dead,[1])
Inne przykładyGREP• Wejście (url+offset, linia tekstu)• map(key=url+offset, val=linia):
• Jeżeli zawartość zgadza się z wyr. reg., generuj(linia, “1”)
• reduce(key=linia, values=unikalne_wystąpienia):• generuj(linia)
Odwrócony graf hiperlinków WWW• Wejście (source_url, targets)• map(key=source_url, val=target_url):
• Generuj(target_url, source_url)
• reduce(key=target_url, values=unikalne_wystąpienia_source_url):• stwórz listę unikalnych source_url• generuj(target_url, lista source_url)
Zastosowania
rozproszony grep Sortowanie rozproszone Modyfikacje grafu stron
internetowych
Reprezentacje dokumentów
statystyki logów dostępu do stron
Budowanie indeksu odwróconego
Grupowanie dokumentów Uczenie maszynowe Statystyczne tłumaczenie
maszynowe
... ... ...
Wykorzystanie w Googlewg Jeffrey Dean & Sanjay Ghemawat
Lic
zba
2003 2004
Typowy klaster @Google
• 100s/1000s 2-CPU x86 PCs, 2-4 GB RAM• Storage is on local IDE disks + GFS: distributed file system• Job scheduling system: scheduler assigns tasks to machines
Całość jako biblioteka C++ + bindings dla Python i Ruby
Implementacja
1. Podział zbioru key/value na kawałki, równoległe wykonanie map()
2. Po zakończeniu wszystkich zadań map()s zbieranie wartości value dla unikalnych wartości key
3. Podział zbioru key na kawałki, równoległe wykonanie reduce()
Zaleta - Jeśli któraś z operacji map() lub reduce() się nie wykona, można ją uruchomić jeszcze raz na innej maszynie (w innym węźle klastra)!
Implementacje – Googlowa (proprietary), Hadoop (Java)– Apache Foundation, Starfish, Skynet (Ruby), …
Proces map/reduceWejście
Stan przejściowy
Zgrupowane
Wyjście
Proces map/reduce cd.
Zwykle (w Google) około 200000 procesów map i 5000 procesów reduce na 2000 komputerów
Kilka uwagGłęboka analiza tekstu (ang. Deep Text Processing, DTP), a płytka analiza
tekstu (ang. Shallow Text Processing, STP)
WWW – czasem nie trzeba nawet analizować tekstu, aby osiągnąć efekty
Trzy obszary zastosowań Text Mining• Drobiazgi – dostarczanie wycinków informacji potrzebnych użytkownikowi
• Odpowiadanie na pytania (ang. Question Answering)• Wyszukiwanie informacji (ang. Information Retrieval)• ...
• Uogólnienia – zapanowanie nad dużymi kolekcjami dokumentów• Sumaryzacja• Klasyfikacja• Grupowanie
Rzeczywisty Text Mining: Odkrywanie interesujących, a nieznanych informacji (w tym szczególnie – korelacji pomiędzy danymi) w zbiorach dokumentów