Posts Tagged webdevelopment
FeedMod: Quantifying news feed contributions of Facebook friends
Posted by Matt in development, general on January 17, 2011
Previously, I proposed FeedMod, a Slashdot-style moderation system for Facebook to weed out all the garbage posts while allowing the interesting stuff to stand out. After a basic implementation and a month of gathering data, I present some results. Through post moderation, I quantify the contribution of each Facebook friend to my news feed and identify the Facebook friends who provide the most positive and negative contributions. Such information can quickly identify which friends to “defriend” and which to pat on the back for their good posts. Such a moderation system will also allow for fine grained filtering of the Facebook news feed to provide a more enjoyable news feed experience.
While Facebook provides a “like” button to indicate approval of news feed posts, there is no indication that this feature is used to filter news feed content. Facebook does provide an option to block news feed posts of designated friends, but this is a very coarse grained filter. More recently, Facebook presented an interesting analysis of news feed posts. This study identifies post topics that are more likely to be “liked” or commented on by friends as well as identifying post topics that are correlated with high friend counts. While the Facebook study analyzes post content, it only compares against metrics inherent to Facebook itself, such as “likes” per post, number of comments per post, age of posters, and friend counts. The study neither attempts to quantify the news feed topic preferences of Facebook users, nor does it attempt to identify a Facebook user’s best or worst friends based on friends’ news feed posts.
Design
As previously mentioned, the main idea is for each FeedMod user to moderate each news feed post in a manner similar to Slashdot post moderations. Each news feed post is assigned a moderation which consists of an integer value score and descriptor string. For this experiment, I chose the following moderations:
Value Descriptor Examples
-2 Troll Rants or politically charged arguments; I really can't stand these, hence the -2
-1 Spam Advertisements, such as requests to attend an event, donate money, or to come to a friend's place of business to buy something
-1 Redundant Endless duplicate announcements, typically on holidays and birthdays
-1 Indifferent Stuff I really don't care about, such as random song lyrics or sports posts about teams that I don't follow
-1 Unintelligible Something posted out of context, usually by someone with whom I'm out of touch
0 Normal I assign my posts to this, otherwise I use it rarely
+1 Funny Self explanatory, but I found myself only using it when I was about to fall out of my chair laughing
+1 Insightful Anything that gives insight into the highlights of a friend's life or a well formed argument on a topic
+1 Informative Usually updates on what someone is doing
+1 Inquisitive Someone posing a question to his or her friends
+2 Interesting Usually news articles or a post about something I hadn't heard of or thought about before (these posts are the best, hence the +2)
By moderating the status updates of all of my Facebook friends, I am then able to assign a score to each friend based on those moderations. I can even moderate status update comments made by friends and non-friends alike. The score, similar to Slashdot’s “karma,” is created by summing the moderation values for all of a friend’s posts. In this way, I can see the balance of how positive or negative a friend’s posts tend to be. The advantage of this method is that friends with a large number of good or bad posts will stick out.
Implementation and Facebook API
My original idea was to use the Facebook API to modify the news feed and allow me to moderate friends’ posts. A month ago when I started this, I had no experience with the Facebook API and did not know if it would even allow me to do such a thing. While I did achieve what I wanted in being able to moderate friends’ posts, I can say conclusively that the Facebook API is seriously lacking. I have two major issues with the API: 1) an inability to customize the Facebook website, forcing developers to reinvent the wheel for even the smallest applications, and 2) limited access to information easily accessed on the main Facebook website.
What I really wanted to do was to be able to modify the existing Facebook news feed and insert a moderation select list next to each status update. When a FeedMod user selected a moderation, the post-moderation pair would be stored in a database. Unfortunately, Facebook does not allow developers to modify any portion of the Facebook website, including the news feed. It would be much easier if Facebook allowed this since I wouldn’t have to recreate the entire news feed. This lack of customization is a serious barrier to developers who have an idea for a simple application that makes use of the existing Facebook website.
The Facebook API does, however, allow you to query status updates and friend information for use on your own website. What I learned was that apps within Facebook are actually remote websites running within an iframe on the main Facebook website. Unfortunately, Facebook limits the information you can get: news feed items are restricted to status updates, links, videos, and photos — you cannot retrieve time ordered taggings, newly added friends, profile picture updates, and likes, among other things.
Interface
While I found the Facebook API disappointing, I was able to recreate the Facebook news feed on my own webserver, using the Facebook PHP toolkit. Finally, with a database backend to store moderations, I was able to produce a customized news feed with the ability to moderate friends’ posts:
To the right of each status update, I included a select list to moderate the post. I also display the current moderation total for the friend, the friend’s moderated post count, and the percentile rank out of all friends (the friend with the most negative moderation total is 0%, the most positive is 100%). This way, at a quick glance it is easy to see how many good or bad posts a friend has made to date.
I also created a statistics page, which ranks friends by the number of posts as well as lists of the top ten best and worst friends based on their moderation totals. I also breakdown the moderation total and display the leaders of each moderation attribute (for example, who has the most “spam” posts).
Evaluation
After finishing the implementation, I then moderated posts for a month and now present an analysis of the results. During a one month period, I moderated over 2,000 posts with 250 individual posters. Some other interesting tidbits:
- 67% of my friends posted at least once within this one month period
- 64% of all moderated posters were friends; the remaining are non-friends commenting on a friend’s post
- 93% of all moderated posts were made by friends
Here is a breakdown of all moderated posts by their assigned attributes:
From the figure, a clear majority of posts are positive, while 35% are negative. Out of all negative posts, the “indifferent” and “unintelligible” categories are used the most. On the whole, I find most posts that I don’t like to be something I don’t care much about (and don’t want to read) or something that I don’t understand (usually it’s something taken out of context), hence the pervasiveness of the “indifferent” and “unintelligible” categories. The “informative” category dominates the positive posts, followed by “insightful” and “interesting.” My experience is that a significant number of posts (almost 40% to be exact) are status updates announcing what a particular friend is doing. While most of these are mundane, I don’t really find them to be bothersome, hence the positive score.
Next, we look at how many posts each Facebook friend created during my one month evaluation:
This figure shows the number of posts made by each friend that posted at least once. A little less than 40% of my friends posted once, while about 3% posted more than 40 times in the past month. One friend posted almost 120 times, or roughly four times per day! Clearly, my news feed is dominated by posts from the same handful of friends.
Next, we look at the distribution of moderation scores across all of my Facebook friends:
This figure shows that most of my Facebook friends (the ones that posted at least once) have a slightly positive moderation total. Since most of my friends do not post very much, the lack of extreme scores makes sense. A small number of friends have very bad or very good scores — 3% have have a total less than -6 and another 3% have a total score greater than +20. Those 3% that have the worst scores clearly stand out from the majority of my friends and are definitely good candidates for defriending. Conversely, the top 3% go a long way in keeping my news feed enjoyable.
Lastly, we look at both post count and moderation total:
Here, we see the quantity and quality of posts made by each Facebook friend. Some friends have identical (post count, moderation total) values, hence the z-axis indicating the number of overlapping friends. Like the previous two figures, this shows that most friends have slightly positive moderation totals and low post counts. It also appears as though friends with higher post counts tend to be more positive. However, there are some friends that buck the trend and have very negative scores for relatively high post counts (as identified previously, these are the ones that should be defriended).
Conclusions and Future Work
After struggling with the limitations of the Facebook API, I was able to implement a moderation system for Facebook news feed posts. This moderation system quantifies the contributions of each friend to the news feed and clearly identifies the friends with very good and very bad posts. Using this system, it is possible to filter the news feed based on friends’ moderation scores as well as filter the news feed based on previous moderation of similar content. It is also possible to extend the moderation system across a user’s social network, identifying friends whose posts are well liked by everyone.
Gaming and Running
Looks like a lot of cool stuff is or will be released soon. The first stable release of PHP 5 was unveiled yesterday, which apparently adds a lot of C++ like functionality. We probably won’t be using it at work anytime soon, but maybe by next summer. I also hear Doom 3 just went gold and will be available in August. And then there is S.T.A.L.K.E.R, which looks like a cool FPS/RPG combo that seems like it will play a lot like the System Shock series. There is also HL 2 of course, but we all know its history of shaky release dates. Last weekend, I got a good deal on the UT 2004 DVD Edition, mainly so I could look at all the modding tutorials that come with it. The guy in the cube next to me is working on a part of the America’s Army game and is using those tutorials for help. He said they are quite good.
Basically it looks like all these new games will be out by the time I get back to school. Oddly enough, I might have more time at school than I do now since I won’t have to work 8 hours a day.
I also watched Kathy run the 5000 in the Olympic Trials last weekend. It was pretty cool to see someone you know run on national TV like that. Sean Graham and Matt Lane, who were also on the team, ran the 5000 Monday night and both made it to the finals, but it was on at midnight, so there was no way I could watch it without sacrificing a lot of sleep. The finals are on Friday, though, so I should be able to see that. Last fall the idea was thrown around that a couple guys were going to take a cross country road trip out to Sacramento to watch it, but that kind of fell apart. That would have been a cool trip. Maybe if I get an internship on the west coast next summer or something I will get to do a trip like that.





Recent Comments