Natural Language for .NET
The Abodit Natural Language Engine for .NET lets you add natural language
understanding features to your software or website. These features can be as simple as
a text input field where you want to parse dates and times written in plain english
next friday afternoon) or as complex as a full
chat feature with a conversational flow.
This natural language engine is designed for command, control and query applications.
Abodit NLP offers several unique benefits over other approaches to natural language understanding:
Writing rules is as simple as writing C# methods. No separate configuration is needed and the parameters passed are useful, strongly-typed objects like times, dates, distances, ...
A large variety of units of measure and temporal expressions are provided. Temporal expressions may be as simple as
next mondayor complex as
last year on a friday in May between 5pm and 6pm.
Rules are created in terms of meanings not words. A single meaning may encompass many different words that are synonyms. You even get intellisense support for meanings so you can hover over a parameter type and see a short description of the group of words it represents.
Rules can also use classes of meanings. This means you can write a single rule that recognizes, say, all mammals instead of having to write a rule for each individual mammalian name. Extending this to your own domain might allow a single rule that recognizes any product by name.
Verbs and nouns are not just words with attached meanings, they are part of a graph of words and meanings. Verbs can be conjugated (changed into a different tense), and nouns can be turned into their singular, plural or possessive forms. This makes it easy to respond to users using the words they used, for example the user types
add a task for todayand the system responds
I added a task, you now have 7 tasks.
Word delimiters (spaces) are mostly optional allowing users to runwordstogethertwitterstyle and still be recognized.
The engine is agnostic as to the transport used: it can support any form of text input (web, chat, SMS, ...) and any form of output including multi-model output where, say, a web page is updated in response to user input.
The engine is agnostic as to the dialog approach used: it can support single query/response flows with no memory, query/response flows with history, frame-filling flows, state-machine based flows, ... Examples are provided for some of these but you can build your own too using database or in-memory storage for the user's context, conversation history, ...
There are many different applications for conversational natural language processing. Some are command and control applications like home automation, or controlling an external process like a deployment system or factory machinery; some are data-entry applications (e.g. mobile CRM; and some are primarily query applications used for reporting, business intelligence, or remote monitoring.