## 3 Natural Language Understanding Cloud Platforms  
The main goal of NLU services is the extraction of useful and structured information from an unstructured input like a natural language sentence or document. In general, NLU services focus on two aspects:  
* **Intent**--the services have the goal to understand what the user means in their sentence, which can be any type of utterance (greetings, requests, complaints, etc. ), and provide a classification value for it. * **Entity**--the services should identify the important parameters of the users' requests, extracting names, addresses, numbers, quantities, etc. To clarify these two aspects, Figure 2 shows the output of IBM Watson using the sentence \"Do you want to go out tomorrow?\" as an input example. In Figure 2, labeled with number 1, the platform classifies the intention as \"hang_out\", which is the meaning of the user request. In label 2 of Figure 2, the NLU engine extracts the word \"tomorrow\" and labels it as an entity with type \"date\". Please note that the platform automatically converts the word \"tomorrow\" to a specific date in a structured format. The most used NLU platforms on the market are:  
**Watson (IBM):** Watson is a NLU framework which allows building chatbots using a web-based user interface or using the most common programming languages, providing different SDKs. The users can create custom models for specific domains, only providing a relatively small set of examples to train the NLU engine. Once intentions or entities are recognized, the context allows storing data and reuse them in following dialogue interactions. Using the intuitive tree structure, it is possible to build deep and articulate dialogue frames. Once intentions and domains are identified, they are stored in a _context_ and they can be retrieved and manipulated in the following interactions with the user. Watson permits defining different skills and each of them recognizes just a group of specific intentions and entities; _skills_ can be connected and disconnected, aiming to add or remove the virtual assistant capabilities in different domains. Another characteristic is that Watson can be easily integrated with a variety of communications services, and it offers support also for speech translation. **Dialogflow (Google):** Previously known as Api.ai, it has recently changed its name to Dialogflow, and it is a platform which helps to develop virtual textual assistants and  
Figure 2: Output of a NLU elaboration with IBM Watson. quickly add speech capability. Like Watson, this service offers a complete web-based user interface for creating chatbots and, for complex projects, it is possible to use a vast number of APIs via Rest or SDKs for several programming languages. Several intentions and entities can be created by providing examples. Sophisticated dialogue between the virtual assistant and the user are allowed by the particular focus that Dialogflow gives to the entire context, storing important information that can be found not only in the last interaction but in the entire course of the dialogue. **Luis (Microsoft):** Similar to the previous platforms, Luis is a cloud-based service available through a web user interface or API requests. While allowing the users to develop their own models, Luis offers many pre-trained domain models that include intentions, examples and several entities. While the capability of Luis are similar to the ones belonging to the other services, the management of the dialogue flow results is more intricate and difficult to handle. Massive test support, sentiment analysis, speech recognition and other tools, which facilitate the development of a virtual assistant, are supported. **Wit.ai (Facebook):** Wit.ai (bought by Facebook in 2016 and freely available) is quite different compared to other platforms.