OpenAnswers

From OpenCog
Jump to: navigation, search

OpenAnswers -- a project currently in design and development phase -- will be a service much like WikiAnswers or Yahoo Answers, but using voice as well as text for an interface, and using OpenCog-based AI to provide more flexible question-answering capability.

OpenCog AI will be used in OpenAnswers for two purposes

  • intelligent matching of questions with answers previously provided by human users
  • automatic creation of answers based on available online text, whenever possible

Using AI to Help the World's Poorest People

OpenAnswers will be useful for many people for many purposes, but one of the key objectives is to provide a way for advanced AI to reach out beyond the techno-elite and help some of the poorest people in the world.

Even in very disadvantaged areas of Africa, South America or Asia, for example, mobile phones are still prevalent.

OpenAnswers will give anyone with a mobile phone the ability to get quick, free advice on medical issues, financial issues, job or legal issues, and pretty much anything else. It will be useful even for those who are functionally illiterate.

Furthermore, the information will not be provided by any government agency or business -- it will be provided by real people around the world. Many questions will yield multiple answers provided by multiple people, which is a feature not a bug.

Users will also be able to provide answers to questions if they don't like the answers they hear, thus allowing individuals in almost any economic circumstance to contribute to the world's pool of online knowledge. All knowledge entered, whether by voice or by text, will be placed on the Web in text format and also accessible by voice.

Technical Specifics

To use OpenCog as a question-answering system, the main ingredients are

  • the RelEx toolkit for turning English knowledge into logical relationships
  • the NLGen toolkit for turning logical relationships into English sentences
  • the PLN framework for uncertain reasoning on logical relationships

With these ingredients one can make a system that ingests knowledge from English documents and answers English questions about them. Of course, at this stage it won't work perfectly, but if there are particular domains of interest, it can be tuned to work well for these domains.

Some features that need to be added to this to make OpenAnswers are

  • support for languages beyond English
  • integration with speech-to-text and text-to-speech technology

Work is already underway in these areas; for instance there is a project underway to extend RelEx and NLGen to Chinese.

Needs on the client side

  • phone

Roadmap notes

There are three main technical challenges for the NLP interface: question normalization, unique concept identification, and reasoning.

Question Normalization

In order to match questions to a database of answers, the format of the question needs to be converted into a pattern that resembles the answer. So, for example, "John threw the ball" and "Who threw the ball?" are well-matched, and, for this particular question type, a word-by-word comparison indicates that "John" matches the pattern "who?". However, very few questions and answers match up in this precise way; thus, questions need to be normalized so that they can match the format of stored answers. RelEx does a fair amount of question normalization, but much more, of a more sophisticated nature, is required.

Concept Identification

The system is meant to learn by reading free text. To do so, it must distinguish unique concepts and entities in the text. For example, consider the text: "John threw a red ball, and Mike threw a green ball." The system needs to determine that there are two distinct entities: a red ball, and a green ball, referred to in this sentence. Yet, both of these are instances of a general thing "ball". Some simple algorithms for performing this identification have been developed; this needs to be greatly enhanced. Doing this properly requires ground-breaking research.

Reasoning

OpenCog contains a reasoning engine, but it is not yet clear on how to apply this engine to free text. For example, consider the statements "Berlin is the capital of Germany." and "States have capitals." How can one deduce that "Germany is a state"? Assume that the two input sentences are parsed by RelEx, and the resulting dependency parses are input into OpenCog. What sort of a rule could be applied to these data structures that would allow the conclusion to be drawn? How many such rules are needed? How does one avoid drawing incorrect conclusions? Hard work and pure research remains to be done in this area.