Faci is Facebook Cliques Interactions
Faci is a Java tool allowing to analyze your facebook friendlist, and discover if people really interacts with each others, while theyare in same groups - or if they are only "friends".
Be careful with that data, Eugene! They are your friends private data!
- Phase 1:
!!!! update !!!! this phase not work anymore, due to new Facebook API policies for external client: v1 (used here) has been disabled; new version (v2) are based on GraphAPI and it needs OAuth - I don't have so much time to spend it, but you could...
You need to download your friends (and yours) facebook posts from walls, using Retriever (a patched version of fbcmd, included inside)
cd Retriever; ./bin/facri-get_all_data.sh
Get out, do some shopping, it takes a while (also some hours) - if it hangs, wait 2-3 hours, or retry the next day: facebook has per-hours and/or per-data downloads and/or per-ip filters, and it blocks next requests. When I will have time to spend here, I'll fix this (or you could...).
- Phase 2:
cd Analyzer; ant build; ./run.sh
If all was fine, you will get an interactive console, with some commands to build 2 different graph, "friendships" and "interactions":
- "friendships" is your facebook friendlist showed as a graph, with your friends connected to you, and to your mutual friends
- "interactions" is the graph showing real interactions between your user with your friends, and between each others; interactions are public posts, likes, tags, comments.. nodes and edges are builded using data that you downloaded with Retriever
Then, you could apply some interesting (and nice) algorithm to each graphs, and see the results (numerical as graphical).
The interactive console includes an help, of course ;)
some interesting numbers:
- corpus data used are ~60000 json objects (~400 people [my friends]
- 150 own posts): processing this corpus (= translate json structure to java hierarchy) takes ~9sec first time; then, it uses a key-value db (Berkeley) as a cache, and this phase reduces to <3sec
- graphs generation is also reasonable fast, taking ~2sec each graph: it is not only the graph file (graphml) creation, but also the gui parts (view frame and animations - and opengl capable hardware is recommended)
those fast execution times are achievable using parallelism and lambda/functional paradigm included in Java8, so update your jvm to last version
a presentation (in italian) is available here : it describes the analysis using data from my facebook, of course (;D); also, in italian, you could easily notice figures showing generated graphs and histograms produced by algorithms outputs here; finally, a movie with some demo is available here
for people interested to core code, hic sunt leones:
some nice images of generated graphs:
|without ego: giant connected components
||without ego: cliques
||with ego: cliques
||without ego: cliques
|without ego: giant component connected
||without ego: no zero degree edges
|metric charts images: here|