Entity mapping and synonyms

PeterWiles
Kilo Sage

I am going around in circules.

I had this working before but not sure what I have done to break it.

I have a topic "Acces to businness applications"

The intent "businessappaccess"

As we have 100+ apps across our customers, I have used vocab to match them to "coreapplication"

Example of an app is "teams" or "jabber"find_real_file.png

Some of the utterances

find_real_file.png

So, "jabber" matches "coreapplication" as I get a 100% match

find_real_file.png

I created a entity a simple entity "coreApplication" and mapped it to the same word as highlighted above.

This is so I can use the entity in the topic, etc to pass straight through to the answer

However, it's picking up other words in the utterance for "coreApplication" instead of the application name (jabber in this case)

I have tried across various utterances and none seem to match the actual value to the entity I would expect.

 

I know I had this working so unsure if there is an issue with my intent/utterances or with the vocab.

Any pointers?

1 ACCEPTED SOLUTION

D van Heusden
ServiceNow Employee
ServiceNow Employee

Hi Peter,

what you've done is taught the vocabulary to replace Jabber and Finesse with coreapplication when it comes across these words in an utterance. Their values cannot be tied to an entity any longer once you do this. Note this is at the moment, Paris release, the case and that NLU engine regularly gets updates that could impact what I'm stating here and what my guidance is.

What would I do? Well, at the moment I would look at List entities. They have the benefit that they are normalised so you can easily use their value to tie them to an object variable in the Virtual Agent. A downside is that you need to add at least 1 utterance per entity value to your intent, and quite possibly several but start with 1. 

Another downside is that the number of entity values is tied to a maximum (512 characters total for Paris) meaning that you could get like 30 - 50 entity values max. However, my advise is to start with those entity values that have the most frequent usage in requests. Pick the top 10 and start with those. Create your utterances to correspond with the entity values and have your set of test utterances ready to further tune the model.

On the Virtual Agent side you can use the incoming variable to skip confirmation and move into a specific branch. Sometimes it is wise to check with the user if the entity value is indeed the application.

Let me know how it goes! At the bottom of this reply is a screenshot of my model which contain your typos in the name as well 😉  You should actually name it without spacing, etc like "BusinessApplicationRequests"

Note. If you run into a training error such as below open System Diagnostics > Debug Log and run the training again. You will see a more detailed message there pointing to the actual utterance(s) causing the failure.

find_real_file.png

 

Example of the model with List entity values:

find_real_file.png

View solution in original post

2 REPLIES 2

D van Heusden
ServiceNow Employee
ServiceNow Employee

Hi Peter,

what you've done is taught the vocabulary to replace Jabber and Finesse with coreapplication when it comes across these words in an utterance. Their values cannot be tied to an entity any longer once you do this. Note this is at the moment, Paris release, the case and that NLU engine regularly gets updates that could impact what I'm stating here and what my guidance is.

What would I do? Well, at the moment I would look at List entities. They have the benefit that they are normalised so you can easily use their value to tie them to an object variable in the Virtual Agent. A downside is that you need to add at least 1 utterance per entity value to your intent, and quite possibly several but start with 1. 

Another downside is that the number of entity values is tied to a maximum (512 characters total for Paris) meaning that you could get like 30 - 50 entity values max. However, my advise is to start with those entity values that have the most frequent usage in requests. Pick the top 10 and start with those. Create your utterances to correspond with the entity values and have your set of test utterances ready to further tune the model.

On the Virtual Agent side you can use the incoming variable to skip confirmation and move into a specific branch. Sometimes it is wise to check with the user if the entity value is indeed the application.

Let me know how it goes! At the bottom of this reply is a screenshot of my model which contain your typos in the name as well 😉  You should actually name it without spacing, etc like "BusinessApplicationRequests"

Note. If you run into a training error such as below open System Diagnostics > Debug Log and run the training again. You will see a more detailed message there pointing to the actual utterance(s) causing the failure.

find_real_file.png

 

Example of the model with List entity values:

find_real_file.png

PeterWiles
Kilo Sage

Well, I completly missed the understanding there.

Thank you.