NLU model best practices to improve accuracy

Natural Language Understanding (NLU) is a crucial component of many AI applications, from chatbots to virtual assistants. However, training NLU models can be challenging, requiring a deep understanding of language and context. Our first tip is to avoid improvisation. Indeed, you cannot just decide that you want to create a NLU model and hope it works perfectly with your use case. You should carefully think about your final use case beforehand so that you can prepare your data according to your needs.


In order to help you improve the accuracy of your NLU model, we’ve compiled a list of best practices for building your data. Whether you’re a seasoned NLU developer or just starting, this will help you optimize your models and achieve better results.


Define Clear Intents and Entities for you NLU model


One of the most important steps in training a NLU model is defining clear intents and entities. Intents are the goals or actions that a user wants to accomplish, while entities are the specific pieces of information that are relevant to that intent. By defining these clearly, you can help your model understand what the user is asking for and provide more accurate responses. Make sure to use specific and descriptive names for your intents and entities, and provide plenty of examples to help the model learn.

An Intent captures the general meaning of the sentence:

It’s a category representing the intention conveyed by a group of input sentences. We could have 3 intents for setting the temperature:

  • set_temperature: Increase the temperature by two degrees
  • get_temperature: Give me the temperature of the living room
  • apply_scenario: Switch the house to night mode


We can also choose to split the actions of decreasing and increasing the temperature with 5 intents:

  • set_temperature: set this room to 18 degrees
  • increase_temperature: increase the temperature in the house by 2 degrees
  • decrease_temperature: it’s too hot in here, lower the temperature
  • get_temperature: how many degrees is it in here?
  • apply_scenario: set the vacation scenario

Both solutions are valid as long as sentences in each intent don’t overlap. Having multiple intents could be confusing, thus it’s crucial to balance their diversity with their specialization.


Entities are some specific words or groups of words that you want to extract from the input, they often carry semantic meaning and by a combination of extracted entities, the general meaning of the sentence can be inferred.

In our example, we would need to extract entities as variables to perform our actions:

  • room: bedroom
  • number: 20
  • unit: degrees
  • scenario_name: night mode


Use diverse and representative training data for your NLU model


To ensure that your NLU model is accurate and effective, it’s important to use diverse and representative training data. This means including a wide range of examples that reflect the different ways that users might phrase their requests or questions. It’s also important to include examples. 

  • An example should be representative of the intent.
  • The example should cover different manners explaining the same intent.
  • Like “Turn on the heat”, “Could you turn on the heat, Please!” or even “It’s very cold here…” these three examples mean the same intent “Turn the heat on”.


Different regions, cultures, and demographics ensure your NLU model is inclusive and accessible to all users. By using diverse and representative training data, you can help your model learn to recognize and respond to a wide range of user inputs.


Balance the amount of training data for intents and entity


When training your NLU model, it’s important to balance the amount of training data for each intent and entity. If you have too little data for a particular intent or entity, your model may struggle to accurately recognize and respond to user inputs related to that topic. 

On the other hand, if you have too much data for a particular intent or entity, your model may overfit and struggle to generalize to new inputs. Aim to have a balanced amount of training data for each intent and entity to ensure optimal performance of your NLU.


Example: More data based example for Heating intent is:

  • “Turn on the heat”
  • “Could you turn on the heat”
  • “Please! Turn the heat on”
  • “It’s very cold here”
  • “Can we turn on the heat”
  • “Could you switch on the heat”
  • “Switch on the heat”


Fewer data based example for switching on Fan is:

  • “Turn on the Fan”
  • “Switch on the Fan”


In the second example of Switching on the Fan the model is not exercised for many intents.


Use pre-trained language models as a starting point


One of the best practices for training natural language understanding (NLU) models is to use pre-trained language models as a starting point. Pre-trained models have already been trained on large amounts of data and can provide a solid foundation for your NLU model. This can save you time and resources in the training process. However, it’s important to fine-tune the pre-trained model to your specific use case to ensure optimal performance. Fine-tuning involves training the model on your data and adjusting the parameters to fit your specific needs.


Choose the NLU algorithm depending on your data


When it comes to training your NLU model, choosing the right algorithm is crucial. There are many algorithms available, each with its strengths and weaknesses. Some algorithms are better suited for certain types of data or tasks, while others may be more effective for handling complex or nuanced language. It’s important to carefully evaluate your options and choose an algorithm well-suited to your specific needs and goals. It’s important to regularly evaluate and update your algorithm as needed to ensure that it continues to perform effectively over time.

  • “If you have a small dataset, it doesn’t make sense to choose a large algorithm (model)”. 
  • “If you have a large dataset, it is not recommended to choose a small algorithm (model)”. 


Regularly update and retrain your models


NLU models are not a one-time solution. As language evolves and new data becomes available, it’s important to regularly update and retrain your models to ensure they remain accurate and effective. This can involve adding new data to your training set, adjusting parameters, and fine-tuning the model to better fit your use case. By regularly updating and retraining your models, you can ensure that they continue to provide accurate and valuable insights for your business or organization.


Preprocess and clean your data


Before training your NLU model, it’s important to preprocess and clean your data to ensure that it is accurate and consistent. This includes removing any irrelevant or duplicate data, correcting any spelling or grammatical errors, and standardizing the format of your data. By doing so, you can help ensure that your model is trained on high-quality data that accurately reflects the language and context it will encounter in real-world scenarios. Preprocessing and cleaning your data can help improve the accuracy and effectiveness of your model by reducing the amount of noise and irrelevant information it has to process.


Best Case Dataset for a Good NLU model


Gather maximum information from the use case specification, draw a table containing all your expected actions and transform them into intents.


Action Intent
We can start the cooker start
We can stop the cooker stop
We can increase the cooker’s heat increase_heat
We can decrease the cooker’s heat decrease_heat
We can lock the cooker’s security lock_security
We can unlock the cooker’s security unlock_security
We can ask the cooker how long it still needs tell_remaining_time
Everything else we don’t want to handle none


Cases to avoid while building data for your NLU model


Neglecting to include enough training data


One of the most common mistakes when building NLU data is neglecting to include enough training data. It’s important to gather a diverse range of training data that covers a variety of topics and user intents. This can include real user queries, as well as synthetic data generated through tools like chatbot simulators. Additionally, regularly updating and refining the training data can help improve the accuracy and effectiveness of the NLU model over time.


Failing to test and iterate on the data


It’s important to test the NLU model with real user queries and analyze the results to identify any areas where the model may be struggling. From there, the training data can be refined and updated to improve the accuracy of the model. It’s also important to regularly test and iterate on the NLU model as user behavior and language patterns can change over time. By continuously refining and updating the NLU data, you can ensure that your NLU model is providing accurate and helpful responses to users.


Not defining clear intents and entities


One of the most important aspects of building data is defining clear intents and entities. Intents are the goals or actions that a user wants to achieve through their interaction with the model, while entities are the specific pieces of information that the final application needs to fulfill those intents. Failing to define these clearly can lead to confusion and inaccurate responses. It’s important to spend time upfront defining and refining these elements to ensure the best possible user experience.


NLU model: the cornerstone of a good VUX in voice technology


Natural Language Understanding have opened up exciting new perspectives in the field of natural language processing. Their ability to understand and interpret human language in a contextual and nuanced way has revolutionized many fields. In order to achieve that, the NLU models need to be trained with high-quality data. However, note that understanding spoken language is also crucial in many fields, such as automatic speech recognition (ASR).

Combining advanced NLU models with high-performance ASR systems paves the way for smoother, more natural interactions between humans and machines. By exploring the synergies between NLU models and ASR, we are witnessing a promising future where machines will be able to understand and respond more naturally and efficiently to our spoken interactions. Then it will contribute to enhanced voice user experiences and significant technological advances.


For developers, by developers

Try our voice solutions now


Sign up first on the Console

Before integrating with VDK, test our online playground: Vivoka Console.


Develop and test your use cases

Design, create and try all of your features.


Submit your project

Share your project and talk about it with our expert for real integration.

It's always the right time to learn more about voice technologies and their applications