gráf-adatbázis építése twitter adatokból

26
Gráf-adatbázis építése twitter adatokból Hanyecz Tamás, Dobos László

Upload: ledell

Post on 15-Jan-2016

30 views

Category:

Documents


0 download

DESCRIPTION

Gráf-adatbázis építése twitter adatokból. Hanyecz Tamás, Dobos László. Twitter üzenetek. Tweet Kb. max . 160 karakter hosszú szöveg A publikus tweeteket bárki olvashatja Fel lehet iratkozni egyes emberek üzeneteire - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Gráf-adatbázis építése  twitter  adatokból

Gráf-adatbázis építése twitter adatokból

Hanyecz Tamás, Dobos László

Page 2: Gráf-adatbázis építése  twitter  adatokból

Twitter üzenetek

• Tweet– Kb. max. 160 karakter hosszú szöveg– A publikus tweeteket bárki olvashatja– Fel lehet iratkozni egyes emberek üzeneteire

• A teljes adatfolyam mintavételezett változata valós időben letölthető (stream)

Page 3: Gráf-adatbázis építése  twitter  adatokból

Tweetek tartalma

• Üzenet• Küldő felhasználó adatai– ID, screen_name, lang– Description– UTC offset, GPS koordináták– Profil beállítások

• Ha válaszüzenet, akkor kinek mire válasz• Retweet: továbbküldött üzenet– Az eredeti üzenet összes paramétere is– Nagyon régi üzenetek is előbukkannak

Page 4: Gráf-adatbázis építése  twitter  adatokból

Tweetek tartalma 2

• Az üzenet tartalmának előre parse-olt részei:– Linkek képekre, videókra– Említett felhasználók (@username)– Hashtag-ek (#valami)

• Place információk– Ha a tweetelő nem személy, hanem cég, bolt stb.– Részletes geográfiai adatok (location polygon)

Page 5: Gráf-adatbázis építése  twitter  adatokból

Felhasználói profil adatai

• Név• Regisztráció időpontja• Időzóna• GPS koordináták (ritkán)• URL• Összesen hány– Tweet– Követés– Követő

• UI beállítások (színek, profilkép)

Page 6: Gráf-adatbázis építése  twitter  adatokból

Twitter API

• dev.twitter.com

• API funkciók– Twitter integrálása saját oldalba (follow gomb)– Adott felhasználók üzeneteinek követése– Összes üzenet adatfolyamának követése

(random mintavételezett)– Adott felhasználó által követett felhasználók

lekérdezése

Page 7: Gráf-adatbázis építése  twitter  adatokból

Twitter adatfolyamok

• Filter– megadhatók feltételek

• Sample (ingyenes)– Véletlenszerűen mintavételezett adatfolyam– Az összes üzenet kb. 1%-a

• Garden hose: ≈ 10% (speciális account kell)• Firehose: teljes adatfolyam (fizetős)

Page 8: Gráf-adatbázis építése  twitter  adatokból

Adatfolyam statisztika

• Kb. max. 10 GB / nap nyers adat (JSON)– Napi 4-4,5 M üzenet– Napi 3,2 M egyedi felhasználóról jön adat

(+ 0,5 M retweetelt felhasználó, de lehet átfedés)

• Adatbázisba töltve: kb. 6 GB / nap

Page 9: Gráf-adatbázis építése  twitter  adatokból

Eddigi gyűjtésekID Mettől Meddig Napok Hol Retweet

1 Feb. 1. Már. 20. 50 Complex Nem

2 Már. 20. Máj. 31. 70 Complex Nem

Jún. 1. Jún. 30 - kimaradt

3 Júl. 1. Aug. 18. 50 Complex Nem

4 Aug. 18. Fut 35 Complex Nem

5 Aug. 18. Fut 35 Blackhole Igen

Page 10: Gráf-adatbázis építése  twitter  adatokból

Twitter Stream adatok egy lehetséges alkalmazása

Page 11: Gráf-adatbázis építése  twitter  adatokból

Twitter Toolkit

• Programok az adatok feldolgozásához

• TwitterReader– Adatfolyam olvasása és lementése– Kezeli a törékeny hálózatot– Időnként új fájlt kezd (batch)

• TwitterLoader– Batch-ek betöltése MSSQL adatbázisba– Összefésülés a már meglevő adatokkal

Page 12: Gráf-adatbázis építése  twitter  adatokból

ADATOK ADATBÁZISBA TÖLTÉSE

Page 13: Gráf-adatbázis építése  twitter  adatokból

Adatfolyam adatbázisba töltése

Chunk

•Stream feldarabolása napi fájlokra

•TwitterToolkit Reader automatikusan

Prepare

•Bulk insert fájl előállítása minden chunkra

Load

•Chunkok betöltése a LoaderDB-be

Merge

•LoaderDB adatainek összefésülése a meglevő adatokkal

CleanUp

•LoaderDB kitakarítása következő batch-hez

Page 14: Gráf-adatbázis építése  twitter  adatokból

Adatbázis séma

user

PK id

created_at last_update_at screen_name description favourites_count followers_count friends_count statuses_count geo_enabled lang location name profile_background_color profile_text_color protected show_all_inline_media utc_offset verified

tweet

PK id

created_at utc_offset user_id place_id lon lat in_reply_to_tweet_id in_reply_to_user_id possibly_sensitive possibly_sensitive_editable retweet_count text truncated lang

tweet_hashtag

PK tagPK tweet_idPK user_id

user_update

user_id tweeted_at screen_name description favourites_count followers_count friends_count statuses_count geo_enabled lang location name profile_background_color profile_text_color utc_offset verified

tweet_retweet

PK tweet_id

user_id retweeted_tweet_id retweeted_user_id

tweet_user_mention

PK tweet_idPK user_idPK mentioned_user_id

Page 15: Gráf-adatbázis építése  twitter  adatokból

Nézetek

user_reply

user_idin_reply_to_user_idcount

user_reply_any

user_a_iduser_b_idcount

user_reply_mutual

user_a_iduser_b_id

user_retweet

user_idretweeted_user_idcount

hashtag

tagcount

user_retweet_any

user_a_iduser_b_idcount

user_hashtag_any

user_a_iduser_b_idcount

user_retweet_mutual

user_a_iduser_b_id

user_location

user_idtweet_idcreated_atlonlat

user_mention

user_idmentioned_user_idcount

user_mention_any

user_a_iduser_b_idcount

user_mention_mutual

user_a_iduser_b_id

Page 16: Gráf-adatbázis építése  twitter  adatokból

Nyitott kérdések

• A user status merge lassú. Kell a user összes adata a user táblában, vagy elegendő a user update tábla?

• Akarjuk-e tárolni a többi tweetből parse-olt adatot?– url-ek, képek, videók

Page 17: Gráf-adatbázis építése  twitter  adatokból

TWITTER KAPCSOLATOK FELDERÍTÉSE

Page 18: Gráf-adatbázis építése  twitter  adatokból

A hálózat felderítése

Algoritmus• Kezdeti csúcs kiválasztása

és a listában tevése• Ciklus: Amíg a mélység

<= Max:– Csúcs kiválasztása a

listából– Csúcs szomszédjainak

felderítése– Szomszédok tárolása egy

listában

• Ciklus Vége

… …

Listába került pontok1 + N(0,1) + N(1,1) + N(1,2) +… +N(1,n1) + N(2,1) + N(2,2) + … + N(2,n2) + ….

Page 19: Gráf-adatbázis építése  twitter  adatokból

Felderítés alapelveKözponti gép:- Ezen tároljuk az adatokat

Ezeken a gépeken futtatjuk a méréseket és töltjük fel az adatokat a központi gépre

Page 20: Gráf-adatbázis építése  twitter  adatokból

Felderítés kevés (<30) gép esetén1. Lépés: Végre hajtunk 150 lekérdezést és az eredményt berjuk az éllistába, a felderített csúcsokat pedig egy fájlba beírjuk

2. Lépés: Kiválasztunk 150 fel nem derített csúcsot, beírjuk egy fájlba és feltöltjük az 1. számú gépre

3. Lépés: Végre hajtunk 150 lekérdezést az 1. számú gép és az eredményt berjuk az éllistába, a felderített csúcsokat pedig egy fájlba beírjuk

4. Lépés: A fájlokat feltöltjük a központi gépre

5. Lépés: Kiválasztunk 150 fel nem derített csúcsot, beírjuk egy fájlba és feltöltjük az 2. számú gépre

5. Lépés: Végre hajtunk 150 lekérdezést a 2. számú gép és az eredményt berjuk az éllistába, a felderített csúcsokat pedig egy fájlba beírjuk

6. Lépés: A fájlokat feltöltjük a központi gépre

7. Lépés: és így tovább, amíg van gép, aztán újra a 2. ponttól vagy az 1. -től

Page 21: Gráf-adatbázis építése  twitter  adatokból

Felderítés sok (>30) gép esetén

• Szükséges hozzá adatbázis• Minden csúcsnak van egy adatbázisbeli

azonosítója: 1,2,3,…• A gépek között kiosztjuk, hogy milyen

azonosítójú csúcsokat kérdezzenek le• Pl.: Tfh. Van n. db gép és N csúcs k. gép

lekérdezi a: N mod n ≡ k -1 számú fel nem derített csúcsot

Page 22: Gráf-adatbázis építése  twitter  adatokból

Felderítés sok (>30) gép eseténFeltétel: Adatbázis

1. lépés: Feltöltjük az adatbázis, hogy legyen benne legalább 150 fel nem derített csúcs (1-2 lekérdezés elég)

2. lépes: A gépeken elindítjuk párhuzamosan a lekérdezéseket

mod N ≡ 0 mod N ≡ 1 mod N ≡ N-1

Page 23: Gráf-adatbázis építése  twitter  adatokból

Twitter kapcsolatok felderítése

• Egy adott felhasználó– kit követ– őt ki követi

• Fel szeretnénk deríteni a gráfot (irányított élek)

• Akadályok– Egy kérés egy felhasználó ismerőseit adja vissza– Egy válasz max. 5000 ismerőst ad vissza– A parancs egy IP-ről óránként max. 150-szer

• Gépenként napi 3600 lekérdezés• Max. 18 M irányított gráf él

Page 24: Gráf-adatbázis építése  twitter  adatokból

Eredmények

• Programok:– C# nyelven közvetlen adatbázisba tölt be – Python nyelven, ami fájlokba tölt nem adatbázisba– Kb.: 100 GB-nyi elemzhető adat – ami újra bővülni

fog Planetlab újra használható

Page 25: Gráf-adatbázis építése  twitter  adatokból

Tervek• Twitter Stream:

– Térképek, “Filmek” készítése– Üzenetek követése– Kik azok aki a legtöbb üzenetet küldik?– Kik azok akik a legnagyobb hatással vannak az üzenet küldésekre?– ???

• Twitter Hálózat:– Az ismertségi háló felderítése friends és followers irányba. A gráf

elemzése: legrövidebb utak, fokszám eloszlás, szinezhetőség,– Hálózati dinamika: Hogyan változik az ismerettségi háló?– ???

• Stream + Hálózat: Felhasználók a Föld felszínén?

Page 26: Gráf-adatbázis építése  twitter  adatokból

Köszönöm a figyelmet!