I had the opportunity to work with LUIS (Language Understanding Intelligent Service) recently in order to make an “intelligent” BOT. NLP (Natural Language Processing) and artificial intelligence in general are not new as Alan Turing was already busy with that decades ago but today, we have more power and more data than ever…
In general, if you want to have a reliable NLP engine, it’s always a good idea to restrict the scope of the application domain and that’s exactly what LUIS allows you to do in an easy way.
When creating a LUIS model, you’re invited to define the Intents (intentions), in other words, the scope of your application domain. If you create a LUIS model about hotel reservations, you’ll probably define Intents such as BookRoom, CancelBooking, ShuttleOrder, etc…The beauty of LUIS is that it comes with a portal, giving the possibility to application domain specialists to define the model. You don’t need to be technical, you don’t need to be a pro in statistics (as most NLP engines are based on statistics), you simply need to know the business you deal with.
Once you have defined your Intents, you need to define the Entities which are the objects of your Intent. For instance: “I want to book a single room” results in Intent:BookRoom Entity: Single Room of type RoomType. Again, the entities, as part of the model may be defined by the domain expert. More than that, the domain expert can introduce some instructions about the actions that should be undertaken whenever an Intent is detected.
At last, you can train and publish your model to let applications consuming it. LUIS comes with an Active Learning feature, meaning that all the queries you send to a model are recorded. Those that do not completely match the ones that are defined in the model are automatically classified by LUIS but you can review this and adjust if necessary. This clearly means that your model will become more accurate day after day.
So, at the time of writing, LUIS comes with strong features:
- Delegation of the model definition to domain expert made easy thanks to the portal
- Active learning
- Fast model training and publishing
but also some things that could be improved:
- The list of pre-built entities is rather limited so far. The encyclopedia is a bit chaotic as it identifies wrongly many entities.
- LUIS should come with customizable model templates that would cover typical enterprise scenarios: (ticketing, vacation request, etc.).
- Some basic language features are not interpreted correctly: for example “it does not work” isn’t considered the same as “it doesn’t work”. The elision is not managed correctly from what I could test so far. From the tests I made so far, intents are correctly detected but elisions cause the entity detection to fail.
That said, for a product that’s still in preview, I’m rather impressed and I hope Microsoft will keep improving it.