Writing a Natural Language Parser in C# Part 1–Why?
March 9, 2012 at 11:35 AM
Recently, I did a refactor of several key pieces of the natural language processor I created for my smart home. Spending the time refocusing on how it works convinced me to write a series of posts explaining how it works and how it was built. In this first installment, I'll look at why an NLP engine is a useful piece of software and other things it could be used for.
Originally Written for Smart House
Obviously, I created this engine for use in my smart house. As I've said many times, the original idea was inspired by similar work done by Ian Mercer. By making this a part of my smart house, I can communicate with the system to request information and ask it to carry out work for me using natural language. What's more, since the interface to my system is nothing more than text, I can communicate through any channel that supports text: email, instant messaging, SMS, etc. By using text to speech and speech recognition functionality available on multiple platforms, I can even have a conversation with the system through speech.
Is There Room for NLP in Business
Is there a place for this interface in business? I think so. UX technologies are changing rapidly. Touch is an expected interface in most devices, now. Certainly mobile phones are expected to support touch, as well as tablet computers. The Kinnect introduced motion gestures for gaming and this method of interacting with systems is coming to PCs. The point is that interfaces not involving a keyboard and mouse are getting more common-place and natural language certainly has a place at the table.
Some examples of business use might include:
- An ad-hoc query system that lets users ask for what they want from the data source using sentences.
- Personal Assistant software that could ask the user for direction on what to do with emails or documents and allow the user to specify answers in natural language.
- Conference room software that controls displays and / or whiteboards via natural language requests.
I've found working with this technology to be a lot of fun and the results have been satisfying. I invite all of you to follow this series to see how it all works and to contribute your own ideas.
In part 2, we'll look at the architecture of the system. From there, we'll take deep dives into the individual parts.