Consider a speech-to-structured-search-app in a limited domain, like a specialized siri/google now. For example something like a real estate search assistant with possible questions like: "what new 2 bedroom apartments have become available in Capitol Hill, Seattle this week?" Perhaps naively, it seems a big part of the deducing meaning could be done doing ordinary dictionary lookups with terms like 'bedroom', 'apart…
The general idea of NLP is not different from general computer science ie. 1) narrow the problem 2) solve it 3) try to solve a bigger problem.
The tower of sentence structure in NLP is:
- bag of word
- part of speech + named enties tagging
- dependency tagging/framing
- semantic tagging
The idea is to create templates for most common questions. Then you parse questions recognizing the named entities like "Capitol Hill", "Seattle" and commons "appartement" you can resolve the question. It's not an ordinary dictionary hash lookup since for in given template there is several "key". The value of the dictionary is the correct search method. It makes me think to multiple method dispatch which support dispatch by value.
Also something to take into account is that in the "assistant" example you give, the assistant can ask for confirmation. You don't explicitly state that you are looking to "rent" something. So the system might not recognize the question, but just guess that you talk about renting something because it's the most popular search around Capitol Hill, Seattle. You can implement a "suggest this question" feature that will feedback the "question dispatch" algorithm to later recognize this question.
This is mostly a Dynamic Programming approach. Advanced NLP pipelines use logic, probabilistic programming, graph theory or all of them ;)
The other big problems of NLP are:
- summary generation - automatic translation
Important to note is that like other systems it must be goal driven. You can start from the goal and go backward infering the previous steps or do it from the initial data and go forward. Again, it's very important to simplify. Factorize by recognizing patterns. It's the main idea regarding the theory of the mind.
Have a look at this SO question [1] I try to fully explain an example QA. Coursera NLP course is a good start.
OpenCog doesn't deal solely with NLP but gives an example of what a modern artificial cognitive assistant can be made of.
Beware that NLP is kind of loop-hole.
[1] http://stackoverflow.com/questions/32432719/is-there-any-nlp...