pondělí 2. července 2012

Jak zjistit počet sdílení (i konkurenčních) webových stránek na Facebooku pomocí Google Refine a Facebook API

Zajímalo by vás jaké jsou nejsdílenější stránky konkurečního webu na Facebooku? Nebo jaké články ze serveru TV NOVA lidé nejvíce mezi sebou na Facebooku sdílí? Zjistit to, je možná jednodušší, než si myslíte. Pomoci vám v tom může další nástroj do Googlu, který se jmenuje Google Refine.

Tento nástroj byl původně vyvíjen společností Freebase, kterou Google před časem koupil, a jeho hlavní úlohou bylo pomáhat čistit nekonzistetní datasety. Ostatně podívejte se určitě na instruktážní video, které Google nabízí na stránkách produktu, až si budete program stahovat. Narozdíl od většiny služeb od Googlu totiž Google Refine běží u vás na počítači, byť se do něj přihlašujete v prohlížeči na adrese http://127.0.0.1:3333/

Po nainstalování, spuštění a načtení stránky Google Refine ve vašem browseru si můžete vybrat jakým způsobem chcete naimportovat data. Program totiž podporuje celou řadu formátů (CSV, XLS, JSON, XML etc.) a to jak ze souborů uložených na disku, tak přímo z webu. V praxi to tak znamená, že do něj můžete například naimportovat libovolný XML dokument z internetu. Tady se už dostáváme k našemu úvodnímu slibu. Značná část webů totiž obsahuje volně přístupnou mapu stránek v XML formátu, pomoci které pomáhají vyhledávačům lépe indexovat celý web. Obvykle má soubor název sitemap.xml a pomocí Googlu se můžete přesvědčit, že jich lze najít všude dost. Já jsem náhodou našel mapu stránek Televizních novin TV Nova na adrese http://tn.nova.cz/sitemap.xml

V menu Google Refine zvolte volbu Create project a v něm položku Web Addresses (URLs). Po zadání URL souboru (pozor včetně http!) se dostanete stránku Configure Parsing Options, zde vyberete myší typ oblasti, která se bude parsrovat, potvrdite ji tlačítkem a uvidíte náhled výsledného importu.



Pokud je vše podle vašich představ, pokračujte a přes tlačítko Create project vpravo nahoře založte nový projekt. Data se stáhnou a vy se objevíte v prostředí podobném klasickému tabulkovému procesoru se sloupci obsahujícími data z importovaného XML.

Nyní máte k dispozici mapu stránek a bude třeba ji doplnit o údaje o počtu sdílení na Facebooku (nebo o řadu dalších, vaší fantazii se meze nekladou). K tomu využijeme volbu z menu pro sloupec s url. Vybreme nejdříve volbu Edit column a v ní Add column by fetching URL's která umožňuje použít data z buňky jako součást volání libovolné URL. V našem případě to bude jednoduché volání API Facebooku, konkrétně jeho služby, která vrací počet shares konkrétní URL. Služba se nachází na adrese http://graph.facebook.com/?id=http://www.klaboseni.cz a je celkem zřejmé, že za parametr ID je třeba doplnit požadované URL. Služba vrací JSON, který mj. obsahuje i položko shares s počtem sdílení stránky na Facebooku.

Po volbě Add column by fetching URL's se objeví jednoduché vyskakovací okonké. Nás v něm nyní budou zajímat jen tři položky. Prvním je New column name kde uvedeme, jak se nový sloupec bude jmenovat např. FB JSON. Druhým je Throttle delay, kde je uvedena doba mezi jednotlivými dotazy v milisekundách. V základním nastavení má 5 sekund a pokud nikam nespěcháte, doporučuji ho nechat nastavené pravě na tuto hodnotu. Některé služby vás totiž při příliš agresivním dotazování mohou dočasně zablokovat.



Nicméně zkuste s ní experimentovat, u Facebook API by mělo nastavení na 1 sekundu (1000 v milisekundách) být v pořádku. Konečne posledním políčkem je textarea se názvem Expression. V ní můžete specifikovat jaká url, a případně s jakými parametry, budou volána a to pomocí programovacího jazyka GREL (či dvou dalších, ale nechme je stranou). V našem případě stačí výraz

"http://graph.facebook.com/?id=" + value

a pak už jen klikněte na OK a můžete začít stahovat data z Facebooku.



Po dokončení operace uvidíte nový sloupec, který obsahuje v každé buňce patřičný JSON.



Teď je ještě třeba extrahovat z JSONu počet shares pro danou stránku. Pomůže nám k tomu opět scriptovací jazyk GREL. Na sloupci opět zvolíme možnost Edit Column, tentokrát ale s volbou Add column based on this column, pomoci které lze vytvořit nový sloupec skrzeva transformaci původního.



Tentokrát využijeme vestavěného parseru JSONu v GRELu a do Expression přidáme následujicí instrukci:

value.parseJson()["shares"]



Zbývá ještě pojmenovat nový sloupec kupříkladu jako FB Shares. Pak jen stačí kliknout opět na OK.

Za chvíli máte k dispozici nový sloupec s přehledem sdílení.



Nyní ho jen seřadíme pomocí funkce Sort a je to.



Vidíme, že v případě TV Nova byly těmi nejsdílenějšími zprávami posledních týdnů právě tyhle:



Asi sami tušíte, že v případě konkurenčních stránek mohou být výsledky zajímavější a že se nemusíte jenom omezit na volání API pro Facebook Shares, ale o tom zase někdy jindy.

neděle 1. července 2012

Mapa followerů na Twitteru pomocí NodeXL a Google Fusion Tables

Analýza publika na sociálnících sítích by měla patřit k základům jakékoli systematické komunikaci s ním. Obzvlášť pokud se jedna o značku či osobu, která už může počítat své fanoušky na tisíce, může být analýza jejich profilů k nezaplacení. Jedním z typů analýzy je zmapování geografického rozmístění fanoušků. Jsou spíše z větších měst? Nebo jsou víceméně rozporstraněni po celé zemi? A jak na to vlastně přijít? A jaké fanoušky má moje konkurence?

Jednou z možností, jak prozkoumat odkud vaši fanoušci pocházejí, je využít údajů, které sami o sobě poskytují. V případě sociální sítě Twitter, které se budeme dále věnovat, je to i údaj Location, který mají fanoušci možnost vyplnit ve svém profilu. Právě z něj lze poměrně jednoduše vygenerovat mapu jejich umístění po světě s přijatelnou odchylkou od reality. Překvapivě nemusíte mít k tomu žádné speciální znalosti. Postačí k tomu obyčejný Microsoft Excel a Google Fusion Tables.

Získání základních údajů
Pokud nejste programátor, který si umí stáhnout seznam svých následovníků pomoci Twitter API, můžete k tomu využít open source tamplate pro Excel, který se jmenuje NodeXL a je určený především k social network analysis. Díky tomu obsahuje možnost importovat z Twitteru i seznam vašich (či konkurenčních i jiných) následovníků, včetně detailů o jejich profilu.

Pro rychlejší stažení doporučuji povolit pro NodeXL přístup k vašemu Twitter účtu, podstatně se tak zvýší limit na počet dotazů do Twitter API.



Po stažení potřebných údajů smažte přebytečné listy a ponechte jenom list Vertices a smažte přebytečné sloupce.



Soubor si můžete uložit jako XLS, ale pro lepší výsledky při konverzi doporučuji zvolit formát TSV neboli textový soubor oddělený tabulátory.S ním budeme pracovat v dalším kroku. Tím bude import dat do Google Fusion Tables.

Vytváříme mapu
V dalším kroku naimportujeme TSV se seznamem svých followerů do webové služby Google Fusion Tables, která je primárně určena pro práci a vizualizaci větší souborů dat. V Gogle Drive zvolíme možnost vytvořit nový soubor, vybereme možnost Table a nahrajem soubor s daty.



Po úspěšném importu bychom měli vidět tabulku podobnou jako je tato:



Zkontrolujte v menu položku Edit -> Modify Columns, že má u sloupce Description nastavený typ na Location, případně ho na něj nastavte. Tím, se Google Fusion Table dozvědí, že mají interpretovat data v tomto sloupci jako data určující geolokaci. Nyní už jen stačí zvolit tu spravnou vizualizaci. V našem případě tedy v menu zvolit položku Visualize a v ní vybrat Map. Fusion Tables spusti analýzu pomoci Google Maps API (aniž by vám ubírali ovšem z denního limitu):



a po chvíli se můžete těšit z podobného výsledku jako já:



Pokud jste hračičkové, můžete si s ním samozřejmě dál pohrát. Kupříkladu upravit šablonu pro popup okénko s detaily a podobně. Pro začátek to ovšem stačí.

Někdy příště se podíváme na to, jak získat kromě mapy i seznam GPS pozic a hlavně jak normalizovat data ze sloupce Location do jednotné podoby. Pomůže nám v tom další produkt společnosti Google jmémen Google Refine. Ale o tom zase jindy.

pátek 1. července 2011

Statistiky pro tlačítko +1

Server Search Engine Land přinesl informaci, že Google už mj. uvolnil statistiky pro tlačítko +1. Najdete je ve nástroji Google Webmaster Tools přinášejí vám základní přehled o pluskování vašeho webu: vliv na vyhledávání, aktivitu a informace o návštěvnících.



Já mám zatím implementováné plusko jen na www.klaboseni.cz, takže údajů k analyzování zatím moc není. Zřejmě však přišel čas k masivnímu nasazení. Uvidíme, jak se to celé dál bude vyvíjet.

čtvrtek 30. června 2011

Google testuje nový vzhled

Zdá se, že Google začal testovat nový nový vzhled. Osobně mi přijde docela pěkný a evidentně se sjednocuje s Google plus. To by odpovídalo snaze Googlu zrušit rozdíl mezi "search" a "social".



středa 29. června 2011

Fonty, láska, moucha aneb nejen Google + je novinka

Blogy po celém světě plní informace o spuštění sociální sítě Google + a není divu, protože se jedná o událost očekávánou již delší dobu. Trochu tak zanikly další dvě novinky, které také Google včera spustil. První z ních je uvolnění 180 fontů pro web zdarma v rámci projektu Google web fonts. Na první pohled řada z nich vypadá docela dobře a lze je využít pro vložení do webových stránek.

Druhou novinkou je projekt What do you love? Který slouží jako jakási přehlídka mnoha oblastí, kde vám Google umožňuje pracovat. Na jednom místě tak vidít jak Google Trends, tak Google Search, stejně jako Google Video Chat. Vypadá to pěkně, až na jednu mušku. No, v Čechách spíš mouchu. Pokud totiž máte rádi Čechy nebo něco s diakritikou, tak mate smůlu. Viz přiložený screenshot...


Obě nové služby patří sice do kategorie maličkosti, ale stejně tak do kategorie potěší. Tak užívejte.

úterý 11. ledna 2011

Pokutované pumpy a Google Fusion Tables

Mezi moje oblíbené technologie Google patří služba Google Fusion Tables, která umožňuje pracovat s velkými objemy dat. Funguje to velice prostě. Do GFT naimportujete CSV, XLS nebo Google Spreadsheet (limit je 100MB) a můžete začít. Buď různě agregovat nebo dotazovat. Přes API totiž máte k dispozici i jednoduchý SQL-like jazyk. Ostatně na YouTube nalezenete třeba toto instruktážní video.

Zajímavostí GFT je implementace geoparsingu. V praxi tak do GFT můžete například naimportovat seznam pump pokutovaných Českou obchodní inspekcí a ten snadno sdílet nebo vizualizovat na mapě.

Oba příklady máte zde:
Pokutované pumpy - Google Fusion Tables
Interkativní mapa s pokutovanými pumpami

Nebo můžete mapu rovnou vložit do stránek:


Pěkné, co říkáte?

UPDATE: zdá se, že geoparsing má ještě drobné chybky, viz pumpa na Staromáku. Díky za upozornění.

čtvrtek 18. listopadu 2010

Pražská velká koalice a social network analysis

V posledním blogpostu jsem se tu vyznával k lásce k relativně nové vědní disciplíně jménem social network analysis. Teď se k ní opět vracím, protože mne přivedla k zajímavým obrázkům, které se týkají pražského magistrátu v minulosti, přitomnosti a zřejmě i budoucnosti. Nejdříve ale trocha teorie. Andrew Odewahn vytvořil před časem pozoruhodný projekt. Vizualizoval výsledky hlasování senátorů v americkém senátu během řady volebních období. Spojnici grafu pak stanovil tak, že senátor měl vazbu k jinému tehdy, pokud měli alespoň 65 procent stejných hlasování. Výsledek byl ohromující a můžete se na něj podívat třeba zde.

I napadlo mě udělat obdobnou analýzu i pro náš pražský magistrát. Na webu magistrátu sice nejsou výsledky hlasování k dispozici v strojově zpracovatelném formátu, ale díky šikovnosti programátorů se je podařilo stáhnout. Ondřej Nekola pak data z XML agregoval do GraphML, tedy formátu, se kterým je možné dál pracovat v NodeXL. Na rozdíl od Odewahna jsem nebyl na naše pražské konšele tak přísný a zvolil jsem hranici 75 procent shody v hlasováních. Proč tak vysoké číslo? Šlo mi o to, že v matici jsou započtena i hlasování o procedurálních otázkách. A teď ty výsledky?

Nejdřív surové grafy pro jednotlivé vlády


volební období 1998 - 2002


volební období 2002 - 2006


volební období 2006 - 2010

Co je na všech krásně vidět, je faktická roztříštěnost opozice na pražské radnici posledních 12 letech. Další informace ovšem vynikne, pokud v grafu ponecháme jen ty, co mají alespoň tři shody s ostatními. Vyloupnou se nám tak tvrdá hlasovací jádra.


volební období 1998 - 2002


volební období 2002 - 2006


volební období 2006 - 2010

Co z nich můžeme vyčíst? Především to, že v letech 1998 - 2006 tu vládla velká koalice. To není až tak zajímavé. Zajímavější ale již je, že ve všech třech obdobích byl na blízku vždy nějaký zastupitel komunistů, který rád pomohl s hlasováním. Dokonce i v období 2006 - 2010, kdy si zavdal jen jeden sociální demokrat. Podotýkám, že ačkoli komunisté nejsou oficiálně na magistrátu u moci, jejich role v kontrolním výboru je značná. Tolik k minulosti a přítomnosti.

Teď ale malá poznámka k budoucnosti. Nová koalice má velmi křehkou většinu, vzhledem k minulosti ale víme, že se umí domluvit a hlavně, že pokud bude zapotřebí, tak má zřejmě dobré zkušenosti s tichou podporou KSČM.