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
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/
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.
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?
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.
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.
39 comments
[ 2.8 ms ] story [ 89.4 ms ] threadfeel free to drop me a note at diego at algorithmia dot com as well.
Check it out, it's free, and it only wants read-only auth permissions via Twitter: http://skim.io/
Still tweaking the algorithm.
Made skimming much easier, I still miss this feature.
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'.
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.
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?
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.
- 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
I do need to add some intelligence to skim.io though.
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.