Build an open future with us.

Invest in Mycroft and become a community partner.

Skill utterance : lower case, matching result


#1

Hi,

I am playing with a custom skill about my family members.

To begin I store the information in a json file. It’s a list of members whose parameters are, to stay simple, first name, rank in the family and place where they live. I know that this file is not stored in the right place and I am working on the right path to save it.

At first step, some intents give me the first names of my sons, daughters, grand-daughters and so on.
Who is my son ?” => “John is your son”.

The second step of my work is to find one parameter for one member of the family: ie “where is living John ?” .
The intent is:

@intent_handler(IntentBuilder(“LivingPlaceIntent”).require(“LivingPlaceKeyword”).require(“FamilyFirstName”))
def handle_living_place(self, message):
member = message.data.get(‘FamilyFirstName’)

With a FamilyFirstName.rx file I get the first name I use to find the place he lives.

(?P<FamilyFirstName>.*)

The question “John living place” get the response “Paris”.

I am not looking for help, I just want to learn more on Mycroft and the three types of issue I encountered:

  • the first name is transcribed with its first character written with a lower case. In the json file all names have an upper case first character. When asking “who is Barak Obama?”, this is the log:

. > who is barack obama
. >> Barack Hussein Obama …

The utterance is always transcribed with lower cases. I guess it’s a choice ?

  • the utterance : “Where John is living” gives “John is” as first name.

SKILLS - DEBUG - {“context”: {“target”: null}, “type”: “skill_family_learning.henridbr:LivingPlaceIntent”, “data”: {“intent_type”: “skill_family_learning.henridbr:LivingPlaceIntent”, “utterance”: “where john is living”, “tags”: [{“match”: “living”, “end_token”: 3, “from_context”: false, “entities”: [{“match”: “living”, “confidence”: 1.0, “key”: “living”, “data”: [[“living”, “skill_family_learning_henridbrLivingPlaceKeyword”]]}], “confidence”: 1.0, “start_token”: 3, “key”: “living”}, {“match”: “john is”, “end_token”: 2, “from_context”: false, “entities”: [{“match”: “john is”, “confidence”: 0.5, “key”: “john is”, “data”: [[“john is”, “skill_family_learning_henridbrFamilyFirstName”]]}], “confidence”: 0.5, “start_token”: 1, “key”: “john is”}], “target”: null, “skill_family_learning_henridbrFamilyFirstName”: “john is”, “skill_family_learning_henridbrLivingPlaceKeyword”: “living”, “confidence”: 0.25}}

  • the utterance “What is the city of John” gives “of John”.

DEBUG - {“context”: {“target”: null}, “type”: “skill_family_learning.henridbr:LivingPlaceIntent”, “data”: {“intent_type”: “skill_family_learning.henridbr:LivingPlaceIntent”, “utterance”: “what is the city of john”, “tags”: [{“match”: “city”, “end_token”: 2, “from_context”: false, “entities”: [{“match”: “city”, “confidence”: 1.0, “key”: “city”, “data”: [[“city”, “skill_family_learning_henridbrLivingPlaceKeyword”], [“city”, “mycroft_configuration_mycroftaiDeviceLocation”]]}], “confidence”: 1.0, “start_token”: 2, “key”: “city”}, {“match”: “of john”, “end_token”: 4, “from_context”: false, “entities”: [{“match”: “of john”, “confidence”: 0.5, “key”: “of john”, “data”: [[“of john”, “skill_family_learning_henridbrFamilyFirstName”]]}], “confidence”: 0.5, “start_token”: 3, “key”: “of john”}], “target”: null, “skill_family_learning_henridbrFamilyFirstName”: “of john”, “skill_family_learning_henridbrLivingPlaceKeyword”: “city”, “confidence”: 0.25}}

When the utterance is analyzed, Mycroft matches: “what is the city of John” => “of john” or “where John is living” => “john is” ? I find this with 2 or 3 syllables first names by voice or by the CLI.
Is it possible to improve this ?


#2

Hi there @henridbr - can you link to the GitHub repo for this Skill?
I’d like to take a deeper look of the code so that I can provide the right advice.


#3

Hi @KathyReid

Sorry I had to clean up my mess before you visited it :hot_face:

You may find my skill here.
The data file is not in the right place and I have a bit to learn on this.

This a typical dialog:

family learning
. >> I save it in my memory
what is anatole city
. >> Anatole is from Thionville
what is the city of anatole
. >> An error occurred while processing a request in Family Learning Skill
where is anatole living
. >> Anatole is from Thionville
where anatole is living
. >> An error occurred while processing a request in Family Learning Skill

I don’t need help on how to manage strings.
My question is more general on utterances and their treatment.