For some reason I feel that NLP (Natural Language Processing) is considered an “Academic” field. While I don’t have a degree in this field, I do have quite a bit of practical experience. In the past few years I have developed a several NLP systems: a public transportation route planner, a remote television program recorder, an appointment scheduling system, as well as a few others. I am proud to say I have developed real products that thousands of people use every day!
First I want to apologize to the academics, as you may not agree with many of the things in this post (or the ones that follow).
The goal of NLP systems:
In simple words the goal of a NLP system is to convert (or “translate”) a human text such as: a news article, text message, search request, Facebook status… etc, into a well-defined data structure which is readable for a computer.
A very simple example – a system that recognizes flights search requests:
|Possible inputs:||The Result:|
|I’m looking for a flight- from Madrid, Spain to London, England- from Spain, Madrid to England, London- to London, England, from Madrid, Spain
– to England, London, from Spain, Madrid
* Different inputs in a human language (left side) with the same XML result (right side).
Usually the NLP system is not a standalone system, but a one module of a larger system. In most cases the result of the NLP engine is used to retrieve some information (in our example: search for a relevant flight in the schedule) and then send the final result back to the user.
The cycle of a standard system:
User → User input → NLP system → Database, Information center → Final Result → User
More NLP systems:
For further reading, here are some well-known uses of NLP:
Timeout – My life outside the NLP world:
I would like to introduce you LEGO Mindstorms, a nice kit for learning the robotics world: