Było tak, że ComputerWorld zaprosił mnie do wygłoszenia prezentacji na konferencji Big Data & Business Analytics. Ustaliliśmy, że interesującym studium przypadku do zaprezentowania będą analizy danych z mediów społecznościowych dotyczących wypowiedzi na temat wydarzeń na Ukrainie.
Przez ponad dwa miesiące zbieraliśmy Twitty, wiadomości na Facebooku, artykuły na czytnikach RSS jakoś związane z Ukrainą lub Krymem. Surowych danych zebrało się ponad 300GB, ale po odfiltrowaniu tego co ciekawe i wyznaczeniu interesujących agregatów zeszliśmy do paczki danych o rozmiarze kilkudziesięciu MB.
Do analiz wykorzystałem R i kilka innych narzędzi, między innymi IBM Many Eyes. Na przykładzie tego i kolejnych wpisów chciałbym pokazać jakie przykładowe analizy na tej paczce danych wykonywaliśmy. Dziś na przykład pokażę co można zrobić z użyciem narzędzia Many Eyes.
Wymóg użycia Many Eyes jest taki, że analizowane dane są publiczne i nie mogą być większe niż 5 MB. Z korpusu twittów wybrałem więc 5MB angielskich, interesujących ćwierków i dodałem do Many Eyes. Ten zbiór danych można pobrać z tego adresu, można go też dalej wizualizować używając platformy ME.

Pierwsza wizualizacja to chmura par tagów dostępna pod tym adresem. Wpisując do pola wyszukiwania jakąś frazę ograniczamy się o par słów zawierających określoną frazę. Mnie zainteresowały słowa występujące razem ze słowem 'crisis’. Okazuje się, że w korpusie twittów o Ukrainie często występuje para słów 'crisis china’. Po najechaniu na daną parę, można zobaczyć w jakim kontekście występuje ona w korpusie. W tym przypadku chodzi o to, że na ukraińskim kryzysie chiny zyskują. Można też szukać innych słów.

Drugie narzędzie eksploracji korpusów tekstów, które bardzo lubię, to drzewa kontekstowe. Zobacz je w akcji tutaj. Pozwalają na sprawdzenie, w jakim ,,prawostronnym/lewostronnym” kontekście występują określone słowa lub frazy. Po wpisaniu 'nato’ zaskoczyło mnie, jak często w kontekście nato pojawia się określenie 'war games’.

Ostatnią interesującą wizualizacją wykonaną z użyciem Many Eyes były grafy fraz. Interaktywny przykład dostępny jest tutaj. Fraza to dwa słowa rozdzielone określonym innym słowem lub znakiem, np. and / the / spacją. Na takie frazy można patrzeć jak na graf skierowany, z wagami na wierzchołkach i krawędziach odpowiadającymi częstości występowania słowa/frazy. Po najechaniu na krawędź lub wierzchołek takiego grafu można zobaczyć kontekst w jakim fraza/słowo występują w korpusie.
Miłej zabawy z tym korpusem. Niedługo więcej danych i interesujące wnioski wyłuskane z użyciem innych narzędzi.
Podoba mi się też nazwa narzędzia ,many eyes’ w kontekście analizy danych z twittera. Narzędzie pozwala na łatwe spojrzenie z różnych perspektyw na wypowiedzi dziesiątek tysięcy osób. Z takiej eksploracji można wyławiać wątki/tematy/myśli na które trudniej byłoby wpaść czytając jedynie niewielki zbiór bardziej dopracowanych artykułów.
Zastosowań dla takiej eksploracji jest bardzo wiele.
Niestety Many Eyes oparte jest o aplety java, które na moich komputerach bardzo gryzły się z przeglądarką chrome.
To są rzeczywiście bardzo estetyczne wizualizację, ale szczerze powiedziawszy nie jestem pewien w jaki sposób można oprzeć na nich jakieś konstruktywne, merytoryczne wnioski. Frekwencja słów, nawet wzbogacona kolokacjami, bez stosowania kontekstowego kodowania i dodatkowych zmiennych zazwyczaj nastręcza takie właśnie problemy. Interesujące wnioski można natomiast wyciągnąć na podstawie bardziej rudymentarnej informacji – liczby „lajków” w serwisie społecznościowym. Taka wizualizacja z zastosowaniem map Google’a (np. http://www.spoleczenstwo.pl/?p=237) potrafi w pewnych sytuacjach zastąpić dokładne badanie opinii (zwłaszcza gdy sytuacja społeczno-polityczna nie pozwala na rzetelne prowadzenie sondażu). Tu też mamy dane z masowego serwisu internetowego, też o polityce na Ukrainie, ale w efekcie powstaje >wiedzainformacja<).
Dziękuję za link, ciekawe badanie i z pewnością prostota prezentacji wyników jest tutaj dużą zaletą (choć skala ciemnoczerwony – ciemnoniebieski jest dosyć nieszczęśliwa).
Z mojej perspektywy, takie narzędzia jak Many Eyes są bardzo wygodne na etapie eksploracji, do generowania pytań badawczych, np. do pół-ręcznego zbadania jakie postawy widoczne są na twitterze. Postaw względem Euromajdanu może być więcej niż tylko za/przeciw.
Dane tekstowe są dosyć trudne do ścisłej analizy i jeśli ta ostatnia opiera się na frekwencjach słów zazwyczaj wynik niewiele mówi. Z moich własnych doświadczeń z QDA wynika, że owocne są dopiero analizy opierające się na materiale zakodowanym, a nie surowym tekście. Tweety możemy zakodować np. „pro-Ukraine”, „pro-Russia”, „Right Sector as substantial menace”, „Right Sector as myth”, „new russian imperialism”, „new NATO imperialism” itd. i dopiero później korelować kody. Problem jedynie w tym, że kodowanie ręczne jest bardzo czasochłonne. Wydaje mi się jednak, że można by spróbować stworzyć algorytmy które z jakimś tam poziomem błędów tworzyłyby takie kody (właśnie na podstawie wyszukiwania kluczowych fraz, kolokacji). Wówczas analiza dokonywałaby się w dwóch krokach: (1) wynikiem auto-kodowania byłaby macierz danych (z tweetami zagnieżdżonymi w autorach), (2) na której można by ręcznie prowadzić dowolne analizy korelacyjne. Kody nie musiałyby być w 100% rzetelne – jeśli błędy byłyby niesystematyczne, to nie zagrażałoby to poważnie badaniu siły relacji statystycznych.
Niestety dotychczas nie słyszałem o takim rozwiązaniu…
Takie automatyczne (bez nadzoru lub z nadzorem) tagowanie nazywa się czasem automated labeling / tagging / topics extraction. Słyszałem, że IPI PAN ma całkiem zaawansowane algorytmy wspierające taką analizę.
Ale gdy lista kategorii jest znana i dla każdej kategorii można zbudować przykładowy zbiór uczący, to dosyć zgrubnym rozwiązaniem będzie dowolny klasyfikator oparty na wektorze słów/stemów (tematów?).
O ile częstości pojedynczych słów faktycznie niewiele mówią, to częstości par mogą powiedzieć już znacznie więcej.
Planuję pokazać przykład w którym bada się szansę na wystąpienie słowa 'war’ w twittach z różnych państw, będzie więc miejsce na więcej przykładów.