Intent Detection not working properly when asked query with synonyms value

Rasa NLU version : 0.14.4 Operating system (windows, osx, …): windows Content of model configuration file :

{ “language”: “en”, “pipeline”: [ { “name”: “nlp_spacy” }, { “name”: “tokenizer_spacy” }, { “name”: “intent_featurizer_spacy” }, { “name”: “intent_classifier_sklearn” }, { “name”: “pattern_ner_spacy” } ] }

Issue : I have a working installation of rasa_nlu, running Python 3.6.5. I was able to get the sample tutorial working. I’m running into trouble getting it to work with intent detection.

Here’s the relevant portion of my training file,


  • what is the max rating?


  • best
  • highest
  • maximum Now, rasa_nlu correctly detects the intent and entity for a question such as what is the max rating?

{‘intent’: {‘name’: ‘select’, ‘confidence’: 0.9542820453643799}, ‘entities’: [{‘start’: 12, ‘end’: 15, ‘value’: ‘max’, ‘entity’: ‘operator’, ‘confidence’: 0.8146240434922525, ‘extractor’: ‘ner_crf’}], ‘intent_ranking’: [{‘name’: ‘select’, ‘confidence’: 0.9542820453643799}, {‘name’: ‘identity’, ‘confidence’: 0.036332450807094574}], ‘text’: ‘what is the max rating?’} However, when I use a synonym in the question, it doesn’t detect the intent correctly. For example, what is the best rating?

No dice with a synonym. I’ve tried this both with spacy_sklearn and tensorflow_embedding, and see similar results.

From suggestion and blog, I came to know I need to added all example using Chatito but I don’t think so it would be a great approach it will generate templates with all synonyms. If Max has ~1000 then do I need to create thousand template examples? for better intent classification?

I created all examples but it does not fit in a situation when Ihaving larger dataset entity synonyms. , it doesn’t fully solve the problem. Now the system returns each synonym (e.g. highest, maximum, best) as the entity value instead of the actual value (max). For example, if I ask what is the best rating?, I expect the same intent like when I asked with training example query.

or Do I need to add those synonyms in lookup_tables .

Many thanks in advance. Would greatly appreciate any pointers.


Synonyms are used, if I remember correctly, for entity extraction, not intent detection.

What I do in a similar use case as yours is to “normalize” synonyms in my own tokenizers. Which means, in your case, that tokens “best”, “highest” and “maximum” would be replaced with “max”. Note that I do not use enitities in this particular case, though. If you take care of offsets, the entity extraction would also presumably keep working.