Share via


Mi az a mintaegyezés?

A mintaegyeztetés testre szabható a minta szándékainak és entitásainak csoportosításához egy adott PatternMatchingModel. Ezzel a csoportosítással olyan fejlettebb entitástípusokhoz is hozzáférhet, amelyek segítenek pontosabban felismerni a szándékot.

A támogatott területi beállításokat itt találja.

Minták és pontos kifejezések

A mintaegyezőben kétféle sztringet használnak: "pontos kifejezéseket" és "mintákat". Fontos megérteni a különbségeket.

A pontos kifejezések azoknak a szavaknak a sztringjei, amelyeket meg szeretne egyezni. Példa:

"Vigyél a hetedik emeletre".

A minta egy megjelölt entitást tartalmazó kifejezés. Az entitások "{}" jelöléssel vannak megjelölve a minta helyének meghatározásához, a "{}" szöveg pedig az entitásazonosítóra hivatkozik. Az előző példában talán ki szeretné nyerni a padló nevét egy "floorName" nevű entitásban. Ehhez a következőhöz hasonló mintát kell végrehajtania:

"Vigyen a padlóra {floorName}"

PatternMatchingModel vázlata

Ez PatternMatchingModel egy azonosítót tartalmaz a modellre való hivatkozáshoz, egy objektumlistát PatternMatchingIntent és egy objektumlistát PatternMatchingEntity .

Mintaegyeztetési szándékok

PatternMatchingIntent az objektumok olyan kifejezések gyűjteményét jelölik, amelyek a beszéd vagy a szöveg kiértékelésére szolgálnak a IntentRecognizer. Ha a kifejezések egyeznek, akkor a IntentRecognitionResult visszaadott kifejezés azonosítója megegyezik PatternMatchingIntent .

Mintaegyező entitások

PatternMatchingEntity az objektumok egy egyedi entitáshivatkozást és annak megfelelő tulajdonságait jelölik, amelyekből megtudhatja, IntentRecognizer hogyan kell kezelni. Minden PatternMatchingEntity objektumnak olyan azonosítóval kell rendelkeznie, amely szerepel egy kifejezésben, vagy ha nem egyezik meg.

Entitás elnevezési korlátozásai

A":" karaktereket tartalmazó entitásnevek szerepkört rendelnek egy entitáshoz.

Entitások típusai

Bármely entitás

A "Bármely" entitás minden olyan szövegnek megfelel, amely az adott pontban jelenik meg, függetlenül attól, hogy milyen szöveget tartalmaz. Ha az előző példánkat a "Take me to floor {floorName}" mintával vesszük figyelembe, a felhasználó a következőhöz hasonlót mondhat:

"Vigyél a padlóra parkoló 2

Ebben az esetben a "floorName" entitás megegyezik a "2. parkoló" értékkel.

Ezek az entitások lusta egyezések, amelyek a lehető legkevesebb szót próbálják meg egyezni, hacsak nem jelennek meg egy kimondott szöveg elején vagy végén. Vegye figyelembe a következő mintát:

"Vigyen a padlóra {floorName1} {floorName2}"

Ebben az esetben a "Take me to the floor parking 2" kimondott szöveg megfelelne, és visszaadná a floorName1 = "parkolás" és a floorName2 = "2" szöveget.

Az extra rögzített szöveg kezelése nehézkes lehet. Lehet, hogy a felhasználó folyamatosan beszélt, és a kimondott szöveg több, mint a parancs. "Vigyél a padlóra 2 igen Janice hallottam, hogy let's". Ebben az esetben a floorName1 lenne helyes, de floorName2 lenne = "2 igen Janice hallottam, hogy let's". Fontos tisztában lenni az entitások egyezésével, és megfelelően módosítani a forgatókönyvet. A Bármely entitástípus a legalapvetőbb és legkevésbé pontos egyeztetési típus.

Entitás listázása

A "Lista" entitás olyan kifejezésekből áll, amelyek végigvezetik a motort az egyezésen. A "Lista" entitásnak két módja van. "Szigorú" és "Fuzzy".

Tegyük fel, hogy van egy lista a lift padlóiról. Mivel beszéddel foglalkozunk, lexikális formátumban is hozzáadunk bejegyzéseket.

"1", "2", "3", "lobby", "földszint", "egy", "kettő", "három"

Ha "Lista" típusú entitást használ "Szigorú" módban, a motor csak akkor egyezik meg, ha a pont szövege megjelenik a listában.

"vigyen az első emeletre" egyezik.

"vigyél az 5. emeletre" nem.

Fontos megjegyezni, hogy a teljes szándék nem egyezik meg, nem csak az entitással.

Ha "List" típusú entitást használ "Fuzzy" módban, a motor továbbra is megfelel a szándéknak, és visszaadja a kimondott szöveg pontjában megjelenő szöveget, még akkor is, ha nem szerepel a listában. Ez a mérkőzés a színfalak mögött hasznos a beszédfelismerés jobbá tétele érdekében.

Figyelmeztetés

Az fuzzy list entitások implementálva vannak, de nem integrálva a beszédfelismerési részbe. Ezért egyezni fognak az entitásokkal, de nem javítják a beszédfelismerést.

Előre összeállított egész szám entitás

Az "Előre összeállítottInteger" entitás akkor használatos, ha arra számít, hogy egy egész számot fog kapni az adott pontban. Nem egyezik meg a szándékkal, ha nem található egész szám. A visszatérési érték a szám sztring-ábrázolása.

Példák érvényes egyezésre és visszaadott értékekre

"Kétezeregyszázötvenöt" -> "2155"

"first" -> "1"

"a" -> "1"

"négy oh hét egy" -> "4071"

Ha van olyan szöveg, amely nem ismerhető fel számként, az entitás és a szándék nem egyezik meg.

Példák érvénytelen egyezésre

"a harmadik"

"Első emelet azt hiszem"

"második plusz három"

"Harminchárom és egyébként is"

Vegyük példaként a liftet.

"Vigyen a padlóra {floorName}"

Ha a "floorName" egy előre összeállított egész szám entitás, akkor az elvárás az, hogy a pontban lévő szöveg egész számot jelöl. Itt egy emeletszám jól megfelelne, de egy olyan nevű padló, mint az "előszoba" nem.

Kötelező és választható elemek csoportosítása

A mintában olyan szavak vagy entitások is szerepelhetnek, amelyek "lehetnek" a kimondott szövegben. Ez különösen hasznos az olyan meghatározók számára, mint az "a", "a" vagy "an". Ez nem jelent funkcionális különbséget a számos kombináció kemény kódolásától, de segíthet csökkenteni a szükséges minták számát. Jelölje meg az "[" és a "]" típusú választható elemeket. Adja meg a szükséges elemeket a "(" és a ")" értékkel. Több elemet is felvehet ugyanabban a csoportban, ha |karakterrel elválasztja őket.

Annak megtekintéséhez, hogy ez hogyan csökkentené a szükséges minták számát, vegye figyelembe a következő készletet:

"Vigyen a(z) {floorName} webhelyre"

"A(z) {floorName}"

"Vigyél {floorName}"

"Vigyen a{floorName} webhelyre"

"Kérem a {floorName}-t"

"Vigyél {floorName} kérem"

"Hozd el {floorName} kérlek"

"Vigyen a(z) {floorName} webhelyre"

Ezek mindegyike egyetlen mintára csökkenthető csoportosítással és választható elemekkel. Először is lehetőség van a "to" és a "the" együttes csoportosítására választható szavakként: "[to | a]", és a második lehet, hogy a "kérem" nem kötelező is. Végül igény szerint csoportosíthatjuk a "bring" és a "take" értéket.

"(Bring | Take) me [to | the] {floorName} [please]"

Opcionális entitásokat is felvehet. Képzelje el, hogy több parkolási szint is van, és a {floorName} előtti szóhoz szeretne igazodni. Ezt a következőhöz hasonló mintával teheti meg:

"Vigyen ide: [{floorType}] {floorName}"

Az opcionálisak akkor is hasznosak, ha kulcsszófelismerést és push-to-talk függvényt használ. Ez azt jelenti, hogy néha a kulcsszó jelen van, és néha nem. Feltételezve, hogy a kulcsszó "számítógép" volt, a minta így nézne ki.

"[Számítógép] Vigyen a(z) {floorName} webhelyre"

Feljegyzés

Bár hasznos az opcionális elemek használata, növeli a mintaütközések esélyét. Itt két minta felelhet meg az azonos beszélt kifejezésnek. Ha ez történik, néha megoldható úgy, hogy az opcionális elemeket külön mintákra osztva választja el.

Entitásszerepkörök

A mintán belül előfordulhat, hogy ugyanazt az entitást többször szeretné használni. Fontolja meg az egyik városból a másikba tartó járat foglalásának forgatókönyvét. Ebben az esetben a városok listája megegyezik, de tudni kell, hogy melyik városból érkezik a felhasználó, és melyik város a célhely. Ehhez használhat egy entitáshoz hozzárendelt szerepkört a következővel: használatával.

"Járat lefoglalása {city:from} és {city:destination} között"

Az ehhez hasonló minta alapján két entitás lesz az eredményben "city:from" és "city:destination" címkével, de mindkettő a "város" entitásra hivatkozik egyeztetési célokra.

Szándékegyeztetési prioritás

Néha több minta is megegyezik ugyanahhoz a kimondott szöveghez. Ebben az esetben a motor prioritást ad a mintáknak az alábbiak szerint.

  1. Pontos kifejezések.
  2. Minták több entitással.
  3. Minták egész szám entitásokkal.
  4. Listaentitással rendelkező minták.
  5. Minták bármely entitással.
  6. Több bájttal egyező mintázatok.
    • Példa: A "select {something} a bal oldalon" minta magasabb prioritású lesz, mint a "select {something}".

Következő lépések