Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00056 006249 19007482 na godz. na dobę w sumie
Data Mining. Eksploracja danych w sieciach społecznościowych. Wydanie III - książka
Data Mining. Eksploracja danych w sieciach społecznościowych. Wydanie III - książka
Autor: , Liczba stron: 376
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-5554-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> python - programowanie
Porównaj ceny (książka, ebook (-35%), audiobook).

Internetu nie można rozważać wyłącznie jako tworu techniki. Powstanie tej sieci doprowadziło do rozwoju różnych zjawisk społecznych. Z tej perspektywy na szczególną uwagę zasługują media społecznościowe. Są źródłem informacji, które, właściwie spożytkowane, mogą przynieść niezły dochód. Mogą też dać odpowiedzi na wiele pytań zadawanych przez naukowców z różnych branż. Sama eksploracja tych danych przynosi sporo satysfakcji i radości. Zaskakujące przy tym jest to, że przygotowanie zestawu potrzebnych narzędzi i nauka posługiwania się nimi zabiera naprawdę niewiele czasu i nie wymaga specjalnych talentów!

To trzecie, zaktualizowane wydanie popularnego podręcznika dla osób, które chcą zająć się wydobywaniem danych z sieci społecznościowych. Uwzględniono tu zmiany interfejsów API wprowadzone do poszczególnych platform i dodano rozdział o eksploracji Instagrama. Dowiesz się, jak dzięki danym z mediów społecznościowych określić sieć powiązań użytkowników, zorientować się, kto o czym mówi i gdzie się znajduje. Treść bogato zilustrowano przykładami kodu w Pythonie, a także plikami Jupyter Notebook lub kontenerów Dockera. Ciekawym elementem książki jest zbiór receptur dotyczących rozwiązywania konkretnych problemów z Twitterem.

W tej książce między innymi:

Jakie informacje dziś znajdziesz dzięki danym z Facebooka?

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Mining the Social Web: Data Mining Facebook, Twitter, LinkedIn, Google+, GitHub, and More, 3rd Edition Tłumaczenie: Radosław Meryk ISBN: 978-83-283-5554-5 © 2019 Helion S.A. Authorized Polish translation of the English edition of Mining the Social Web, 3E ISBN 9781491985045 © 2019 Matthew A. Russell and Mikhail Klassen This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Helion SA ul. Kościuszki 1c, 44-100 Gliwice tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/datam3.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/datam3 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści Przedmowa .............................................................................................................. 11 Część I. Przewodnik po sieciach społecznościowych Wstęp ....................................................................................................................... 25 1. Eksploracja Twittera: odkrywanie trendów, dowiadywanie się, o czym się rozmawia, i trochę więcej .......................................................................... 27 27 1.1. Przegląd 28 1.2. Dlaczego Twitter to jest „to”? 1.3. Odkrywanie API Twittera 30 30 33 36 40 46 47 1.3.1. Podstawowa terminologia związana z Twitterem 1.3.2. Tworzenie połączenia z API Twittera 1.3.3. Odkrywanie trendów 1.3.4. Wyszukiwanie tweetów 1.4. Analiza 140 (lub więcej) znaków 1.4.1. Wyodrębnianie podmiotów z tweetów 1.4.2. Analizowanie tweetów i występujących w nich podmiotów z wykorzystaniem analizy częstości 1.4.3. Obliczanie różnorodności leksykalnej tweetów 1.4.4. Badanie wzorców w retweetach 1.4.5. Wizualizacja danych częstości za pomocą histogramów 1.5. Uwagi końcowe 1.6. Zalecane ćwiczenia 1.7. Zasoby online 49 51 53 55 59 60 61 5 Poleć książkęKup książkę 2.1. Przegląd 2.2. Interfejs API Graph Facebooka 2.2.1. Wprowadzenie do API Graph 2.2.2. Protokół Open Graph 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej .......................... 63 64 64 66 70 75 78 88 95 96 96 2.3.1. Analizowanie stron Facebooka 2.3.2. Manipulowanie danymi z wykorzystaniem pakietu pandas 2.4. Uwagi końcowe 2.5. Zalecane ćwiczenia 2.6. Zasoby online 2.3. Analiza połączeń grafu społecznościowego 3. Eksploracja Instagrama: komputerowy wzrok, sieci neuronowe, 3.2.1. Tworzenie żądań do API Instagrama 3.2.2. Odczytywanie własnego kanału na Instagramie 3.2.3. Pobieranie medium według hashtagu rozpoznawanie obiektów i wykrywanie twarzy .......................................................... 99 100 3.1. Przegląd 3.2. Poznawanie API Instagrama 101 101 103 105 105 108 109 111 3.3. Anatomia posta na Instagramie 3.4. Szybki kurs na temat sztucznych sieci neuronowych 3.4.1. Trening sieci neuronowej pod kątem „oglądania” zdjęć 3.4.2. Rozpoznawanie cyfr pisanych odręcznie 3.4.3. Rozpoznawanie obiektów na zdjęciach przy użyciu wstępnie przeszkolonych sieci neuronowych 3.5. Wykorzystanie sieci neuronowych do postów na Instagramie 116 119 119 121 122 123 124 3.5.1. Oznaczanie zawartości obrazu 3.5.2. Wykrywanie twarzy na zdjęciach 3.6. Uwagi końcowe 3.7. Zalecane ćwiczenia 3.8. Zasoby online 4.1. Przegląd 4.2. Poznawanie API LinkedIna 4. Eksploracja sieci LinkedIn: stanowiska, współpracownicy i nie tylko ......................... 127 128 128 129 132 4.2.1. Tworzenie żądań do API LinkedIn 4.2.2. Pobieranie połączeń LinkedIn w pliku CSV 6 (cid:95) Spis treści Poleć książkęKup książkę 4.3. Krótki kurs grupowania danych 4.3.1. Normalizacja danych w celu umożliwienia analizy 4.3.2. Mierzenie podobieństwa 4.3.3. Algorytmy klasteryzacji 4.4. Uwagi końcowe 4.5. Zalecane ćwiczenia 4.6. Zasoby online 132 135 145 147 161 161 162 5. Eksploracja danych z plików tekstowych: obliczanie podobieństwa dokumentów, 5.4. Odpytywanie danych w języku naturalnym za pomocą TF-IDF 5.3.1. Częstość terminu 5.3.2. Odwrotna częstość dokumentu 5.3.3. TF-IDF wyodrębnianie kolokacji i inne .................................................................................163 164 5.1. Przegląd 5.2. Pliki tekstowe 164 166 5.3. Wprowadzenie do TF-IDF 166 168 169 172 172 176 177 184 193 194 195 195 5.4.1. Natural Language Toolkit — wprowadzenie 5.4.2. Zastosowanie współczynnika TF-IDF do języka naturalnego 5.4.3. Wyszukiwanie podobnych dokumentów 5.4.4. Analiza bigramów w języku naturalnym 5.4.5. Refleksje na temat analizy danych języka naturalnego 5.5. Uwagi końcowe 5.6. Zalecane ćwiczenia 5.7. Zasoby online 6. Eksploracja stron internetowych: przetwarzanie języka naturalnego 6.2.1. Przeszukiwanie wszerz w crawlingu stron internetowych w celu zrozumienia języka ludzkiego, tworzenie podsumowań postów na blogu i inne .........................................................................................................197 6.1. Przegląd 198 199 6.2. Scraping, parsowanie i crawling stron internetowych 202 205 207 210 214 222 226 6.3.1. Przetwarzanie języka naturalnego krok po kroku 6.3.2. Wykrywanie zdań w danych w języku naturalnym 6.3.3. Tworzenie streszczeń dokumentów 6.4. Zmiana paradygmatu. Analiza obiektów 6.3. Odkrywanie semantyki przez dekodowanie składni 6.4.1. Podsumowania danych w języku naturalnym Spis treści (cid:95) 7 Poleć książkęKup książkę 6.5. Jakość analiz do przetwarzania danych w języku naturalnym 6.6. Uwagi końcowe 6.7. Zalecane ćwiczenia 6.8. Zasoby online 7. Eksploracja skrzynek pocztowych: analiza, kto rozmawia z kim, 230 234 234 235 o czym, jak często i nie tylko .................................................................................... 237 238 7.1. Przegląd 7.2. Uzyskiwanie i przetwarzanie korpusu danych pocztowych 239 239 243 245 7.2.1. Uniksowe skrzynki pocztowe 7.2.2. Pobieranie danych Enron 7.2.3. Konwersja korpusu poczty na uniksowy format mbox 7.2.4. Konwertowanie uniksowych skrzynek pocztowych na obiekty DataFrame biblioteki pandas 247 249 250 253 257 258 260 262 264 265 265 266 7.3. Analiza korpusu Enron 7.3.1. Zapytania według zakresu dat (godzin) 7.3.2. Analiza wzorców w komunikacji nadawca-odbiorca 7.3.3. Wyszukiwanie wiadomości e-mail według słów kluczowych 7.4. Analiza własnych danych pocztowych 7.4.1. Dostęp do Twojej skrzynki Gmail za pomocą OAuth 7.4.2. Pobieranie i parsowanie wiadomości e-mail 7.4.3. Wizualizacja wzorców w e-mailu za pomocą frameworka Immersion 7.5. Uwagi końcowe 7.6. Zalecane ćwiczenia 7.7. Zasoby online 8. Eksploracja serwisu GitHub: badanie nawyków podczas współtworzenia 8.2.1. Tworzenie połączenia do API serwisu GitHub 8.2.2. Tworzenie żądań do API GitHuba oprogramowania, tworzenie grafów zainteresowań i nie tylko ................................. 269 270 8.1. Przegląd 8.2. Odkrywanie API GitHuba 270 272 275 277 280 281 284 8.3. Modelowanie danych za pomocą grafów właściwości 8.4. Analiza grafów zainteresowań serwisu GitHub 8.4.1. „Wysiewanie” grafu zainteresowań 8.4.2. Obliczanie miar centralności grafu 8.4.3. Rozszerzanie grafu zainteresowań z wykorzystaniem krawędzi „śledzi” dla użytkowników 287 8 (cid:95) Spis treści Poleć książkęKup książkę 8.4.4. Używanie węzłów jako punktów przestawnych w celu tworzenia bardziej wydajnych zapytań 8.4.5. Wizualizacja grafów zainteresowań 8.5. Uwagi końcowe 8.6. Zalecane ćwiczenia 8.7. Zasoby online Część II. Twitter. Receptury 296 301 303 304 305 9. Twitter. Receptury ...................................................................................................309 310 9.1. Dostęp do interfejsu API Twittera dla celów programistycznych 9.2. Wykorzystanie OAuth w celu uzyskania dostępu do interfejsu API Twittera dla aplikacji produkcyjnych 9.3. Odkrywanie trendów 9.4. Wyszukiwanie tweetów 9.5. Konstruowanie wygodnych wywołań funkcji 9.6 Zapisywanie i przywracanie danych JSON z wykorzystaniem plików tekstowych 9.7. Zapisywanie danych JSON i uzyskiwanie dostępu do nich za pomocą MongoDB 9.8. Pobieranie próbek z mechanizmu firehose Twittera za pomocą API Streaming 9.9. Pobieranie danych szeregów czasowych 9.10. Wyodrębnianie podmiotów z tweetów 9.11. Znajdowanie najpopularniejszych tweetów w kolekcji 9.12. Znajdowanie najpopularniejszych obiektów w kolekcji tweetów 9.13. Tabularyzacja analizy częstości 9.14. Znajdowanie użytkowników, którzy retweetowali status 9.15. Wyodrębnianie przypisania retweeta 9.16. Wykonywanie odpornych na błędy żądań do Twittera 9.17. Pobieranie informacji o profilu użytkownika 9.18. Wyodrębnianie podmiotów tweeta z dowolnego tekstu 9.19. Pobieranie wszystkich znajomych lub obserwatorów użytkownika 9.20. Analiza znajomych i obserwatorów użytkownika 9.21. Zbieranie tweetów użytkownika 9.22. Crawling grafu znajomości 9.23. Analiza treści tweetów 9.24. Tworzenie streszczeń celów łączy 9.25. Analizowanie ulubionych tweetów użytkownika 9.26. Uwagi końcowe 9.27. Zalecane ćwiczenia 9.28. Zasoby online 311 315 316 318 319 320 323 324 326 327 329 330 331 333 334 337 338 339 341 342 344 346 347 350 352 352 353 Spis treści (cid:95) 9 Poleć książkęKup książkę Część III. Załączniki A Informacje o maszynie wirtualnej przeznaczonej dla tej książki ................................ 357 B Elementarz OAuth ................................................................................................... 359 C Porady i wskazówki na temat Pythona i środowiska Jupyter Notebook ..................... 363 Skorowidz .............................................................................................................. 365 10 (cid:95) Spis treści Poleć książkęKup książkę ROZDZIAŁ 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej W tym rozdziale zagłębimy się w tematykę platformy Facebook za pośrednictwem jej interfejsu API (Social) Graph i zbadamy niektóre z ogromnych możliwości tego API. Facebook jest bez wątpienia sercem sieci społecznościowych. To, że ponad połowa z dwóch miliardów użytkowników1 codziennie aktualizuje statusy, publikuje zdjęcia, wymienia się wiadomościami, czatuje w czasie rzeczywistym, sprawdza fizyczne lokalizacje, gra w gry, robi zakupy i wykonuje różne inne czynności, jakie tylko można sobie wyobrazić — jest czymś w rodzaju wielkiego cudu. Z punktu widzenia eksploracji danych sieci społecznościowych bogactwo danych na temat osób, grup i produktów przechowywanych na Facebooku jest ekscytujące. Czysty interfejs API Facebooka oferuje niesamowite możliwości dokonywania syntezy wydobywanych danych w formie informacji (najcenniejszy towar na świecie) i gromadzenia cennych wiadomości. Z drugiej strony z tymi wielkimi możliwościami wiąże się olbrzymia odpowiedzialność. Aby wzmocnić ochronę użytkowników przed nadużywaniem należą- cych do nich danych, Facebook opracował najbardziej zaawansowane mechanizmy kontroli prywat- ności online (http://on.fb.me/1a1llg9). Warto zauważyć, że chociaż Facebook określa swoją sieć jako graf społecznościowy, to stale prze- kształca się ona w graf zainteresowań, ponieważ za pośrednictwem stron na Facebooku i zdolności reagowania (na przykład przez kliknięcia linków Lubię to) utrzymywane są relacje między ludźmi oraz tym, co ich interesuje. Dlatego coraz częściej Facebook jest określany mianem „grafu społecznych zainteresowań”. W większości przypadków można zaryzykować stwierdzenie, że grafy zaintere- sowań istnieją niejawnie i można je wywnioskować na podstawie większości źródeł danych społeczno- ściowych. Na przykład w rozdziale 1. podano, że Twitter jest w rzeczywistości grafem zainteresowań ze względu na asymetryczne „śledzenie” (lub, inaczej mówiąc, „zainteresowanie”) relacji pomiędzy ludźmi, miejscami lub przedmiotami. Pojęcie Facebooka jako grafu zainteresowań będzie się pojawiało w tym rozdziale. Do koncepcji jawnego tworzenia grafu zainteresowań z danych społecznościowych powrócimy w rozdziale 8. 1 Statystyki korzystania z internetu (http://bit.ly/1a1ljF8) pokazują, że populacja świata w 2017 r. została oszacowana na około 7,5 miliarda, natomiast szacowana liczba użytkowników internetu wynosi prawie 3,9 miliarda. 63 Poleć książkęKup książkę W pozostałej części tego rozdziału założono, że masz aktywne konto na Facebooku (http://on. fb.me/1a1lkcd). Jest ono niezbędne do uzyskania dostępu do interfejsów API Facebooka. W 2015 r. Facebook wprowadził w swoich interfejsach API zmiany (http://tcrn.ch/2zFetfo), które ograniczyły rodzaj danych dostępnych dla podmiotów z zewnątrz. Na przykład za pośrednictwem API nie można już uzyskać dostępu do aktualizacji statusu znajomego ani jego zainteresowań. Ta zmiana była spowo- dowana obawami o prywatność. Ze względu na wspomniane zmiany w tym rozdziale skupimy się bardziej na tym, jak można wykorzystać API Facebooka do pomiaru zaangażowania użytkowników na stronach o dostępie publicznym, takich jak te, które są tworzone przez firmy komercyjne lub celebry- tów. Nawet te dane stają się w coraz większym stopniu poufne, a uzyskanie dostępu do niektórych z tych własności może wymagać zgody za pośrednictwem platformy programistycznej Facebooka. Należy pamiętać, by pobrać najnowszy, poprawiony kod źródłowy przykładów za- mieszczonych w tym rozdziale (oraz we wszystkich pozostałych rozdziałach), który jest dostępny w serwisie GitHub (http://bit.ly/Mining-the-Social-Web-3E). Aby w mak- symalny sposób skorzystać z przykładowego kodu, pamiętaj również o użyciu wirtual- nej maszyny przeznaczonej dla tej książki. Została ona opisana w dodatku A. 2.1. Przegląd Ponieważ jest to drugi rozdział, pojęcia, które omówimy, będą nieco bardziej złożone niż te z roz- działu 1. Nadal jednak powinny być zrozumiałe dla szerokiego kręgu czytelników. W tym rozdziale omówimy następujące zagadnienia: (cid:120) API Graph Facebooka i sposób tworzenia żądań API. (cid:120) Protokół Open Graph i jego związek z grafem społecznościowym Facebooka. (cid:120) Programowy dostęp do stron publicznych, na przykład tych, których posiadaczami są właściciele popularnych marek i celebryci. (cid:120) Wyodrębnianie kluczowych miar społecznościowych, takich jak liczba polubień, komentarzy i udostępnień jako wskaźników zainteresowania odbiorców. (cid:120) Manipulowanie danymi za pomocą obiektów DataFrames z pakietu pandas oraz wizualizacja wyników. 2.2. Interfejs API Graph Facebooka Platforma Facebook jest dojrzałą, solidną i dobrze udokumentowaną bramą prowadzącą do tego, co być może jest najbardziej wszechstronnym i dobrze zorganizowanym magazynem informacji, jaki kiedykolwiek powstał, tak pod względem zakresu, jak i głębokości. Jest obszerna, ponieważ baza jej użytkowników stanowi około jednej czwartej całej populacji świata, i jest głęboka w odniesie- niu do ilości informacji, jakich dostarcza na temat każdego z jej użytkowników. Podczas gdy Twitter charakteryzuje się asymetrycznym modelem znajomości, który jest otwarty i bazuje na śledzeniu innych użytkowników bez ich jawnej zgody, model znajomości Facebooka jest symetryczny — aby uzyskać wgląd we wzajemne interakcje i działania, potrzebne jest porozumienie pomiędzy użytkownikami. 64 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę Poza tym, o ile praktycznie wszystkie interakcje, z wyjątkiem prywatnych wiadomości pomiędzy użytkownikami na Twitterze, mają status publiczny, o tyle Facebook pozwala na znacznie dokładniej- szą kontrolę prywatności. Znajomości na Facebooku mogą być zorganizowane i utrzymywane w postaci list o różnym poziomie widoczności, a poszczególne aktywności mogą być udostępniane wybranym znajomym. Na przykład link lub zdjęcie można udostępnić tylko znajomym z konkretnej listy, a nie wszystkim użytkownikom sieci społecznościowej. Jedynym sposobem na eksplorację danych z Facebooka jest zarejestrowanie aplikacji i użycie jej jako punktu wejścia do platformy programistycznej Facebooka. Co więcej, aplikacja ma dostęp wyłącznie do tych danych, które użytkownik jawnie udostępnił. Na przykład programista piszący aplikację Facebooka jest użytkownikiem, który loguje się do aplikacji, a aplikacja może uzyskać dostęp do tych danych, które wyraźnie jej wskażesz. W związku z tym jako użytkownik Facebooka możesz traktować aplikację jako jednego ze swoich znajomych na Facebooku. Zarządzasz tym, do czego aplikacja ma dostęp, i możesz w każdej chwili ten dostęp ograniczyć. Dokument Facebook Platform Policy (http://bit.ly/1a1lm3C) to lektura obowiązkowa dla każdego programisty Facebooka. Zestawiono w nim kompletny zbiór praw i obowiązków dla wszystkich użytkowników Facebooka, a także zaprezentowano ducha i literę prawa obowiązujące programistów Facebooka. Jeśli jeszcze tego nie zrobiłeś, poświęć chwilę na zapoznanie się z zasadami obowiązującymi programistów Facebooka i dodaj do zakładek stronę główną jego programistów (http://bit.ly/1a1lm3Q). Jest to bowiem punkt wejścia do platformy Facebook i jej dokumentacji. Pamiętaj również, że interfejsy API mogą się zmieniać. Z powodu obaw dotyczących bezpieczeństwa i prywatności uprawnienia dostępne dla użytkownika podczas eksperymentowania z platformą Facebook są ograniczone. Aby uzyskać dostęp do niektórych funkcji i punktów końcowych API, może być konieczne przesłanie aplikacji w celu jej przejrzenia i zatwierdzenia (http://bit.ly/2vDb2B1). Jeśli Twoja aplikacja spełnia warunki korzystania z usługi (http://on.fb.me/1a1lMXM), nie powinieneś mieć problemów z uzyskaniem zgody na jej wykorzystywanie. Osoby próbujące eksplorować dane z własnego konta nie powinny mieć problemów z umożliwieniem aplikacji dostępu do wszystkich danych konta. Jednak w przy- padku próby stworzenia aplikacji żądającej dostępu do obszerniejszych danych niż te, które są konieczne do wykonania przez nią zadania, istnieje duże prawdopodo- bieństwo, że użytkownicy nie zaufają jej w takim stopniu (co zresztą jest słuszne). Sposób uzyskania programowego dostępu do platformy Facebook pokażemy w dalszej części tego rozdziału. Przedtem jednak omówimy szereg przydatnych narzędzi programistycznych (http://bit.ly/ 1a1lnVf), w tym aplikację Graph API Explorer (http://bit.ly/2jd5Xdq). Wykorzystamy ją do wstępnego zapoznania się z grafem społecznościowym. Aplikacja ta zapewnia intuicyjny i kompleksowy sposób odpytywania grafu społecznościowego. Po zapoznaniu się ze sposobem działania takiego grafu przetłumaczenie zapytań na kod Pythona w celu automatyzacji i przetwarzania danych przycho- dzi zupełnie naturalnie. Chociaż w tym rozdziale będziemy sukcesywnie omawiać interfejs API Graph, zachęcamy do wstępnego zapoznania się z nim poprzez lekturę dokumentu Graph API Overview (http://bit.ly/1a1lobU) — obszernego wstępu do tego API. 2.2. Interfejs API Graph Facebooka (cid:95) 65 Poleć książkęKup książkę Należy zwrócić uwagę, że Facebook zakończył obsługę swojego języka zapytań FQL (ang. Facebook Query Language) (http://bit.ly/1a1lmRd). Począwszy od 8 sierpnia 2016 r. nie można już używać tych zapytań. Zamiast tego programiści muszą wykony- wać wywołania API Graph. Dla tych, którzy wcześniej opracowali aplikację bazującą na FQL-u, Facebook stworzył narzędzie API Upgrade Tool (http://bit.ly/2MGU7Z9), którego możesz użyć do aktualizacji. 2.2.1. Wprowadzenie do API Graph Jak wskazuje jego nazwa, społeczny graf Facebooka jest ogromną strukturą danych (http://bit.ly/ 1a1loIX), reprezentującą interakcje społeczne i składającą się z węzłów i połączeń pomiędzy nimi. API Graph zapewnia podstawowy sposób interakcji z grafem społecznościowym. Najlepszym sposo- bem na zapoznanie się z tym API jest poświęcenie kilku minut, by poeksperymentować z narzędziem Graph API Explorer (http://bit.ly/2jd5Xdq). Graph API Explorer nie jest zbyt skomplikowanym narzędziem. Posiada możliwość wstępnego wypełniania i debugowania tokena dostępu, ale poza tym jest to zwykła aplikacja Facebooka, która korzysta z tych samych interfejsów API co dowolne inne aplikacje. Graph API Explorer jest przy- datny w przypadku, gdy dysponujemy określonym tokenem OAuth powiązanym z konkretnym zestawem autoryzacji dla tworzonej aplikacji i chcemy uruchomić pewne zapytania w ramach ekspe- rymentów lub podczas cyklu debugowania. Powrócimy do tej ogólnej koncepcji wkrótce, przy okazji opisywania programowego dostępu do wywołań API Graph. Na rysunkach od 2.1 do 2.3 zilustrowano serię zapytań API Graph, które wynikają z klikania symbolu plus (+) i dodawania połączeń oraz pól. Na tych rysunkach warto zwrócić uwagę na kilka elementów: Token dostępu Token dostępu, który pojawia się w aplikacji, to token OAuth (http://bit.ly/1a1kZWN), zapewnia- jący wygodę zalogowanemu użytkownikowi. Jest to ten sam token OAuth, którego aplikacja potrzebowałaby, aby uzyskać dostęp do danych. Z tego tokena dostępu będziemy korzystać w dalszej części tego rozdziału. Warto jednak zapoznać się z dodatkiem B, aby uzyskać zwięzłe informacje o OAuth — w tym szczegóły dotyczące sposobu implementacji przepływu OAuth dla Facebooka w celu uzyskania tokena dostępu. Zgodnie z tym, o czym wspomniano w roz- dziale 1., jeśli jest to Twoje pierwsze spotkanie z OAuth, prawdopodobnie wystarczy, żebyś na razie wiedział, że protokół ten jest standardem społecznościowym, a jego nazwa pochodzi od Open Authorization. W skrócie mówiąc, OAuth jest mechanizmem pozwalającym użytkowni- kom na udzielanie aplikacjom firm zewnętrznych autoryzacji dostępu do danych konta bez konieczności udostępniania poufnych informacji, takich jak hasło. Szczegółowe informacje na temat implementacji przepływu OAuth 2.0 można znaleźć w dodatku B. Implementacja tego przepływu jest potrzebna do zbudowania aplikacji, która wymaga od dowolnego użytkownika autoryzacji w celu uzyskania dostępu do danych konta. 66 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę Identyfikatory węzłów Podstawą tego zapytania jest odpowiadający osobie o nazwisku „Matthew A. Russell” węzeł z identyfikatorem „644382747”, który reprezentuje aktualnie zalogowanego użytkownika aplikacji Graph Explorer. Wartości id i name dla węzła są nazywane polami. Podstawą zapytania równie dobrze może być dowolny inny węzeł, a jak wkrótce zobaczymy, „chodzenie” lub przeglą- danie wykresu i wysyłanie zapytań do innych węzłów (mogą to być ludzie lub przedmioty takie jak książki czy programy telewizyjne) jest bardzo naturalne. Ograniczenia połączenia Jak widać na rysunku 2.2, pierwotne zapytanie można zmodyfikować za pomocą połączenia friends. W tym celu należy kliknąć +, a następnie przewinąć do pozycji friends w rozwijanym menu connections. Połączenia friends, które wyświetlają się w konsoli, reprezentują węzły połączone z pierwotnym węzłem zapytania. W tym momencie możesz kliknąć dowolne niebieskie pole id w tych węzłach i zainicjować zapytanie do tego konkretnego węzła. W terminologii nauki o sieciach występuje tzw. wykres ego, ponieważ ma on aktora (lub ego) jako punkt skupienia lub logiczne centrum połączone z innymi węzłami znajdującymi się wokół niego. Gdybyśmy spróbowali narysować wykres ego, przypominałby on piastę i szprychy. Ograniczenia polubień Kolejna modyfikacja oryginalnego zapytania polega na dodaniu połączeń „polubień” dla każdego z Twoich znajomych, co pokazano na rysunku 2.3. Te dane są jednak teraz zastrzeżone, a aplikacje nie mogą już uzyskać dostępu do polubień znajomych. Facebook wprowadził zmiany w inter- fejsie API, ograniczając zakres informacji, do których aplikacje mogą uzyskać dostęp. Debugowanie Przycisk Debug może się przydać do rozwiązywania problemów z zapytaniami, które na podsta- wie autoryzacji związanych z tokenem dostępu powinny zwracać dane, ale tego nie robią. Format odpowiedzi JSON Wyniki zapytania API Graph są zwracane w wygodnym formacie JSON, który pozwala na łatwe wykonywanie operacji i przetwarzanie tych wyników. Rysunek 2.1. Wykorzystanie programu Graph API Explorer do zapytań o węzeł grafu społecznościowego 2.2. Interfejs API Graph Facebooka (cid:95) 67 Poleć książkęKup książkę Rysunek 2.2. Wykorzystanie aplikacji Graph API Explorer do stopniowego tworzenia zapytania o węzeł i połączenia ze znajomymi. Należy pamiętać, że niektóre dane mogą wymagać uprzywilejowanego dostępu, a aplikacje działające w piaskownicy mają dostęp tylko do bardzo ograniczonego zbioru danych. Na przestrzeni lat Facebook wprowadził wiele zmian w zasadach dostępu do danych Rysunek 2.3. Używanie aplikacji Graph API Explorer do stopniowego tworzenia zapytania o zainteresowania znajomych: zapytanie o węzeł, połączenia ze znajomymi i polubienia tych znajomych. Ten przykład ma być opisowy. Zasady korzystania z danych Facebooka stały się bardziej rygorystyczne. Kładzie się w nich większy nacisk na prywatność użytkowników 68 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę W dalszej części tego rozdziału opiszemy programowy dostęp do API Graph za pośrednictwem pakietu Pythona. Zapytania do API Graph można jednak tworzyć w sposób bardziej bezpośredni — poprzez HTTP. W tym celu wystarczy podejrzeć żądanie, które jest widoczne w programie Graph API Explorer, i wysłać je przez HTTP. Na przykład w kodzie z listingu 2.1, w celu uprosz- czenia procesu tworzenia żądania HTTP do pobierania znajomych i ich upodobań, użyto pakietu request (http://bit.ly/1a1lrEt) (zamiast znacznie bardziej uciążliwego pakietu ze standardowej bi- blioteki Pythona, takiego jak urllib). Aby zainstalować ten pakiet, należy wpisać w terminalu prawdopodobne polecenie pip install requests. Zapytaniem sterują wartości przekazane w para- metrze fields. Ma ono taką samą postać jak zapytanie budowane interaktywnie w programie Graph API Explorer. Szczególnie interesujące jest to, że w instrukcji likes.limit(10){about} wyko- rzystano własność API Graph zwaną ekspansją pola (http://bit.ly/1a1lsIE), która umożliwia tworzenie w pojedynczym wywołaniu API zagnieżdżonych zapytań do grafu. Listing 2.1. Wykonywanie żądań do API Graph przez HTTP import requests # pip install requests import json base_url = https://graph.facebook.com/me # Wskaż pola do pobrania fields = id,name,likes.limit(10){about} url = {0}?fields={1} access_token={2} .format(base_url, fields, ACCESS_TOKEN) # To API bazuje na HTTP. Żądania mogą być przesyłane w przeglądarce, # za pomocą narzędzia wiersza polecenia takiego jak curl lub za pomocą niemal # każdego języka programowania, poprzez wysłanie żądania do adresu URL. # Aby przekonać się samemu, kliknij hiperłącze, które wyświetli się w wynikach notatnika Jupyter Notebook, # kiedy uruchomisz tę komórkę kodu... print(url) # Zinterpretuj odpowiedź jako JSON i przekonwertuj ją z powrotem # na struktury danych Pythona content = requests.get(url).json() # Wyświetl estetycznie sformatowany ciąg JSON print(json.dumps(content, indent=1)) Dzięki składni rozwijania pola Facebooka można ustawić limity i przesunięcia dla zapytania API. Celem pierwszego przykładu jest pokazanie, że API Facebooka bazuje na HTTP. Poniżej przedsta- wiono kilka przykładów ograniczeń dla pól (przesunięcia), które to przykłady ilustrują możliwo- ści selektorów pola: # Pobranie 10 moich polubień fields = id,name,likes.limit(10) # Pobranie kolejnych 10 moich polubień fields = id,name,likes.offset(10).limit(10) Interfejs API Facebooka automatycznie dzieli na strony wyniki, które zwraca, co oznacza, że jeśli za- pytanie zwraca mnóstwo wyników, to interfejs API nie przekaże ich wszystkich naraz. Zamiast tego podzieli je na porcje (strony) i zwróci kursor wskazujący na następną stronę wyników. Więcej informacji na temat dzielenia wyników na strony można znaleźć w dokumentacji mechanizmu podziału na strony (http://bit.ly/1a1ltMP). 2.2. Interfejs API Graph Facebooka (cid:95) 69 Poleć książkęKup książkę 2.2.2. Protokół Open Graph Oprócz poznania interfejsu API Graph, który umożliwia poruszanie się po grafie społecznościo- wym i odpytywanie o znane obiekty Facebooka, warto również wiedzieć, że w kwietniu 2010 r., na tej samej konferencji F8, na której wprowadzono graf społecznościowy, Facebook udostępnił mechanizm znany jako protokół Open Graph (http://bit.ly/1a1lu3m) (OGP). Krótko mówiąc, OGP jest mechani- zmem, który umożliwia programistom tworzenie dowolnych stron internetowych na grafie społeczno- ściowym Facebooka poprzez wstrzykiwanie do strony metadanych RDFa (http://bit.ly/1a1lujR). Oprócz możliwości dostępu z „ogrodzonego obszaru” wewnątrz Facebooka do dziesiątek obiektów opisanych w podręczniku API Graph (http://bit.ly/1a1lvEr) (użytkownicy, zdjęcia, filmy, zalogowania, linki, komunikaty statusu itp.) możesz także spotkać w grafie społecznościowym strony z internetu reprezentujące istotne pojęcia. Innymi słowy, OGP jest sposobem „otwarcia” grafu społecznościo- wego. Opis tych pojęć znajdziesz w dokumentacji programistów Facebooka pod hasłem „graf otwarty” (ang. open graph)2. Istnieją praktycznie nieograniczone możliwości wykorzystywania OGP do „wszczepiania” stron in- ternetowych do grafu społecznościowego. Jest bardzo prawdopodobne, że spotkałeś już wiele z nich, nawet nie zdając sobie z tego sprawy. Dla przykładu rozważmy rysunek 2.4, który ilustruje stronę filmu The Rock z serwisu IMDb.com (http://imdb.com/). Na pasku bocznym po prawej stronie widzisz dość znajomy przycisk Lubię to (Like) z komunikatem „19,319 people like this. Be the first of your friends” (dosł. „19 319 osób to lubi. Bądź pierwszym spośród Twoich znajomych”). Serwis IMDb włączył tę funkcjonalność poprzez implementację OGP dla każdego adresu URL odpowiadającego obiektom istotnym do włączenia do grafu społecznościowego. Dzięki odpowiednim metadanym RDFa na stronie Facebook może jednoznacznie łączyć się z tymi obiektami i uwzględnić je w strumie- niach aktywności oraz innych kluczowych elementach interfejsu użytkownika. Rysunek 2.4. Strona IMDb zawierająca implementację OGP dla filmu The Rock 2 W tym punkcie, opisującym implementację OGP, termin graf społecznościowy, jeśli nie zaznaczono tego wyraźnie inaczej, jest używany zarówno w odniesieniu do grafu społecznościowego, jak i grafu otwartego. 70 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę Implementacja OGP za pośrednictwem przycisków typu Lubię to na stronach internetowych może wydawać się oczywista, jeśli przyzwyczaiłeś się do oglądania ich przez ostatnich kilka lat. Jednak fakt, że Facebook odniósł sukces, otwierając swoją platformę programistyczną w sposób umożliwiający włączanie dowolnych obiektów z internetu, jest dość ważny i ma potencjalnie istotne konsekwencje. W 2013 r. Facebook wdrożył semantyczną wyszukiwarkę o nazwie Facebook Graph Search. Był to mechanizm pozwalający użytkownikom wykonywać zapytania w języku naturalnym, bezpośrednio z paska wyszukiwania. Na przykład w pasku wyszukiwania można było napisać „Moi znajomi, którzy mieszkają w Londynie i lubią koty”, a Facebook znajdował część wspólną pomiędzy znajomymi mieszkającymi w Londynie i tymi, którzy jednocześnie są miłośnikami kotów. Ten nowy sposób odpytywania Facebooka jednak nie przetrwał długo. Pod koniec 2014 r. Facebook zastąpił tę funkcję wyszukiwania semantycznego podejściem bazującym na słowach kluczowych. Niemniej jednak graf łączący obiekty na Facebooku z innymi artefaktami wykorzystywany jest nadal. W listopadzie 2017 r. Facebook uruchomił samodzielną aplikację mobilną o nazwie Facebook Local, koncentrującą się na łączeniu fizycznych miejsc i wydarzeń oraz tworzeniu społeczności. Aplikacja ta może Ci na przykład powiedzieć, które restauracje mają największą popularność wśród Twoich znajomych na Facebooku. Technologia, na której bazuje ta aplikacja, jest niemal na pewno grafem społecznościo- wym Facebooka. Zanim przejdziemy do zapytań API Graph, przyjrzyjmy się pokrótce istocie implementacji OGP. Kanoniczny przykład z dokumentacji OGP, który pokazuje, jak zamienić stronę IMDb filmu The Rock w obiekt protokołu Open Graph w ramach dokumentu XHTML korzystającego z przestrzeni nazw, jest mniej więcej taki: html xmlns:og= http://ogp.me/ns# head title The Rock (1996) /title meta property= og:title content= The Rock / meta property= og:type content= movie / meta property= og:url content= http://www.imdb.com/title/tt0117500/ / meta property= og:image content= http://ia.media-imdb.com/images/rock.jpg / ... /head ... /html Takie fragmenty metadanych mają ogromny potencjał, jeśli zostaną użyte na wielką skalę, ponieważ umożliwiają korzystanie z adresów URI takich jak http://www.imdb.com/title/tt0117500 w celu jednoznacznego reprezentowania dowolnej strony internetowej — osoby, firmy, produktu itd. — w sposób możliwy do odczytania maszynowo, ale także wspierający wizję sieci semantycznej. Oprócz możliwości „polubienia” filmu The Rock użytkownicy za pośrednictwem niestandardowych akcji mogą potencjalnie wchodzić z nim w inne interakcje. Na przykład mogą wskazać, że oglądali film The Rock (http://bit.ly/2Qx0Kfo). Protokół OGP udostępnia obszerny i elastyczny zbiór działań pomiędzy użytkownikami a obiektami w ramach grafu społecznościowego. Jeśli jeszcze tego nie zrobiłeś, zobacz kod źródłowy HTML http://www.imdb.com/ title/tt0117500 i przekonaj się, jak wygląda zastosowanie formatu RDFa. 2.2. Interfejs API Graph Facebooka (cid:95) 71 Poleć książkęKup książkę W gruncie rzeczy odpytywanie API Graph o obiekty Open Graph jest niezwykle proste: aby pobrać szczegóły dotyczące obiektu, dołącz adres URL strony internetowej lub identyfikator obiektu do adresu http(s)://graph.facebook.com/. Na przykład próba pobrania adresu URL http://graph.facebook.com/ http://www.imdb.com/title/tt0117500 w przeglądarce internetowej zwróci następującą odpowiedź: { share : { comment_count : 0, share_count : 1779 }, og_object : { id : 10150461355237868 , description : Directed by Michael Bay. With Sean Connery, ... , title : The Rock (1996) , type : video.movie , updated_time : 2018-09-18T08:39:39+0000 }, metadata : { fields : [{ name : id , description : The URL being queried , type : string }, { name : app_links , description : AppLinks data associated with the URL , type : applinks }, { name : development_instant_article , description : Instant Article object for the URL, in developmen... type : instantarticle },{ name : instant_article , description : Instant Article object for the URL , type : instantarticle },{ name : og_object , description : Open Graph Object for the URL , type : opengraphobject: generic },{ name : ownership_permissions , description : Permissions based on ownership of the URL , type : urlownershippermissions } ], type : url }, id : http: //www.imdb.com/title/tt0117500 } Jeśli sprawdzisz źródło adresu URL http://www.imdb.com/title/tt0117500, przekonasz się, że pola w odpowiedzi odpowiadają danym w tagach meta strony. Nie jest to przypadek. Dostarczanie obszer- nych metadanych w odpowiedzi na proste zapytanie to podstawa sposobu zaprojektowanego działania OGP. Za pomocą narzędzia Graph API Explorer można uzyskać dostęp do jeszcze większej ilości metadanych dotyczących obiektów należących do grafu. Spróbuj wkleić do programu Graph API Explorer 380728101301?metadata=1. Skorzystaliśmy tu z identyfikatora filmu The Rock i poprosiliśmy o dodatkowe metadane. Oto przykładowa odpowiedź: 72 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę { created_time : 2007-11-18T20:32:10+0000 , title : The Rock (1996) , type : video.movie , metadata : { fields : [{ name : id , description : The Open Graph object ID , type : numeric string }, { name : admins , description : A list of admins , type : list opengraphobjectprofile }, { name : application , description : The application that created this object , type : opengraphobjectprofile }, { name : audio , description : A list of audio URLs , type : list opengraphobjectaudio }, { name : context , description : Context , type : opengraphcontext }, { name : created_time , description : The time the object was created , type : datetime }, { name : data , description : Custom properties of the object , type : opengraphstruct:video.movie }, { name : description , description : A short description of the object , type : string }, { name : determiner , description : The word that appears before the object s title , type : string }, { name : engagement , description : The social sentence and like count for this object and its associated share. This is the same info used for the like button , type : engagement }, { name : image , description : A list of image URLs , type : list opengraphobjectimagevideo }, { name : is_scraped , description : Whether the object has been scraped , type : bool }, { name : locale , description : The locale the object is in , type : opengraphobjectlocale 2.2. Interfejs API Graph Facebooka (cid:95) 73 Poleć książkęKup książkę }, { name : location , description : The location inherited from Place , type : location }, { name : post_action_id , description : The action ID that created this object , type : id }, { name : profile_id , description : The Facebook ID of a user that can be followed , type : opengraphobjectprofile }, { name : restrictions , description : Any restrictions that are placed on this object , type : opengraphobjectrestrictions }, { name : see_also , description : An array of URLs of related resources , type : list string }, { name : site_name , description : The name of the web site upon which the object resides , type : string }, { name : title , description : The title of the object as it should appear in the graph , type : string }, { name : type , description : The type of the object , type : string }, { name : updated_time , description : The last time the object was updated , type : datetime }, { name : video , description : A list of video URLs , type : list opengraphobjectimagevideo } ], type : opengraphobject:video.movie , connections : { comments : https://graph.facebook.com/v3.1/380728101301/comments?access _token=EAAYvPRk4YUEBAHvVKqnhZBxMDAwBKEpWrsM6J8ZCxHkLu... pretty=0 , likes : https://graph.facebook.com/v3.1/380728101301... pretty=0 , picture : https://graph.facebook.com/v3.1/380728101... pretty=0 , reactions : https://graph.facebook.com/v3.1/38072810...reactions? access_token=EAAYvPRk4YUEBAHvVKqnhZBxMDAwBKEpWrsM6J8ZC... pretty=0 } }, id : 380728101301 } Elementy w metadata.connections są wskaźnikami do innych węzłów grafu, które można przeszukiwać. W ten sposób można dostać się do innych intrygujących fragmentów danych, chociaż to, co jest się w stanie znaleźć, może być mocno ograniczone przez ustawienia prywatności Facebooka. 74 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę Spróbuj użyć identyfikatora Facebooka książki „MiningTheSocialWeb”, aby uzyskać szczegółowe informacje na temat jej oficjalnego fanpage’a (http://on.fb.me/1a1lAI8) za pomocą narzędzia Graph API Explorer. Możesz także zmodyfikować listing 2.1 w celu programowego zapytania o stronę https://graph.facebook.com/MiningTheSocialWeb, aby pobrać podstawowe informacje na jej temat, w tym opublikowane na niej treści. Na przykład dołączenie do tego adresu URL ciągu zapytania z kwalifikatorem, ta- kim jak ?fields=posts spowoduje zwrócenie listy opublikowanych treści. I ostatnia uwaga przed przejściem do omawiania programowego dostępu do API Graph. Podczas analizy możliwości OGP trzeba myśleć przyszłościowo i być kreatywnym. Trzeba jednak pamiętać, że technologie te stale ewoluują. Ponieważ odnosi się to do sieci semantycznej i ogólnie do standardów w internecie, użycie słowa „open” (otwarty) (http://tcrn.ch/1a1lAYF), co zrozumiałe, wywołało pewną konsternację. Po drodze wprowadzono różne wyjątki w specyfikacji (http://bit.ly/1a1lAbd), a niektóre prawdopodobnie są opracowywane nadal. Można również stwierdzić, że OGP to w istocie wysiłek jednego dostawcy i ma niewiele większe możliwości od elementów meta (http://bit.ly/ 1a1lBMa) dostępnych znacznie wcześniej, chociaż te dwie technologie wydają się różnie odbierane. Jednak to, czy OGP lub jakiś następca API Graph Search będzie kiedyś dominował w sieci, jest kwestią dyskusyjną. Z pewnością technologia ta ma duży potencjał; wskaźniki sukcesu pokazują, że rozwój idzie w dobrym kierunku, a w przyszłości, w miarę wprowadzania innowacji, może się wydarzyć wiele ekscytujących rzeczy. Teraz, gdy poznaliśmy szerszy kontekst grafu społecznościo- wego, wróćmy do opisu korzystania z API Graph. 2.3. Analiza połączeń grafu społecznościowego Oficjalny pakiet Pythona — SDK dla API Graph (http://bit.ly/2kpej52) — jest utrzymywanym przez społeczność użytkowników rozwidleniem, czyli kopią (ang. fork) repozytorium wcześniej obsługiwa- nego przez Facebook. Można go zainstalować zgodnie ze standardowym protokołem za pomocą menedżera pip, korzystając z polecenia pip install facebook-sdk. Pakiet ten zawiera kilka przydat- nych metod pomocniczych, które umożliwiają różne sposoby interakcji z Facebookiem. Jednak aby użyć API Graph do pobierania danych, trzeba znać tylko kilka kluczowych metod klasy GraphAPI (zdefiniowanych w pliku źródłowym facebook.py). Równie dobrze — jeśli takie są Twoje pre- ferencje — możesz kierować zapytania bezpośrednio przez HTTP (tak jak pokazano w listingu 2.1). Oto te metody: get_object(self, id, **args) Przykładowe użycie: get_object( me , metadata=1) get_objects(self, id, **args) Przykładowe użycie: get_objects([ me , some_other_id ], metadata=1) get_connections(self, id, connection_name, **args) Przykładowe użycie : get_connections( me , friends , metadata=1) request(self, path, args=None, post_args=None) Przykładowe użycie: request( search , { q : social web , type : page }) 2.3. Analiza połączeń grafu społecznościowego (cid:95) 75 Poleć książkęKup książkę Chociaż Facebook stosuje dla swojego API ograniczenia liczby żądań (http://bit.ly/ 2iXSeKs), limity są ustalane indywidualnie dla każdego użytkownika. Im więcej użytkowników ma Twoja aplikacja, tym wyższy jest jej limit żądań w czasie. Niemniej jednak należy starannie zaprojektować aplikację, tak aby korzystać z API w jak naj- mniejszym stopniu. Zalecaną najlepszą praktyką powinno być także obsługiwanie wszystkich występujących błędów. Najpopularniejszym (a często jedynym) argumentem reprezentowanym przez słowo kluczowe jest metadata = 1. Używa się go do pobrania — oprócz szczegółowych danych na temat obiektu — danych o połączeniach związanych z obiektem. Przyjrzyjmy się listingowi 2.2. Wprowadzono na nim klasę GraphAPI i użyto jej metod do wyszukiwania informacji o Tobie, Twoich połączeniach lub wyszukiwanym haśle, takim jak serwis społecznościowy. W tym przykładzie wprowadzono również funkcję pomocniczą o nazwie pp, która jest używana w pozostałej części tego rozdziału do estetycznego drukowania wyników w formacie JSON. Listing 2.2. Odpytywanie API Graph za pomocą Pythona import facebook # pip install facebook-sdk import json # Funkcja pomocnicza do estetycznego drukowania obiektów Pythona w formacie JSON def pp(o): print(json.dumps(o, indent=1)) # Utworzenie połączenia z interfejsem API Graph z wykorzystaniem tokena dostępu g = facebook.GraphAPI(ACCESS_TOKEN, version= 2.8 ) # Uruchomienie kilku przykładowych zapytań: # Pobierz mój identyfikator pp(g.get_object( me )) # Uzyskaj połączenia do identyfikatora # Przykładowe nazwy połączeń: feed , likes , groups , posts pp(g.get_connections(id= me , connection_name= likes )) # Wyszukaj lokalizację. Może wymagać zatwierdzonej aplikacji pp(g.request( search , { type : place , center : 40.749444, -73.968056 , fields : name, location })) API Facebooka uległo pewnym zmianom, a uzyskanie uprawnień do programowego pobierania publicznych treści ze stron Facebooka wymaga przesłania aplikacji w celu sprawdzenia i zatwierdzenia (http://bit.ly/2vDb2B1). Zapytanie dotyczące wyszukiwania lokalizacji jest interesujące, ponieważ zwraca elementy z grafu, które odpowiadają miejscom geograficznie bliskim podanej szerokości i długości geograficznej. Oto kilka przykładowych wyników z tego zapytania: { data : [{ name : United Nations , location : { city : New York , country : United States , latitude : 40.748801288774, longitude : -73.968307971954, state : NY }, 76 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę id : 10155092544275820 }, { name : United Nations Security Council , location : { city : New York , country : United States , latitude : 40.749474401558, longitude : -73.967919463251, state : NY , street : 760 United Nations Plaza , zip : 10017 }, id : 113874685435095 }, { name : United Nations Secretariat Building , location : { city : New York , country : United States , latitude : 40.749, longitude : -73.968, state : NY , street : United Nations Plz , zip : 10017 }, id : 846565615355416 }, { name : Manhattan, New York , location : { city : Manhattan , country : United States , latitude : 40.7779, longitude : -73.9675, state : NY , zip : 03501 }, id : 214957115200718 }, ... ], paging : { cursors : { after : MjQZD }, next : https://graph.facebook.com/v3.2/search?access_token=... } } Gdybyśmy skorzystali z narzędzia Graph API Explorer, wyniki byłyby identyczne. Podczas pracy nad rozwojem aplikacji często przydaje się zamienne używanie na- rzędzia Graph API Explorer i notatnika Jupyter Notebook, w zależności od konkret- nego celu. Zaletą narzędzia Graph API Explorer jest możliwość łatwego klikania wartości ID i tworzenia nowych zapytań podczas eksperymentowania. W tym momencie masz do dyspozycji zarówno narzędzie Graph API Explorer, jak i konsolę Pythona (i wszystko, co mają one do zaoferowania). Teraz, kiedy przeskalowaliśmy otoczony murem ogród Facebooka, spróbujmy przeanalizować niektóre z jego danych. 2.3. Analiza połączeń grafu społecznościowego (cid:95) 77 Poleć książkęKup książkę 2.3.1. Analizowanie stron Facebooka Facebook zaczynał jako portal czysto społecznościowy, bez grafu społecznościowego lub dobrego spo- sobu na obecność firm i innych podmiotów, lecz szybko dostosował się do potrzeb rynku. Obecnie swoje strony na Facebooku wraz z bazą swoich fanów mają firmy, kluby, książki i wiele innych rodza- jów podmiotów nieożywionych (http://on.fb.me/1a1lCzQ). Strony na Facebooku są potężnym narzę- dziem wykorzystywanym przez firmy do angażowania swoich klientów. Facebook dołożył wszelkich starań, aby umożliwić administratorom stron zrozumienie swoich fanów dzięki niewielkiemu przy- bornikowi, który został trafnie nazwany Insights (http://2ox6w7j/). Jeśli już jesteś użytkownikiem Facebooka, istnieje duże prawdopodobieństwo, że polubiłeś jedną lub więcej stron na Facebooku, które odzwierciedlają coś, co akceptujesz, lub coś, co jest według Ciebie interesujące. Pod tym względem strony Facebooka znacznie rozszerzyły możliwości grafu społeczno- ściowego jako platformy. Wyraźne miejsce na Facebooku dla stron podmiotów nieożywionych, przycisk Lubię to oraz charakter grafu społecznościowego łącznie stanowią potężny arsenał interesują- cej platformy graficznej, która niesie ze sobą ogrom możliwości (opis grafów zainteresowań i ich możliwości zamieszczono w podrozdziale „Dlaczego Twitter to jest »to«?” w rozdziale 1.). Analiza strony Facebooka tej książki Biorąc pod uwagę, że strona tej książki na Facebooku okazała się jednym z najpopularniejszych wyni- ków wyszukiwania hasła „social web”, użycie jej jako punktu wyjścia do zobrazowania niektórych pouczających analiz zamieszczonych w niniejszym rozdziale wydaje się dość naturalne3. Oto kilka pytań, które warto rozważyć w odniesieniu do facebookowej strony tej książki lub prawie każdej innej strony na Facebooku: (cid:120) Jak popularna jest strona? (cid:120) Jak bardzo zaangażowani są fani strony? (cid:120) Czy któryś z fanów tej strony jest szczególnie szczery i aktywny? (cid:120) Jakie są najczęściej poruszane tematy na stronie? Jedynym ograniczeniem w kwestii tego, o co możesz poprosić API Graph podczas wyszukiwania treści na Facebooku, jest Twoja wyobraźnia. Powyższe pytania powinny Cię skłonić do wybrania właściwego kierunku. Będziemy je również wykorzystywać jako podstawę do pewnych porównań stron. Przypomnijmy, że punktem wyjścia do naszej analizy było poszukiwanie hasła „social web”, w wyniku którego uzyskaliśmy dane o książce pod tytułem Mining the Social Web. Oto uzyskany wynik wyszukiwania: { data : [{ name : Mining the Social Web , 3 Podczas lektury tego punktu pamiętaj, że Facebook ogranicza publiczny dostęp do treści dla aplikacji, które nie zostały przesłane i zatwierdzone. Kod w tym punkcie i wynik jego działania zamieszczono w celach poglądowych. Warto zapoznać się z dokumentacją programisty dostępną tutaj: https://developers.facebook.com/docs/apps/review. 78 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę id : 146803958708175 }, { name : R: Mining spatial, text, web, and social media , id : 321086594970335 } ], paging : { cursors : { before : MAZDZD , after : MQZDZD } } } Dla każdego elementu w wynikach wyszukiwania moglibyśmy użyć ID jako podstawy zapytania wy- konywanego za pomocą metody get_object egzemplarza obiektu facebook.GraphAPI. Jeśli nie masz do dyspozycji liczbowego identyfikatora, możesz wykonać żądanie wyszukiwania po nazwie i spraw- dzić uzyskany wynik. Zgodnie z tym, co pokazano w listingu 2.3, za pomocą metody get_object możemy uzyskać więcej informacji — na przykład liczbę fanów na Facebooku. Listing 2.3. Odpytywanie interfejsu API Graph w celu wyszukania informacji o książce Mining the Social Web i liczbie jej fanów # Wyszukaj identyfikator strony według nazwy pp(g.request( search , { q : Mining the Social Web , type : page })) # Pobierz identyfikator książki i sprawdź liczbę fanów mtsw_id = 146803958708175 pp(g.get_object(id=mtsw_id, fields=[ fan_count ])) Oto wynik działania tego kodu: { data : [{ name : Mining the Social Web , id : 146803958708175 }, { name : R: Mining spatial, text, web, and social media , id : 321086594970335 } ], paging : { cursors : { before : MAZDZD , after : MQZDZD } } } Zliczanie liczby fanów, których ma strona, i porównywanie jej z innymi stronami z podobnej kategorii może być sposobem pomiaru siły „marki” na Facebooku. Mining the Social Web jest dość niszową książką techniczną, więc warto porównać ją z innymi książkami wydawanymi przez O’Reilly Media, które mają strony na Facebooku. Dla każdego rodzaju analizy popularności niezbędne do zrozumienia szerszego kontekstu są porów- nywane elementy. Istnieje wiele sposobów wykonywania porównań. Od razu rzuca się w oczy kilka uderzających danych. W czasie pisania tej książki jej wydawca, wydawnictwo O’Reilly Media 2.3. Analiza połączeń grafu społecznościowego (cid:95) 79 Poleć książkęKup książkę (http://on.fb.me/1a1lD6F), miał około 126 000 polubień, natomiast język programowania Python (http://on.fb.me/1a1lD6V) — 121 000 polubień. Tak więc popularność książki Mining the Social Web wynosiła około 2 całej grupy fanów wydawcy oraz grupy fanów języka programowania. Jest oczywiste, że popularność tej książki będzie wzrastać, mimo że jej temat jest niszowy. Z pewnością lepiej byłoby porównać inną niszową książkę, podobną do Mining the Social Web, lecz podczas przeglądania danych na Facebooku nie jest łatwo znaleźć dobre porównanie w rodzaju „jabłko z jabłkiem”. Na przykład aby znaleźć dobrą stronę do porównywania, nie można wyszukiwać dowolnych stron i filtrować wyniki, tak by zostały same strony o książkach. Zamiast tego trzeba szukać stron o książkach, a następnie filtrować zestaw wyników według kategorii, tak aby pobrać wyłącznie strony w kategorii „książki”. Do rozważenia jest jednak kilka opcji. Jedną z nich jest wyszukiwanie podobnego tytułu wydawnictwa O’Reilly. Na przykład w momencie pisania drugiego wydania tej książki wyniki wyszukiwania API Graph dla zapytania Programming Collective Intelligence (podobna niszowa książka O’Reilly) zawierały stronę społeczności z około 925 polubieniami. Inna możliwość polega na wykorzystaniu do porównania pojęć z protokołu Open Graph Facebooka. Na przykład katalog online O’Reilly wykorzystywany do implementacji OGP dla wszystkich jego tytułów zawiera przyciski Lubię to zarówno dla książki Mining the Social Web, wydanie drugie (http://oreil.ly/1cMLoug), jak i dla książki Programming Collective Intelligence (http://oreil.ly/1a1lGzw). Możemy bez trudu wysyłać żądania do API Graph, aby zobaczyć, jakie są dostępne dane, po prostu żądając w przeglądarce następujących adresów URL: Zapytanie API Graph dla książki Mining the Social Web https://graph.facebook.com/http://shop.oreilly.com/product/0636920030195.do Zapytanie API Graph dla książki Programming Collective Intelligence https://graph.facebook.com/http://shop.oreilly.com/product/9780596529321.do W przypadku zapytań programowych w Pythonie adresy URL są obiektami, które odpytujemy (po- dobnie jak adres URL wpisu IMDb dla The Rock był tym, o co pytaliśmy wcześniej), zatem w kodzie możemy zapytać o te obiekty w sposób pokazany w listingu 2.4. Listing 2.4. Odpytywanie interfejsu API Graph o obiekty Open Graph na podstawie ich adresów URL # Link do katalogu MTSW pp(g.get_object( http://shop.oreilly.com/product/0636920030195.do )) # Link do katalogu PCI pp(g.get_object( http://shop.oreilly.com/product/9780596529321.do )) Należy pamiętać o subtelnej, ale bardzo ważnej różnicy. Chociaż zarówno strona katalogu O’Reilly, jak i fanpage książki Mining the Social Web na Facebooku logicznie reprezentują tę samą książkę, węzły (i towarzyszące im metadane, takie jak liczba polubień) odpowiadające stronie na Facebooku i stronie katalogu O’Reilly są całkowicie niezależne. Łączy je tylko to, że każda przedstawia ten sam podmiot z rzeczywistego świata. 80 (cid:95) Rozdział 2. Eksploracja Facebooka: analizowanie fanpage’y, znajomości i więcej Poleć książkęKup książkę Całkowicie odrębnym rodzajem analizy, znanej jako rozdzielczość encji (ang. entity resolution) (lub ujednoznacznienie encji — ang. entity disambiguation — w zależności od sposobu ujęcia problemu), jest proces agregacji wzmianek o podmiotach w pojedyn- czy byt platoński. Na przykład w tym przypadku w procesie analizy encji mogliby- śmy zaobserwować, że w grafie Open Graph istnieje wiele węzłów, które faktycznie odwołują się do tego samego platońskiego bytu Mining the Social Web, i stworzyć pomiędzy nimi połączenia wskazujące, że w rzeczywistości dotyczą one tego samego podmiotu w świecie rzeczywistym. Rozdzielczość encji to ekscytująca dziedzina badań, która w przyszłości nadal będzie wywierała głęboki wpływ na sposób, w jaki wyko- rzystujemy dane. Eksplorację API Graph z poziomu notatnika Jupyter Notebook zaprezentowano na rysunku 2.5. Rysunek 2.5. Eksploracja API Graph jest bardzo prosta dzięki interaktywnemu środowisku programistycznemu, takiemu jak Jupyter Notebook Chociaż podczas eksploracji danych często nie jest możliwe dokonywanie zapewniających miarodajny wynik porównań typu „jabłko do jabłka”, wciąż jest wiele do nauczenia się. Eksploracja zbioru danych wystarczająco obszernego, aby można było zgromadzić silne trendy w danych, często dostarcza wszystkich niezbędnych informacji, które są potrzebne, gdy napotka się problem po raz pierwszy. Angażowanie fanów i mierzenie siły marki mediów społecznościowych Podczas gdy niektóre gwiazdy są bardzo aktywne w mediach społecznościowych, inne pozostawiają zadanie zaangażowania publiczności online specjalnemu zespołowi ds. marketingu w sieciach spo- łecznościowych lub specjalistom w dziedzinie public relations. Strony na Facebooku to świetny sposób 2.3. Analiza połączeń grafu społecznościowego (cid:95) 81 Poleć książkęKup książkę na kontakt z fanami. To prawda niezależnie od tego, czy jesteś popularnym celebrytą, gwiazdką YouTube’a, czy po prostu uruchamiasz stronę na Facebooku dla organizacji non profit, w której jesteś wolontariuszem. W tym punkcie będziemy eksplorować dane stron Facebooka trzech niezwykle popularnych muzy- ków, aby dowiedzieć się, jak bardzo fani na Facebooku reagują na informacje publikowane na tychże stronach. Na tej podstawie można zrozumieć, dlaczego dla tych artystów (i ich menedżerów ds. reklamy) te informacje są tak ważne. Dbanie o to, by fani byli zaangażowani i by była z nimi łączność, ma kluczowe znaczenie dla tego, żeby wprowadzenie produktu na rynek, sprzedaż biletów na imprezę czy zmobilizowanie fanów zakończyło się sukcesem. Skuteczna komunikacja z publicznością ma zatem duże znaczenie. Zła komunikacja może odstraszyć nawet najbardziej lojalnych fanów. Z tego powodu dla artysty lub publicysty zdobycie twardych da- nych dotyczących zaangażowania swojej publiczności na Facebooku może mieć duże znaczenie. Właśnie o to chodzi w tym punkcie. Artyści, których wybraliśmy do porównania, to Taylor Swift, Drake i Beyoncé. Każdy z nich jest nie- zwykle doświadczony i utalentowany. Wszyscy mają strony na Facebooku z dużą liczbą fanów. Aby znaleźć identyfikatory stron każdego z artystów, możesz użyć narzędzi wyszu- kiwania, które omówiliśmy wcześniej. Oczywiście choć w przedstawionych przy- kładach wykorzystano dane ze stron na Facebooku, to prezentowane koncepcje mają bardziej ogólny charakter. Podobne statystyki możesz spróbować pobierać z innych platform — na przykład z Twittera. Możesz także napisać kod przetwarzający portale informacyjne w poszukiwaniu wzmianek o konkretnych celebrytach lub markach, które chcesz śledzić. Jeśli kiedykolwiek korzystałeś z Google Alerts, powinieneś mieć pogląd na temat tego, jak to może wyglądać. W listingu 2.5 zidentyfikujemy każdego artystę według identyfikatora strony, który można pobrać za pomocą operacji wyszukiwania, tak jak w listingu 2.3. Następnie zdefiniujemy funkcję pomocniczą do pobierania liczby fanów stron jako liczby całkowitej. Zapiszemy te liczby w trzech różnych zmien- nych, a następnie wyświetlimy wyniki. Listing 2.5. Zliczanie całkowitej liczby fanów strony # Poniższy kod może wymagać przesłania aplikacji do przeglądu # i zatwierdzenia. Zobacz https://developers.facebook.com/docs/apps/review # Weźmy na przykład trzech popularnych muzyków i ich identyfikatory stron taylor_swift_id = 19614945368 drake_id = 83711079303 beyonce_id = 28940545600 # Deklaracja funkcji pomocniczej do pobierania całkowitej liczby fanów („polubień”) strony def get_total_fans(page_id): return int(g.get_object(id=page_id, fields=[ fan_count ])[ fan_count ]) tswift_fans = get_total_fans(taylor_swift_id)
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Data Mining. Eksploracja danych w sieciach społecznościowych. Wydanie III
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: