Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lab 2,3,4,5 Submission #6

Open
wants to merge 29 commits into
base: main
Choose a base branch
from
Open

Conversation

elenifysikoudi
Copy link

No description provided.

@RasmusBlanck
Copy link
Contributor

Good!
My first interaction with the machine was a little awkward, since it wasn't obvious that I should say something after the first message. But the rest went smoothly, and the extra information states are helpful.

@vladmaraev vladmaraev force-pushed the main branch 2 times, most recently from 79e44e6 to 389c1aa Compare February 20, 2024 15:55
@elenifysikoudi elenifysikoudi changed the title Lab 2 Submission Lab 2,3 Submission Feb 21, 2024
@elenifysikoudi elenifysikoudi changed the title Lab 2,3 Submission Lab 2,3,4 Submission Feb 28, 2024
@elenifysikoudi elenifysikoudi changed the title Lab 2,3,4 Submission Lab 2,3,4,5 Submission Mar 5, 2024
@RasmusBlanck
Copy link
Contributor

Lab 4 comments:

Most things work, but there are some states where ASR_NOINPUT isn't caught correctly, so the machine simply stops if the user is silent. Also, something seems to be off with the entity recognition for times: By saying reasonable things to the machine (at least what I find reasonable) the machine asked me if I wanted to book "a meeting with Vlad on Monday at meeting". It can also pick up the time as "at" if you say, for example "at ten". I think you should have another look at the training data for the entities, so that time is picked up correctly.

@elenifysikoudi
Copy link
Author

Can you give me some examples of the times that didn't work? I just used the prebuilt time entity that azure provided so I figured it had all the normal times.

@RasmusBlanck
Copy link
Contributor

In the first example I think I said "the meeting is at ten", which made it pick up the time to be "meeting". In the other example I simply said "at ten", and it picked up the time as "at".

@elenifysikoudi
Copy link
Author

I fixed the ASRNOINPUT problem and added some more training for time. But I couldn't manage to make the machine recognize "the meeting is at 10" it still takes meeting as time. I am not sure how to fix that. Now it does recognize times without saying o'clock though.

@RasmusBlanck
Copy link
Contributor

Lab 5 comments:

Many things work as expected, but there are a couple of things that I'd like you to take a look at. The system recognises very weird things as days (I was trying to speak unclearly to test the confidence thresholds), for example "Moon Day" and "Crafty". This is similar to the comment I had on your lab 4, where strange things were being picked up as times. I'd like you to try to fix this, so that I can also test that the confidence threshold works properly.

The other thing (and possibly related) is that in certain situations, the machine stops when I want to meet with someone called "Flash" (I was trying to mispronounce "Vlad" and this is what the machine thought I said...). I think it is picking up this as an "whoIsX" intent, but then there is a guard in the state that is assuming that it should have received an entity instead. This is the error message I'm getting:

Unable to evaluate guard in transition for event 'RECOGNISED' in state node 'DM.PromptAndAsk.ListenForPerson': Cannot read properties of undefined (reading 'length')

You can probably fix this by changing the guard (for example also by adding confidence checks here too).

Since lab 5 is basically a continuation of lab 4, you could put everything together in lab 5 instead of resubmitting lab 4 separately.

@elenifysikoudi
Copy link
Author

I fixed the issues you mentioned but I didn't use the confidence threshold to do so. When discussed in the lab it was said that it's not necessary to put it in all states and that it was enough to have it when checking the intents. I hope that this isn't a problem since the machine is working as intended now.
I added a guard in ListenForPerson so that if entities are empty it will ask again the question and thus the error doesn't occur anymore. As far as my machine recognizing weird days, for some reason "Moon Day" is in the prebuilt list (day_time) that NLU provides, I created a new entity with just a list of days to fix that.
The machine should be working as intended now. Let me know if there is anything else that needs to be fixed.

@RasmusBlanck
Copy link
Contributor

The confidence threshold works fine, but there is still something off with the entity recognition. First, it seems that the NLU is still picking up on the category "day_time", which means that the newly added guard that checks if the category is "day" always fails. I had to change this back to "day_time" to get past this stage. I think the old category is still there, on the NLU side. Did you clean it up (+ retrain and redeploy the model) after adding the "day" category? (I can also accept that "Moon Day" is still there, if it helps for getting other things to work.)

Also, I tried answering with examples from your training data (appointment.json):
Reserve an appointment with John
Monday
Set an appointment at 3

which gave me back:
Do you want me to create an appointment with appointment on Monday at appointment?

You could have a look at the labelling in the data: For example, the utterance "Set an appointment at 3" is labelled as "at 3" being the entity, whereas in "I would like a meeting at 10" only "10" is the entity. Perhaps this is confusing the model?

I'm now realising that appointment.json in the repo is perhaps an old version. Could you please export and reupload the new version once you've looked over the labelling? Thanks!

@elenifysikoudi
Copy link
Author

I just tried with the example you gave and it worked. I also uploaded an updated json file.
The problem with the entities was that it was picking an entity I used to have called "meeting". I have now removed that one so it picks the correct ones. I also created a function that exclusively takes the text from the entity day and not day_time so "Moon Day" or "Crafty" should be excluded. I kept the day_time because it's also the one that handles time and the NLU doesn't separate them as a prebuilt library.

@RasmusBlanck
Copy link
Contributor

Thanks! I'm going to pass you for both 4 and 5. The machine still sometimes picks up the meeting day as "on Monday" instead of just "Monday", but that's a minor thing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants