My utterance was overlapping by multiple entities - azure-language-understanding

I have an intent "Top_10_procurement_packages", there is a utterance "" which exists multiple entities.
I've found that I am able to remove many entities. even I removed all of them and reset my expected entity. after training, this issue is still there.
Any solution for it.

Related

How to use ml luis entity and list entity together in bot framework

When i try to use both list entity and ml entity together in bot composer i get the following error:
"Check STATUS with {#idtype} {#id=132354}" has mix of entites with labelled values and ones without. Please update utterance to either include labelled values for all entities or remove labelled values from all entities."
Check STATUS with {#idtype} {#id=132354} .Here idtype is list entity and id is ml entity.
What that means is that, for a specific utterance you have to either add labels (the "=132354" part) to all entities in the utterance or remove them from all entities.
For your specific sample, since you should have the "132354" value included in the list definition, you could remove it from the utterance.
However, ml entities require (at least some) utterances with labeled entities, after all that's the only way the machine can learn what that entity looks like 😉. So, wherever you label an ml entity, you should also label the list entity or any other entity in the utterance.
You can read more about this topic in the Best practices for building a language understanding (LUIS) app documentation page.
BTW an utterance with unlabeled entities is considered a pattern, you can read more about this in the Patterns improve prediction accuracy page.

Do I have to teach luis.ai what an "employee" is for EVERY intent?

I was actually told this is true, and if so, then I must be missing something. If I make an intent with an employee custom entity, then I make another intent that also uses the employee entity, do I have to enter all the employees again? One for each intent?
I made an intent called who-is. The user basically asks "who is {employee}" or "tell me about {employee}". I entered about 5 different phrases. However, I used a lot of employee names to teach luis what an employee is, so I have the same phrases repeated a lot of times to get all the names. So far so good.
Then I made another intent to get the number of direct reports for an employee. Do I have to teach that intent the employee names again? If so, this is a hassle and I must be missing something. We may have tens of different intents that need an employee and tens of sample employees to teach luis.
In Luis Entity works on whole app, so if you have mapped one entity in one intent and if you have similar words in other intents it will be mapped automatically.

Difference between Phrase lists and list entities?

I have started working with Microsoft bot framework and LUIS.
I have problem understanding difference between Phrase lists and list entities?
Can you help me? Examples would be great.
Thanks
What is a list entities?
Definition in documentation here, I highlighted the main points
List entities represent a fixed set of related words in your system.
Each list entity may have one or more forms. They aren't machine
learned, and are best used for a known set of variations on ways to
represent the same concept. List entities are not labeled in
utterances or trained by the system.
A list entity is an explicitly specified list of values. Unlike other
entity types, LUIS does not discover additional values for list
entities during training. Therefore, each list entity forms a closed
set.
If there is more than one list entity with the same value, each entity
is returned in the endpoint query.
What is a phrase list feature?
Definition in documentation here:
A phrase list includes a group of values (words or phrases) that
belong to the same class and must be treated similarly (for example,
names of cities or products). What LUIS learns about one of them is
automatically applied to the others as well. This is not a white list
of matched words.
When to use phrase lists instead of list entities
I think the best answer is (still in the documentation, here):
When you use a phrase list, LUIS can still take context into account and generalize to identify items that are similar to, but not an exact match as items in a list. If you need your LUIS app to be able to generalize and identify new items in a category, it's better to use a phrase list.
In contrast, a list entity explicitly defines every value an entity can take, and only identifies values that match exactly. A list entity may be appropriate for an app in which all instances of an entity are known and don't change often, like the food items on a restaurant menu that changes infrequently. In a system in which you want to be able to recognize new instances of an entity, like a meeting scheduler that should recognize the names of new contacts, or an inventory app that should recognize new products, it's better to use another type of entity and then use phrase list features to help guide LUIS to recognize examples of the entity.

Training LUIS to predict entities without Phrase List

I am trying to train LUIS to recognize entity through few utterances. I initially tried to train with few utterances with different entity values. The entity values are made up of two words or more. For example, 'customer engagement', 'empower your teams' etc.
I am not able to get LUIS to identify the entity correctly because of the variation in the number of words.
I cannot use Phrase List as the values as the values are dynamic.
How can I get train LUIS to recognize the multiple words in the utterance and identify the entity effectively?
This still requires you to provide some training data in the form of canonical values and synonyms, but another way to approach this would be to use a list entity inside of a composite entity. Other than this, you'll currently have to provide a larger amounts of training data/phrase list data as LUIS doesn't look at the definition of a word.

Outlook contact sync - How to identify the correct object to sync with?

I have a web application that syncs Outlook contacts to a database (and back) via CDO. The DB contains every contact only once (at least theoretically, of course doublets happen), providing a single point of change for a contact, regardless of how many users have that particular contact in Outlook (like Interaction or similar products).
The sync process is not automatic, but user-initialized. An arbitrary timespan can pass before users decide to sync their contacts. A subset of these contacts may have been updated by other users in the meantime.
Generally, this runs fine, but I have never been able to solve this fundamental problem:
How do I doubtlessly identify a contact object in a mailbox?
I can't rely on PR_ENTRYID, this
property changes on contact move or
mailbox move.
I can't rely on my own IDs (e.g. DB
table ID), because these get copied
with the contact.
I absolutely can't rely on fields
like name or e-mail address, they
are subject to changes and updates.
Currently I use a combination of 1 (preferred) and 2 (fall-back). But inevitably, sometimes users run into the problem of synching to the wrong contact because there is none with a given PR_ENTRYID, but two with the same DB ID, of which the wrong one is chosen.
There are a bunch of Outlook-synching products out there, so I guess the problem must be solvable.
I had a similar problem to overcome with an internal outlook plugin that does contact syncing. I ended up sticking a database id in the Outlook object and referring to that when doing syncs.
The difference here is that our system has a bunch of duplicates that get resolved later by the users. When they get merged I'll remove the old records and update outlook with all of the new information along with a new id.
You could do fuzzy matching to identify duplicates, but duplicate resolution is a funny problem that's mostly trial and error. We've been successful at implementing "fuzzy" matching logic using the levenshtein distance algorithm for names and addresses cleaned down to a hash code.
Good luck, my syncing experiences have been somewhat painful.

Resources