Spend less time finding great articles with artificial intelligence
I am an avid reader. Offline, I read anything from books to newspapers to the MIT Tech Review. Online, I spend time on Medium, Quora, blogs, and other webpages. At some point, however, I run into a wall: articles have an air de déjà-vu. One needs to find new sources to vary the viewpoints.
In this struggle, I have an ally, called Synaptic. It understands what I’m reading about, and helps me find relevant content to explore further. Synaptic is like a friend with whom you discuss and who suggests an article he read or a conference he saw. I built it using IBM Watson — here’s how.
Artificial Intelligence
Watson impressed me, like it did many others, when it won Jeopardy. I have always been interested in neuroscience and exploring how the human brain works, but watching a computer outsmart it was amazing. I kept following the news, its progress in the medical field, the hackathons. One of the most impressive lines I read on the topic (found via Chris Dixon) “The business plans of the next 10,000 startups are easy to forecast: Take X and add AI.” When I learned that Watson APIs were being opened, I could not resist the opportunity to try them.
At the time, I was building an Android app to facilitate bookmarking, sharing and discovering great content. People would share articles they liked and receive relevant suggestions. It’s like Facebook, without your cousin’s baby pictures. I didn’t even have a name for the app yet — it was meant as an exercise to learn coding apps — but I immediately saw how it could be improved by an artificial intelligence service to run the analysis, classification, and recommendation. With a smart back-end, I would be able to remove steps imposed on the user, such as tagging their links. Great!
There was only one problem — I didn’t know how to work with artificial intelligence APIs like those from Watson. Before attempting to do a mobile app, I needed to do a simpler demo.
The project
I figured I should start with a simpler project — a one-page web app. I know how to build a Rails app in minutes, and my business partner can whip up a nice, clean design in no time, so all potential roadblocks were removed. I was free to explore the Watson APIs.
The process of integrating the APIs was relatively straightforward. The Concept Insights service documentation is well done, easy to follow, and provides helpful examples. The examples are written in Node.js, intended to be deployed on their Bluemix platform — definitely something I want to learn at some point, but I wanted to take it one step at a time.
Another very positive aspect of my experience testing Watson has been the responsiveness of the engineers on the forums. If I posed a question, I knew I would receive a reply within 24 hours. Good documentation is one thing, but snappy support is what really makes a difference for developers, especially in a new field like AI that most people are unfamiliar with.
Building Synaptic
With this amazing support, I was able to familiarize myself with the basic commands and start a private corpus intended to store all the articles shared, in just a few hours. A few days later, I had a simple web interface that allowed me to explore the public datasets. I could also manually populate my own corpus with a few articles and see the concepts Watson was “understanding” from them.
That’s when I truly witnessed the power of Watson’s Concept Insights service: instead of solely looking at keywords, it builds a layer of abstraction above them. The API understands how the keywords are connected using the graph of Wikipedia articles, and extracts the most relevant ones. It can also derive concepts that are not even mentioned in the article, which was extremely impressive to me.
I was beginning to see how the app would all come together. First, there would be a simple page with a URL input. People could enter the web address of an article and the APIs would extract topics and understand the article. Then, articles on similar or related topics would be found from a corpus of articles, including both user-submitted articles and the public corpus of TED talks used by IBM’s demo app. The interesting part, from a product standpoint, was that the response from the corpus of articles would improve over time. People continuously sharing interesting links as input, would enrich the output for others.
The missing piece was the ability to read the content of the page, in a proper way. For that, I decided to use a different API, Readability, which is a simple and relatively powerful solution. From there, the app was able to go live. As with any app, there are still areas for improvement, including the number of sources Readability can read, limiting the number of articles Watson/Synaptic can understand.
Go Live
Synaptic is now live! I encourage you to go and try it out for yourself and provide your feedback. Users have been submitting and searching for articles about Bitcoin, innovation management, baby illness, artificial intelligence, solar energy, genetics, Central America politics, computer science, and more. For example, an artificial vision specialist told me he found a few interesting articles in his own field using the service!
Thus far, feedback has been overwhelmingly positive and we will continue to refine and improve the app as we go. We’ll include the ability to bookmark your favorite links into a library, and offer the most interesting content based on your favorite topics. If you’re interested, request your early access to the app!
What will you be reading next?