Először egy népszerű oldal Twitter feedjét szerettem volna elemezni, jobban mondva hogy mennyi RT-t kap egy-egy hír, de úgy tűnik a magyar felhasználókat nem kapta el a Twitter láz és nem lehet elég adatot találni egy-egy hírre. Így hát váltottam a nyest.hu Hol van az a Mahacskala cikkétől inspirálva első körben begyűjtöttem pár Dzsudzsákról szóló csiripelést, mivel mostanában sok hír kering(ett) leghíresebb futballistánk körül és a hab a tortán hogy nem csak magyarul! Így a begyűjtött tweeteken sok-sok dolgot bemutathatunk :D Figyelem, ez egy technikai poszt, Python kóddal, pip_/easy_install használatát lehet hogy nem úszod meg.
Előzetes megjegyzések
- Az összes szükséges kódot feltöltöttem egy github repoba.
- A kódrészleteket minimális módosításokkal Matthew A. Russel, Mining the Social Web könyvének első fejezetéből vettem át (könyvismertetőnket itt olvashatod).
A probléma
Hogyan tudjuk meg hogy egy adott téma hogyan terjedt el a Twitteren. Alapesetben ha érdekele minket hogy Dzsudzsákról milyen tweetek jelentek meg, beírjuk a nevet a Twitter-keresőbe (http://search.twitter.com/) és valami ilyesmit kapunk:
searc.twitter.com keresési eredmények |
Ebből nem derül még ki hogy kikeket retweeteltek a legtöbben és hogyan haladtak a hírek, milyen "körök" csiripeltek Dzsudzsákról és hogyan kapcsolódnak. Most csak erre szűkítjük figyelmünket.
Kellékek
Az alábbi könyvtárakra lesz szükséged:
Ha ezek közül hiányzik valamelyik, akkor az EasyInstall vagy pip install csomagkezelőkkel könnyedén telepítheted (hasonlóak az Ubuntu apt-get csomagkezelőjéhez).
Keresés a TwitterApi-val, az eredmények elmentése
Először elindítunk egy keresést Dzsudzsákra ami visszaadja a webes felület eredményeihez. A tweets változóba elraktároztuk a az egyes tweeteket, majd a words-be ezeket szétbontva az egyes szavakat.
Ahogy a komment is mutatja a cPickle segítségével elmetjük a words változóban tárolt adatokra, hogy később is tudjuk használni. Érdemes megismerkedni behatóbban a cPickle csomaggal, mivel segít sok időt megspórolni hiszen nem kell mindig lefutattni az API felé a keresést ha lementjük az eredményeket (ill mivel a pl a TwitterAPI csak az utolsó 6-10 nap eredményeit mutatja, egy longitudinális vizsgálathoz feltétlenül le kell mentenünk az eredményeket mert különben elvesznek!).
Készítsük el az RT gráfot!
A következő kóddal kikeressük a "retweetelés nyomait". Ennek egyezményes jele az "RT @XY", ill. a "via @XY" beillesztése a szövegbe. A get_rt_sources függvény kibányássza azokat akiket újracsiripeltek és ennek segítségével vizsgáljuk meg hogy ezeket a "forrásokat" kik ismételték meg, így építjük fel a gráf éleit, amik a forrásra mutatnak.
Rajzoljuk meg a gráfot!
A következő kóddal két formátumban elmentjük a gráfot. A write_dot_output() függvény a Graphviz program által értelmezhető formátumra hozza az eredményeket, melynek segítségével egyszerűen generálhatunk majd képet. A write_protovis_output() függvény egy html oldalt generál ami a Protovis js keretrendszerben készített gráfot mutatja (szükséges hozzá a github repoban megtalálható template!!!).
Minden kimenet az out/ könyvtárba kerül! Szükséges hogy a Protovis-t is idemásoljuk, továbbá az itt található dot.dot fájlon futattnunk kell a következő parancsot:
circo -Tpng -Ortgraph dot.dot |
És ezt a képet kapjuk.
A Graphviz egyszerű gráfot produkál, de ez is megteszi! |
A Protovis sokkal szebben mutat:
Protovis vizualizáció |
Hogyan tovább?
Az elmentett csiripeken további elemzéseket végezhetünk az nltk segítségével, a következő posztban ezzel foglalkozunk.
Nincsenek megjegyzések:
Megjegyzés küldése