2011. június 18.

Dzsudzsák a Twitteren!

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: