#debataACTA, twitteR, Twitter i R

Zaczęło się niewinnie. Dwa tygodnie temu kolega Grzesiek P. powiedział, że analizę nastawienia (ang. Sentiment analysis) na dużych ilościach tekstu robi się banalnie. Tydzień temu kolega Paweł Ch. powiedział, że API twittera ma limit do 70 zapytań na minutę. W piątek przy okazji rozmowy o raporcie ,,Obiegi Kultury” Alek T. zapytał mnie czy mam doświadczenie w analizie danych z Twittera bo chętnie zobaczyłby się działo na kanale (moje autorskie tłumaczenie hashtaga) #debataACTA. Ponieważ nie interesowałem wcześniej się ani analizą nastawienia, ani API twittera ani hashtagami, stwierdziłem, że warto zobaczyć co w trawie ćwierka.

Tak się składa, że dzięki Jeffowi Gentry’emu API Twittera jest łatwo dostępne z poziomu R. Wystarczy załadować pakiet twitteR i kilka prostych funkcji pozwala na łatwą interakcję z ćwierkami z serwisu Twitter.com (ok, dalej będę używał tłumaczenia ,,wiadomościami”).

Zobaczmy prosty przykład.

> # interfejs do API twittera
> library(twitteR)
> # pobierz maksymalnie 1500 wiadomości zawierających etykietę #debataACTA
> # stworzonych 7 lutego 2012
> tweets = searchTwitter('#debataACTA', n=1500, until="2012-02-08", since="2012-02-06")
> # zamień wyniki na ramkę danych i wyświetl treść oraz autora pierwszej z wiadomości
> debataACTA =  twListToDF(tweets)
> debataACTA[1,c(1,4,10)]
                                                                                    text             created screenName
1 Mamy tyle Kultury i Edukacji ile na nia wydajemy 0,75% Budzetu #debataACTA #PremierRP 2012-02-07 15:37:46     TPHMAC

Ten pakiet ma te same ograniczenia co API, czyli 70 zapytań na minutę. Ale każde zapytanie to 25 wiadomości, a więc w sumie możemy ściągnąć do 1500 wiadomości na minutę.

Prostą pętlą, z pewną pomocą internetu, zebrałem wpisy z Twittera z okresu od 4 do 12 lutego 2012 zawierające etykietę #debataACTA. po oczyszczeniu zapisałem je w postaci pliku csv, który można pobrać z adresu tutaj.

Mamy więc dane, przyjrzyjmy się im. Do tematu analizy nastawienia podejdziemy w piątek, a dziś przyjrzyjmy się jak wyglądała aktywność ćwierkających. Na rysunku 1 można zobaczyć ile wpisów pojawiało się z tą etykietą. Temat jak widać skończył się z samą debatą. Na rysunku 2 można zobaczyć bliżej interesujący okres liczby wiadomości nadczas trwania debaty. Rzuca się w oczy szczególnie ta chwila ciszy przed burzą.

[Rysunek 1. Liczba wiadomości zawierających etykietę #debataACTA na godzinę. Kliknij by powiększyć.]

[Rysunek 2. Liczba wiadomości zawierających etykietę #debataACTA na 5 minut (debata rozpoczęła się po godzinie 14). Kliknij by powiększyć.]

Gdyby ktoś chciał sprawdzić o czym mówiono w której minucie to komentarze z znaczkami synchronizacyjnymi znaleźć można np. tutaj.

W sumie mamy ponad 6.5 tysiąca wiadomości. Zobaczmy kto je pisał. Zamiast wpisywać ksywy ćwierkających pokażę ilu z nich generuje odpowiedni procent wszystkich wiadomości.

[Rysunek 3. Na osi y przedstawiono liczbę wiadomości wygenerowanych przez X najaktywniejszych użytkowników. Okazuje się, że 7% piszących (dokładnie 72) generuje 50% wiadomości. A tylko 2% (dokładnie 21) generuje 25% wszystkich wiadomości. Kliknij by powiększyć.]

Ściągnęliśmy dane, zobaczyliśmy podstawowe podsumowania, czas zabrać się za analizę nastawienia. Więcej na ten temat w piątek (muszę ją jeszcze zrobić) a dzisiaj zakończę podsumowaniem z procentowym udziałem wiadomości zawierających ikonę buźki (;-), ;), :-), :))) itp).

[Rysunek 4. Procentowy udział wiadomości zawierających buźkę. Kliknij by powiększyć.]

Jak widać przez pierwsze dwie godziny debaty nie było ćwierkającym do śmiechu.

10 thoughts on “#debataACTA, twitteR, Twitter i R”

  1. Swojego czasu robiłem podobną analizę dla portalu lastfm.pl a dokładnie festiwalu Brutal Assault 2011 i ładnie widać jak działa zasada Pareto (a dokładnie 20% userów (N=472) napisało 85% komentarzy) :). Portal ten udostępnia praktycznie wszystkie informacje w postaci API (http://www.lastfm.pl/api), więc będzie można sprawdzić jak ludzie „płaczą w komentarzach” po śmierci Whitney Huston itp.

  2. Świetne. Ten przykład zasady Pareto zdaje się wskazywać, że i tu, jak wszędzie, mamy do czynienia z …zupełną przypadkowością (normalnością? Jak w „rozkładzie normalnym”?). Albo raczej, że cokolwiek się dzieje, dzieje się zgodnie z „zasadami” zupełnie niezależnymi od naszej „woli” (czy ktoś jeszcze wierzy w ten wymysł Tomasza z Akwinu?) Podobnie pusty śmiech mnie ogarnia, gdy widzę „wyjaśnienia” zgodności „przewidywań” giełdowych (ex-post!!!) z ciągiem Fibonacciego…

    1. Zasada Pareto, tej nazwy mi brakowało.
      Nie znam jednak związku pomiędzy zasadą Pareto a rozkładem normalnym. Rzeczywiście zasada 20%/80% jest popularna w wielu zastosowaniach i dorabia się do niej rozmaite interpretacje.
      W każdym razie tutaj ta miara koncentracji jest moim zdaniem użyteczna. Pokazuje między innymi, że struktura zaangażowania nie jest ,,podejrzana”. A byłaby podejrzana gdyby np. 90% treści było generowane przez 2 osoby, wtedy można by podejrzewać manipulację. Również gdyby okazało się, że jest 30 różnych osób z których każda ma podobny wkład (bo manipulator ma 30 kont i korzysta zamiennie z różnych) moglibyśmy ,,podejrzewać” manipulację.

      Tak więc typowość tego rozkładu niesie imho użyteczną informację.

  3. Albo po prostu pokazuje, że zwykle publicznie rozmawia ze sobą mała grupa osób, która się nudzi albo się zaangażowała. 🙂

  4. Jeśli (jak wiemy skądinąd) przeciętnie, w przeciętnym społeczeństwie na półkuli północnej, 80% wydatków opieki zdrowotnej generowanych jest przez 20% społeczeństwa (nic w tym „podejrzanego”) i, podobnie, 80% bogactwa społeczeństwa jest w posiadaniu 20% jego członków (również i tu nie ma niczego „podejrzanego”, co już zauważył sam Pareto, no, chyba że politycznie), to znaczy, że zainteresowanie takim tematem, w którego omawianiu 20% osób generuje 80% wymian „informacji” jest tak samo … „naturalne”, jak rozkład popytu na opiekę zdrowotną czy rozkład bogactwa. Czyli takie samo, jak zainteresowanie każdym innym tematem. Czy to ACTA czy to nasza minister sportu, czy inspektor Rutkowski, czy cokolwiek, o czym danego dnia „dyskutuje” kolejka do warzywniaka…. Tak mi po prostu do głowy przyszło. (Problemy rzeczywiście istotne są „dyskutowane” przez ekstrema rozkładu normalnego; np. Niels Bohr sam wygenerował 99% pewnego tematu, a z drugiej strony 99% ludzi nie „dyskutuje” o niczym zupełnie, co też jest istotne… Just kidding.)

    1. Ok, rozumiem ze chodzi o temat z kolejki po warzywa 😉
      Same technikalia zwiazane z pozyskiwaniem danych z Twittera i ich analiza sa ciekawe (przynajmniej dla mnie).
      Troche cwiczen na tym temacie i bedzie mozna przejsc do analizy wpisow politykow.
      A debata nt ACTA, to tez interesujace zjawisko, zobaczyc jakie sa komentarze (zebrane w jednym pliku, mozna je przeczytac) w odpowiedzi na zdarzenia z debaty.

    1. Tak, to ciekawy przykład użycia.
      Nie da się go jednak bezpośrednio zastosować do języka polskiego. Przynajmniej nie udało mi się nigdzie znaleźć listy słów pozytywnych i negatywnych. Dla języka angielskiego więcej narzędzi jest dostępnych.
      Używając biblioteki morfologik można określić (z jakąś dokładnością) czy słowo zostało użyte w znaczeniu negatywnym.
      Jakiś narzędzia więc są, brakuje tylko ciekawego tematu aby analiza znaczenia prowadziła do interesujacych wniosków.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *