From f643cd4cffa2c39d4727cd942164dd0a9e0d1a32 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 9 Oct 2026 21:37:30 -0500 Subject: [PATCH] fix(en-US): restore full-sentence phrasings lost in the .intent migration The 2026-09-04 migration (6fe23a6) copied each Adapt keyword vocab into a .intent file verbatim. Adapt matched those keywords anywhere inside an utterance, so "what would bender say" fired bender_intent. Padacioso and padatious treat every .intent line as the whole utterance, so only the literal fragment ("bender say") matched and the README phrasings stopped working. Every other locale was rewritten as full sentences in ec08f10; en-US was the one left as fragments. Keep every existing line (short commands and STT mishearings still work) and add the natural sentences each intent is documented to answer, using (a|b|) alternation so both engines read them. Measured with the skill's en-US resources loaded into padacioso and ovos-padatious (33 natural sentences, 4 confusable negatives): - before: padacioso matched none of the sentences; padatious scored them 0.43-0.66, below every pipeline threshold - after: all 33 match at 1.00 in both engines; the negatives stay unmatched in padacioso and no higher than before in padatious Verified live on ovos-core 3.7.4a1 with a padacioso-high pipeline: "what is the current stardate", "how many languages do you speak" and "what would hal 9000 say" route to the easter-eggs handlers. The gold list in test/test_intents.yaml and the e2e golden corpus gain the natural phrasings so the routing test guards full sentences, not only the fragments. Refs #76 Co-Authored-By: Claude Fable 5.1 --- locale/en-US/vocab/adult_mode_intent.intent | 4 ++ locale/en-US/vocab/arnold_intent.intent | 5 +++ locale/en-US/vocab/bender_intent.intent | 5 +++ locale/en-US/vocab/bill_and_ted_intent.intent | 4 ++ locale/en-US/vocab/conan_intent.intent | 4 ++ locale/en-US/vocab/duke_nukem_intent.intent | 5 +++ locale/en-US/vocab/glados_intent.intent | 5 +++ locale/en-US/vocab/grandma_mode_intent.intent | 4 ++ locale/en-US/vocab/hal_intent.intent | 5 +++ .../vocab/languages_you_speak_intent.intent | 4 ++ .../en-US/vocab/malibu_stacey_intent.intent | 5 +++ .../en-US/vocab/pod_bay_doors_intent.intent | 3 ++ locale/en-US/vocab/portal_intent.intent | 6 +++ ..._paper_scissors_lizard_spock_intent.intent | 4 ++ locale/en-US/vocab/sing_intent.intent | 7 ++++ locale/en-US/vocab/stardate_intent.intent | 5 +++ test/end2end/golden_utterances.jsonl | 16 ++++++++ test/test_intents.yaml | 37 +++++++++++++++++++ 18 files changed, 128 insertions(+) diff --git a/locale/en-US/vocab/adult_mode_intent.intent b/locale/en-US/vocab/adult_mode_intent.intent index 1f9dc54..541110f 100644 --- a/locale/en-US/vocab/adult_mode_intent.intent +++ b/locale/en-US/vocab/adult_mode_intent.intent @@ -1 +1,5 @@ hurt me plenty +(please |)hurt me plenty (please|) +(turn off|disable|deactivate) grandma mode (please|) +(turn|switch) grandma mode off (please|) +(turn on|enable|activate) (adult|spicy) mode (please|) diff --git a/locale/en-US/vocab/arnold_intent.intent b/locale/en-US/vocab/arnold_intent.intent index 51e024d..2d3bbfe 100644 --- a/locale/en-US/vocab/arnold_intent.intent +++ b/locale/en-US/vocab/arnold_intent.intent @@ -1,3 +1,8 @@ arnold say terminator say schwarzenegger say +what would (arnold|the terminator|schwarzenegger|arnold schwarzenegger) say +(arnold|terminator|the terminator|schwarzenegger) say something +say something like (arnold|the terminator|schwarzenegger|arnold schwarzenegger) +(talk|speak|sound) like (arnold|the terminator|schwarzenegger|arnold schwarzenegger) +do your (arnold|terminator|schwarzenegger) (impression|voice) diff --git a/locale/en-US/vocab/bender_intent.intent b/locale/en-US/vocab/bender_intent.intent index f10aa24..48ca98d 100644 --- a/locale/en-US/vocab/bender_intent.intent +++ b/locale/en-US/vocab/bender_intent.intent @@ -1 +1,6 @@ bender say +what would bender say +bender say something +say something like bender +(talk|speak|sound) like bender +do your bender (impression|voice) diff --git a/locale/en-US/vocab/bill_and_ted_intent.intent b/locale/en-US/vocab/bill_and_ted_intent.intent index 71c6572..258e1d9 100644 --- a/locale/en-US/vocab/bill_and_ted_intent.intent +++ b/locale/en-US/vocab/bill_and_ted_intent.intent @@ -2,3 +2,7 @@ stallion stallions wild stallions wild stallion +wyld (stallions|stallyns|stallion) +(you know |)the best band in the world (is |)(wild|wyld) (stallions|stallyns) +(you know |)the best band in the world +(what is|what's|whats|who is|who's|whos) the best band in the world diff --git a/locale/en-US/vocab/conan_intent.intent b/locale/en-US/vocab/conan_intent.intent index 475ad78..e95f3f7 100644 --- a/locale/en-US/vocab/conan_intent.intent +++ b/locale/en-US/vocab/conan_intent.intent @@ -1 +1,5 @@ what is best in life +(what's|whats) best in life +conan what is best in life +what is best in life conan +tell me what is best in life diff --git a/locale/en-US/vocab/duke_nukem_intent.intent b/locale/en-US/vocab/duke_nukem_intent.intent index d0a0d39..8808a5f 100644 --- a/locale/en-US/vocab/duke_nukem_intent.intent +++ b/locale/en-US/vocab/duke_nukem_intent.intent @@ -3,3 +3,8 @@ duke newcom say duke newum say duke newham say duke newcomb say +what would duke (nukem|newcom|newum|newham|newcomb) say +duke (nukem|newcom|newum|newham|newcomb) say something +say something like duke (nukem|newcom|newum|newham|newcomb) +(talk|speak|sound) like duke (nukem|newcom|newum|newham|newcomb) +do your duke (nukem|newcom|newum|newham|newcomb) (impression|voice) diff --git a/locale/en-US/vocab/glados_intent.intent b/locale/en-US/vocab/glados_intent.intent index 351cb80..810ccaa 100644 --- a/locale/en-US/vocab/glados_intent.intent +++ b/locale/en-US/vocab/glados_intent.intent @@ -2,3 +2,8 @@ glados say gladis say gladdos say gladys say +what would (glados|gladis|gladdos|gladys) say +(glados|gladis|gladdos|gladys) say something +say something like (glados|gladis|gladdos|gladys) +(talk|speak|sound) like (glados|gladis|gladdos|gladys) +do your (glados|gladis|gladdos|gladys) (impression|voice) diff --git a/locale/en-US/vocab/grandma_mode_intent.intent b/locale/en-US/vocab/grandma_mode_intent.intent index 7025a70..3d625df 100644 --- a/locale/en-US/vocab/grandma_mode_intent.intent +++ b/locale/en-US/vocab/grandma_mode_intent.intent @@ -1 +1,5 @@ too young to die +(i'm|i am|im) too young to die +(please |)(turn on|enable|activate) grandma mode (please|) +(turn|switch) grandma mode (on|back on) (please|) +(turn off|disable|deactivate) (adult|spicy) mode (please|) diff --git a/locale/en-US/vocab/hal_intent.intent b/locale/en-US/vocab/hal_intent.intent index 7e4c807..609219a 100644 --- a/locale/en-US/vocab/hal_intent.intent +++ b/locale/en-US/vocab/hal_intent.intent @@ -6,3 +6,8 @@ howl 9000 say howl nine thousand say how 9000 say how nine thousand say +what would hal (9000 |)say +hal (9000 |)say something +say something like hal (9000|) +(talk|speak|sound) like hal (9000|) +do your hal (9000 |)(impression|voice) diff --git a/locale/en-US/vocab/languages_you_speak_intent.intent b/locale/en-US/vocab/languages_you_speak_intent.intent index 542161f..2095d9d 100644 --- a/locale/en-US/vocab/languages_you_speak_intent.intent +++ b/locale/en-US/vocab/languages_you_speak_intent.intent @@ -1,2 +1,6 @@ languages do you speak languages can you speak +(how many|what|which) languages (do|can) you speak +(how many|what|which) languages do you (know|understand) +(do|can) you speak (other|any other|multiple|more than one|many) languages +(what|which) languages are you fluent in diff --git a/locale/en-US/vocab/malibu_stacey_intent.intent b/locale/en-US/vocab/malibu_stacey_intent.intent index 4d51eb3..e92d07d 100644 --- a/locale/en-US/vocab/malibu_stacey_intent.intent +++ b/locale/en-US/vocab/malibu_stacey_intent.intent @@ -4,3 +4,8 @@ malla boo stay see what would malibu stacy do what wood malley boo stay see do what wood malla boo stay see do +malibu stacey +what would malibu (stacy|stacey) (say|do) +malibu (stacy|stacey) say something +say something like malibu (stacy|stacey) +(talk|speak|sound) like malibu (stacy|stacey) diff --git a/locale/en-US/vocab/pod_bay_doors_intent.intent b/locale/en-US/vocab/pod_bay_doors_intent.intent index c39c3e0..08bd8db 100644 --- a/locale/en-US/vocab/pod_bay_doors_intent.intent +++ b/locale/en-US/vocab/pod_bay_doors_intent.intent @@ -1,2 +1,5 @@ open the pod bay doors open pod bay doors +(hal |)(please |)open the pod bay doors (hal|please|) +(hal |)(please |)open the pod bay door (hal|please|) +(hal |)(can|could|would|will) you (please |)open the pod bay doors (hal|please|) diff --git a/locale/en-US/vocab/portal_intent.intent b/locale/en-US/vocab/portal_intent.intent index 90396dd..c92a0e3 100644 --- a/locale/en-US/vocab/portal_intent.intent +++ b/locale/en-US/vocab/portal_intent.intent @@ -9,3 +9,9 @@ portal song like glados like portal forrtal song +do you like (portal|glados) +sing (me |)(the |)(portal|glados) song (please|) +(play|do) (me |)(the |)(portal|glados) song (please|) +sing (like|as) glados (please|) +(sing|play) (me |)still alive (please|) +(sing|play) (me |)want you gone (please|) diff --git a/locale/en-US/vocab/rock_paper_scissors_lizard_spock_intent.intent b/locale/en-US/vocab/rock_paper_scissors_lizard_spock_intent.intent index ed7c453..9b7c1e0 100644 --- a/locale/en-US/vocab/rock_paper_scissors_lizard_spock_intent.intent +++ b/locale/en-US/vocab/rock_paper_scissors_lizard_spock_intent.intent @@ -1 +1,5 @@ rock paper scissors lizard spock +how (do you|do i|to) play rock paper scissors lizard spock +(what are|explain|tell me) the rules (of|for|to) rock paper scissors lizard spock +how does rock paper scissors lizard spock work +(let's|lets) play rock paper scissors lizard spock diff --git a/locale/en-US/vocab/sing_intent.intent b/locale/en-US/vocab/sing_intent.intent index 4a42adb..a9e99ca 100644 --- a/locale/en-US/vocab/sing_intent.intent +++ b/locale/en-US/vocab/sing_intent.intent @@ -1,2 +1,9 @@ sing sing me a song +sing (me |)(a |)(song|tune|little song) (please|) +sing (me |)another song (please|) +sing (something|for me|me something) (please|) +(please |)(can|could|would|will) you sing (me |)(a |)(song|something|) (please|) +(please |)(can|could|would|will) you sing (for me|please|) +do you (know how to |)sing +i (want|would like) you to sing (me |)(a |)(song|something|) diff --git a/locale/en-US/vocab/stardate_intent.intent b/locale/en-US/vocab/stardate_intent.intent index 61f69e2..476d8c5 100644 --- a/locale/en-US/vocab/stardate_intent.intent +++ b/locale/en-US/vocab/stardate_intent.intent @@ -10,3 +10,8 @@ current stardate current star date current startdate current start date +(what is|what's|whats) the (current |)(stardate|star date|startdate|start date) +(what is|what's|whats) (today's|todays) (stardate|star date) +(tell me|give me|computer) the (current |)(stardate|star date) (please|) +(what|which) (stardate|star date) is it (today|now|) +(stardate|star date) (please|) diff --git a/test/end2end/golden_utterances.jsonl b/test/end2end/golden_utterances.jsonl index f8d8703..8aa0085 100644 --- a/test/end2end/golden_utterances.jsonl +++ b/test/end2end/golden_utterances.jsonl @@ -51,3 +51,19 @@ {"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "tell me the first law of robotics", "intent_method": "handle_robotic_laws_intent", "intent_label": "law_of_robotics.intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} {"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "recite the first law of robotic", "intent_method": "handle_robotic_laws_intent", "intent_label": "law_of_robotics.intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} {"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "speak first law of robotics", "intent_method": "handle_robotic_laws_intent", "intent_label": "law_of_robotics.intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "what would arnold say", "intent_method": "handle_arnold_intent", "intent_label": "arnold_intent", "intent_type": "padatious", "expected_messages": ["mycroft.audio.play_sound"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "what is the current stardate", "intent_method": "handle_stardate_intent", "intent_label": "stardate_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "turn off grandma mode", "intent_method": "handle_adult_mode", "intent_label": "adult_mode_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "i'm too young to die", "intent_method": "handle_grandma_mode", "intent_label": "grandma_mode_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "what would bender say", "intent_method": "handle_bender_intent", "intent_label": "bender_intent", "intent_type": "padatious", "expected_messages": ["mycroft.audio.play_sound"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "conan what is best in life", "intent_method": "handle_conan_intent", "intent_label": "conan_intent", "intent_type": "padatious", "expected_messages": ["mycroft.audio.play_sound"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "what would duke nukem say", "intent_method": "handle_dukenukem_intent", "intent_label": "duke_nukem_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "what would glados say", "intent_method": "handle_glados_intent", "intent_label": "glados_intent", "intent_type": "padatious", "expected_messages": ["ovos.common_play.play"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "what would hal 9000 say", "intent_method": "handle_hal_intent", "intent_label": "hal_intent", "intent_type": "padatious", "expected_messages": ["mycroft.audio.play_sound"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "how many languages do you speak", "intent_method": "handle_number_of_languages_intent", "intent_label": "languages_you_speak_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "hal open the pod bay doors", "intent_method": "handle_pod_intent", "intent_label": "pod_bay_doors_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "do you like portal", "intent_method": "handle_portal_intent", "intent_label": "portal_intent", "intent_type": "padatious", "expected_messages": ["ovos.common_play.play"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "how do you play rock paper scissors lizard spock", "intent_method": "handle_rock_paper_scissors_lizard_spock_intent", "intent_label": "rock_paper_scissors_lizard_spock_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "you know the best band in the world wild stallions", "intent_method": "handle_bill_and_ted_intent", "intent_label": "bill_and_ted_intent", "intent_type": "padatious", "expected_messages": ["mycroft.audio.play_sound"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "what would malibu stacey say", "intent_method": "handle_malibu_stacey_intent", "intent_label": "malibu_stacey_intent", "intent_type": "padatious", "expected_messages": ["mycroft.audio.play_sound"], "needs_manual": false} +{"skill_id": "skill-easter-eggs.openvoiceos", "utterance": "can you sing", "intent_method": "handle_sing_intent", "intent_label": "sing_intent", "intent_type": "padatious", "expected_messages": ["speak"], "needs_manual": false} diff --git a/test/test_intents.yaml b/test/test_intents.yaml index 9f81d1b..f33c6b3 100644 --- a/test/test_intents.yaml +++ b/test/test_intents.yaml @@ -5,30 +5,48 @@ en-US: - arnold say - terminator say - schwarzenegger say + - what would arnold say + - talk like the terminator + - say something like schwarzenegger stardate_intent: - current stardate - current star date - current startdate - current start date + - what is the current stardate + - what's the stardate + - tell me the stardate please adult_mode_intent: - hurt me plenty + - turn off grandma mode + - enable adult mode grandma_mode_intent: - too young to die + - i'm too young to die + - turn grandma mode back on bender_intent: - bender say + - what would bender say + - bender say something conan_intent: - what is best in life + - what's best in life + - conan what is best in life duke_nukem_intent: - duke nukem say - duke newcom say - duke newum say - duke newham say - duke newcomb say + - what would duke nukem say + - talk like duke nukem glados_intent: - glados say - gladis say - gladdos say - gladys say + - what would glados say + - do your glados impression hal_intent: - HAL say - HAL 9000 say @@ -38,12 +56,19 @@ en-US: - howl nine thousand say - how 9000 say - how nine thousand say + - what would hal 9000 say + - say something like hal languages_you_speak_intent: - languages do you speak - languages can you speak + - how many languages do you speak + - what languages can you speak pod_bay_doors_intent: - open the pod bay doors - open pod bay doors + - hal open the pod bay doors + - open the pod bay doors hal + - could you please open the pod bay doors portal_intent: - sing portal - sing glados @@ -56,13 +81,20 @@ en-US: - like glados - like portal - forrtal song + - do you like portal + - sing the portal song + - play still alive rock_paper_scissors_lizard_spock_intent: - rock paper scissors lizard spock + - how do you play rock paper scissors lizard spock + - explain the rules of rock paper scissors lizard spock bill_and_ted_intent: - stallion - stallions - wild stallions - wild stallion + - wyld stallions + - you know the best band in the world wild stallions malibu_stacey_intent: - malibu stacy - malley boo stay see @@ -70,9 +102,14 @@ en-US: - what would malibu stacy do - what wood malley boo stay see do - what wood malla boo stay see do + - what would malibu stacey say + - talk like malibu stacy sing_intent: - sing - sing me a song + - can you sing + - sing me another song please + - i want you to sing law_of_robotics.intent: - what are the laws of robotics - tell me the laws of robotic