Screenshot / Code Snippet
For a video snapshot visit http://code.google.com/p/robostack/.
This robot is a simple question-answering system that relies on the Stack Exchange APIs to find answers to questions or ideas posted in a Google Wave.
It uses the full text search and ranking system provided by Google. Rather than using complex data mining techniques to select appropriate answers it uses answer ranking system employed by Stack Exchange sites to give user the most appropriate answer to their query.
On top of this it provides automatic language detection and translation capabilities. This means that, although the Stack Exchange sites are in English, the user can post questions in any of the supported languages. The robot will automatically detect the language regardless of user browser settings, will find answers to user question and will display the answer in the same language.
The user has choice to view any of the questions matching his inital query or any of the answers to the selected question. He can also explore topic to look at similar questions of interest. He can also follow user to see which questions a particular user has asked, answered or favorited.
Finally, if he feels he can answer similar questions he can click "I'm feeling Enlightened" button to see a list of similar unanswered questions. Since the Stack Exchange APIs are readonly, the user can modify the question or answer only by going to the Stack Exchange site by clicking the question title. If the robot is somehow unable to find any matching question the user can explicitly search for questions by selecting some text and clicking Highlight Question/Idea from the toolbar.
The main algorithm for the robot is as follows.
- When a blip is submitted, it tris to detect its language. If it's other than English, translate it to English.
- Search the Stack Exchange sites for the text using a custom search engine.
- For each hit, fetch the actual question from the Stack Exchange API and match its tags with the user text.
- If at least one tag is matched with what the user asked, translate the question in user's language and highlight the searched keywords.
- Show its accepted answer in the user's language. If there is no accepted answer show the most voted answer.
- If the user chooses to select another question, fetch the question from the site in the order Google ranked them. Translate it and show its accepted/most voted answer.
- If the user wants to follow a user, show his asked questions, answered questions and favorite questions.
- If the user clicks "I/m feeling Enlightened" button, show the unswered questions matching the topic.
RoboStack has an Apache 2.0 License. http://www.apache.org/licenses/LICENSE-2.0
The app is a Google Wave robot that can be added to a Google wave by adding email@example.com as a participant.
You can download the source code from Google Code: http://code.google.com/p/robostack/
The application is hosted on Google App Engine.
You can contact the developer at firstname.lastname@example.org.
The code uses the
stackexchange-java-sdk (also written by me :)). It's available at http://code.google.com/p/stackoverflow-java-sdk/.
The code also uses Apache Lucene for text analysis and Apache Velocity for templating. The code is open-source. It's available at http://code.google.com/p/robostack/. For contributing you can add issues to the project and attach patches to them.