39 comments

[ 2.8 ms ] story [ 89.4 ms ] thread
This is great stuff! Super useful!
Thanks! Please feel free to send any feedback to diego at algorithmia dot com.
Really interesting, has my mind spinning around the possibilities. Would love to be able to apply this stuff to filter my Feedly account - how hard would that be using Algorithmia?
I am not super familiar with the the feedly api (or how it works) but integrating with Algorithmia should be really simple. There is a registration link at the bottom of the blog post and you can check out the docs at http://algorithmia.com/docs.

feel free to drop me a note at diego at algorithmia dot com as well.

Just checked out the docs, looks like they have an easy call to mark one/multiple articles as read - so could have something running periodically filtering out stuff you're not interested in
the signup link doesn't work
should be working again. sorry about that.
Still isn't working for me.
traffic killed our frontend for a hot sec. Should be good to go now. Thanks for the patience.
What are the rate limits on the APIs? Especially since they're very computationally expensive.
currently no rate limits while in private beta.
I recently launched a Twitter app designed to filter out the noise by measuring the velocity of all tweets from all people I follow. It only shows me 5 things at any given moment that are most likely "interesting".

Check it out, it's free, and it only wants read-only auth permissions via Twitter: http://skim.io/

Still tweaking the algorithm.

cool. You should add the algorithm you use to our library ! :). I have some examples already implementing twitter4j.
That's an interesting idea, will check out your docs.
Years ago I did something kind of similar. I created my own Twitter client (never public and now defunct) but one of the features was that it would prevent one user from monopolizing my stream by hiding their posts after the three most recent. So say someone was live tweeting an event I would only see their three most recent, and after that it would display a collapsed bar to let me know it had hidden something.

Made skimming much easier, I still miss this feature.

pmarca would hate that feature, it would interfere with his tweet storms. :)

In all seriousness, noise is the biggest problem I have with twitter. When you follow more than 100 accounts, the timeline becomes pretty much useless.

Your comment gives me another idea for my app though - we will make it so each of the Top 5 is from a different unique publisher... and if more than one of their comments are trending, we choose the 'fastest'.

A friend had an idea to make a Twitter client that just drops half of all tweets at random. I don't think he ever got round to implementing it, but I thought it was quite a cool idea.
Same here: A friend and I actually batted around the idea of launching reader called "Every 3rd Tweet" -- seems to be a common problem.
Just top 5? You're killing me!

This is exactly what I've always wanted from Twitter, I get too much noise. If you can provide a full feed that is balanced for each of the people I follow, that would be incredible.

I think we can do that, might include it in out next build.

Another thing I was considering - automatically categorizing tweets by topic and filtering them based on each person pre-sets. For example, I follow a bunch of VCs - and I want to see their comments about Bitcoin while ignoring comments about Secret.

Also - thinking about an ability to mute/ignore a given topic (e.g. Politics), keyword, or author (without unfollowing them). WDYT?

How about de-duping tweets that reference the same URL?
Yeah this would be great as well. I would love if it kept the one with the most replies.
I just realized that this app (as it is) would be great to have constantly running on a tablet next to my monitor. That way I can always glance over to the trending tweets from my feed.

This might be a use case that you could consider optimizing for. I'll try it out and see if it all fits on my screen or if scrolling is needed.

What do you mean by the velocity of tweets?
How quickly a given tweet is getting retweeted and favorited. So - not looking at absolute values but rather the rates at which those are changing. So that was actually quite a challenge, given Twitter's API constraints and rate limiting, and the math involved (we've tested edge cases on accounts with 100,000 'friends', and it still worked).
One sentiment analysis, there seems to be a lot of false negatives - at least when parsing Techcrunch. For example, all these were tagged as 'negative':

- Timely Turns Your Calendar Into A Time Tracker

- Audi Tests Self-Driving Cars On Florida’s Roads

- Twitter Acquires Password Security Startup Mitro, Open Sources Its Product

We used the Stanford NLP library with their training data set which is considered to be one of the better ones. I did notice false negatives as well but it can definitely be trained to be more accurate.
I decided there's no such thing as a good NLP library. In my other apps, I usually use several libraries at once, then make them vote. :) Works out better than Stanford NLP.

I do need to add some intelligence to skim.io though.

Yes 100% agreed. One of our goals with Algorithmia is to have all these libraries already there , preloaded, available and standardized around a similar api signature. This way you can do exactly what you described or quick A/B testing on them.
This is called ensemble classification where you feed the outputs of multiple classifiers as features into an ensemble classifier that produces the final result.

How are you using the Stanford NLP? That's all GPL?

There are alternatives you could look at for sentiment analysis but short "documents" like those referenced will always produce poor results because there's just not enough signal to work with. The training models need to have vocabulary overlap with the documents (at least for word features); try TextBlob which uses a lexicon approach rather than a classifier, or try rolling your own with an off-the-shelf SVM and pull labeled training data from one of the many sources (or generate your own using Crowdflower.) Small documents (tweets/titles etc) pose unique challenges, especially when there's irony or sarcasm involved or implicit sentiment through pragmatic knowledge. For example knowing Sarah Palin and how she's regarded automatically gives a person a head start in determining the sentiment of a short document with her name. This kind of pragmatic knowledge is hard for classifiers to learn.

In the example above, could social network analysis (e.g. https://en.wikipedia.org/wiki/NodeXL) be used to profile Sarah Palin, then combined with text classification?
It's an option, not sure about NodeXL, wikipedia is already available in structured form in Freebase and DBPedia, but understanding something so complex as a reputation is beyond current machine learning. Bringing the pragmatic background knowledge to sentiment analysis is going to be one of the differentiations. We got 65% easily with a lexicon, we got 75% with SVMs and gobs of training data, we've gone past that with hierarchical aspect models and technologies like word vectors, but the problem of making improvements gets exponentially harder. Before social networks can play a role in sentiment analysis likely we'll see breakthroughs in coreference and similar problems that will help eek out more signal from training data. We can certainly use the "hive mind" to assist in this problem, even something as simple as collaborative filtering can help.
what 'negative' are you guys talking about? I just noticed your system gave several keywords for one article. What's about positive/negative? thanks
I was referring to the smileys displayed next to each article, which were probably meant to indicate sentiment.
I just checked the arstechnica one and all items there were also tagged as negative.
(comment deleted)
(comment deleted)