Vzory v aplikacích LUIS

Důležité

Služba LUIS bude 1. října 2025 vyřazena a od 1. dubna 2023 nebude možné vytvářet nové prostředky služby LUIS. Doporučujeme migrovat aplikace LUIS na porozumění konverzačnímu jazyku , abyste mohli využívat výhod nepřetržité podpory produktů a vícejazyčných funkcí.

Vzory jsou navržené tak, aby se zlepšila přesnost, když je více promluv velmi podobných. Vzor umožňuje získat větší přesnost záměru, aniž byste museli poskytovat několik dalších promluv.

Vzory řeší nízkou míru spolehlivosti záměru

Představte si aplikaci pro lidské zdroje, která hlásí v organizačním diagramu ve vztahu k zaměstnanci. Vzhledem ke jménu a vztahu zaměstnance vrátí služba LUIS příslušné zaměstnance. Představte si zaměstnance Toma s manažerem jménem Alice a týmem podřízených s názvy: Michael, Rebecca a Carl.

Snímek obrazovky znázorňující použití vzorů

Výroky Předpovězený záměr Skóre záměru
Kdo je Tom podřízený? GetOrgChart 0,30
Kdo je podřízený Tomovi? GetOrgChart 0,30

Pokud má aplikace 10 až 20 promluv s různou délkou věty, jiným pořadím slov a dokonce i různými slovy (synonyma "podřízený", "správa", "sestava"), může služba LUIS vrátit nízké skóre spolehlivosti. Vytvořte vzor, který službě LUIS pomůže pochopit důležitost pořadí slov.

Vzory řeší následující situace:

  • Skóre záměru je nízké.
  • Správný záměr není nejlepší skóre, ale příliš blízko nejlepšímu skóre.

Vzory nejsou zárukou záměru.

Vzory používají kombinaci prediktivních technik. Nastavení záměru šablony promluvy ve vzoru není zárukou predikce záměru, ale je to silný signál.

Vzory nezlepšují detekci entit strojového učení

Vzor je primárně určen k tomu, aby pomáhal předpovídat záměry a role. Entita "pattern.any" se používá k extrakci entit volného tvaru. I když vzory používají entity, model nepomůže rozpoznat entitu strojového učení.

Neočekávejte lepší predikci entit, pokud sbalíte více promluv do jednoho vzoru. Aby vaše aplikace využívala jednoduché entity, musíte přidat promluvy nebo použít entity seznamu.

Vzory používají role entit.

Pokud jsou dvě nebo více entit ve vzoru kontextově propojených, používají vzory role entit k extrahování kontextových informací o entitách.

Skóre predikce se vzory i bez vzorů

Vzhledem k dostatečnému počtu ukázkových promluv může služba LUIS zvýšit spolehlivost předpovědí bez vzorů. Vzory zvyšují skóre spolehlivosti, aniž by bylo nutné zadat tolik výroků.

Porovnávání vzorů

Vzor se porovnává tak, že se nejprve zjistí entity uvnitř vzoru a pak se ověřuje zbývající slova a pořadí slov vzoru. Entity se ve vzoru vyžadují, aby se vzor shodovaly. Vzor se používá na úrovni tokenu, ne na úrovni znaků.

Entita Pattern.any

Entita Pattern.any umožňuje vyhledat data volného tvaru, kde je kvůli formulaci entity obtížné odlišit konec entity od zbytku promluvy.

Představte si například aplikaci pro lidské zdroje, která pomáhá zaměstnancům najít dokumenty společnosti. Tato aplikace může potřebovat porozumět následujícím ukázkovým promluvám.

  • "Where is HRF-123456?" (Kde je HRF-123456?)
  • "Who authored HRF-123234?" (Kdo vytvořil HRF-123234?)
  • "Is HRF-456098 published in French?" (Je HRF-456098 publikováno ve francouzštině?

Každý dokument ale má formátovaný název (použitý ve výše uvedeném seznamu) i název čitelný pro člověka, například Žádost o přemístění od nového zaměstnance společnosti 2018 verze 5.

Výroky s lidsky čitelným názvem můžou vypadat takto:

  • "Where is Request přemístění from employee new to the company 2018 version 5?"
  • "Who authored "Request relocation from employee new to the company 2018 version 5"? (Kdo vytvořil žádost o přemístění od nového zaměstnance do společnosti verze 5?
  • Je žádost o přemístění od nového zaměstnance společnosti 2018 verze 5 zveřejněna ve francouzštině?

Promluvy obsahují slova, která mohou službu LUIS matout, kde entita končí. Použití entity Pattern.any ve vzoru umožňuje zadat začátek a konec názvu dokumentu, takže služba LUIS správně extrahuje název formuláře. Například následující šablony promluv:

  • Where is {FormName}[?] (Kde je {FormName}[?])
  • Who authored {FormName}[?] (Kdo vytvořil {FormName}[?])
  • Je {FormName} publikovaný ve francouzštině[?]

Osvědčené postupy pro vzory:

Přidání vzorů v pozdějších iteracích

Než přidáte vzory, měli byste rozumět tomu, jak se aplikace chová, protože vzory mají větší váhu než ukázkové promluvy a snížíte míru spolehlivosti.

Jakmile pochopíte, jak se vaše aplikace chová, přidejte vzory tak, jak se v aplikaci použijí. Nemusíte je přidávat při každé iteraci návrhu aplikace.

Není na škodu, když je přidáte na začátek návrhu modelu, ale je jednodušší vidět, jak jednotlivé vzory mění model po otestování modelu s promluvami.

Nepřidávat mnoho vzorů

Nepřidávejte příliš mnoho vzorů. Služba LUIS je určená k tomu, aby se rychle učila s menším počtem příkladů. Zbytečně nepřetěžujte systém.

Funkce

Ve strojovém učení je funkce rozlišující vlastnost nebo atribut dat, která systém sleduje a učí se prostřednictvím těchto dat.

Funkce strojového učení poskytují službě LUIS důležité pokyny, kde hledat věci, které rozlišují určitý koncept. Jsou to rady, které služba LUIS může použít, ale nejsou to tvrdá pravidla. Služba LUIS používá tyto nápovědy spolu s popisky k vyhledání dat.

Funkci lze popsat jako funkci, například f(x) = y. V ukázkové promluvě vám funkce řekne, kde máte rozlišovací vlastnost hledat. Tyto informace vám pomůžou vytvořit schéma.

Typy funkcí

Funkce jsou nezbytnou součástí návrhu schématu. Luis podporuje seznamy frází i modely jako funkce:

  • Funkce seznamu frází
  • Model (záměr nebo entita) jako funkce

Vyhledání funkcí v ukázkových promluvách

Vzhledem k tomu, že luis je jazyková aplikace, jsou funkce textové. Zvolte text, který označuje vlastnost, kterou chcete odlišit. Nejmenší jednotkou služby LUIS je token. V anglickém jazyce je token souvislé rozpětí písmen a číslic, které neobsahuje mezery ani interpunkci.

Protože mezery a interpunkce nejsou tokeny, zaměřte se na textová vodítka, která můžete použít jako funkce. Nezapomeňte zahrnout varianty slov, například:

  • Formuláře v množném čísle
  • Slovesné časy
  • Zkratky
  • Pravopis a chybně napsané

Zjistěte, jestli text potřebuje následující, protože rozlišuje vlastnost:

  • Porovnání přesného slova nebo fráze: Zvažte přidání entity regulárního výrazu nebo entity seznamu jako funkce k entitě nebo záměru.
  • Shoda s dobře známým konceptem, jako jsou kalendářní data, časy nebo jména lidí: Použijte předem připravenou entitu jako funkci entity nebo záměru.
  • Seznamte se s novými příklady v průběhu času: Použijte seznam frází s některými příklady konceptu jako funkce entity nebo záměru.

Vytvoření seznamu frází pro koncept

Seznam frází je seznam slov nebo frází, které popisují koncept. Seznam frází se použije jako shoda nerozlišující malá a velká písmena na úrovni tokenu.

Při přidávání seznamu frází můžete tuto funkci nastavit na globální. Globální funkce se vztahuje na celou aplikaci.

Kdy použít seznam frází

Seznam frází použijte, když potřebujete, aby aplikace LUIS zobecněla a identifikovala nové položky pro tento koncept. Seznamy frází jsou jako slovní zásoby specifické pro doménu. Zlepšují kvalitu porozumění záměrům a entitám.

Jak používat seznam frází

U seznamu frází služba LUIS zvažuje kontext a zobecňuje položky, které jsou podobné, ale nejsou přesnou shodou textu. Pokud chcete použít seznam frází, postupujte takto:

  1. Začněte entitou strojového učení:
  2. Přidejte ukázkové promluvy.
  3. Popisek entitou strojového učení
  4. Přidání seznamu frází:
  5. Přidejte slova podobného významu. Nepřidávejte všechna možná slova nebo fráze. Místo toho přidejte několik slov nebo frází najednou. Pak ho znovu natrénujte a publikujte.
  6. Zkontrolujte a přidejte navrhovaná slova.

Typický scénář pro seznam frází

Typickým scénářem pro seznam frází je posílení slov souvisejících s určitou myšlenkou.

Lékařské termíny jsou dobrým příkladem slov, která můžou vyžadovat seznam frází, aby se zvýšila jejich významnost. Tyto termíny mohou mít specifický fyzikální, chemický, terapeutický nebo abstraktní význam. Služba LUIS nebude bez seznamu frází vědět, že termíny jsou pro vaši doménu předmětu důležité.

Pokud chcete například extrahovat lékařské termíny:

  1. Vytvořte ukázkové promluvy a označte v těchto promluvách lékařské termíny.
  2. Vytvořte seznam frází s příklady termínů v rámci domény předmětu. Tento seznam frází by měl obsahovat skutečný termín, který jste označili, a další termíny, které popisují stejný koncept.
  3. Přidejte seznam frází do entity nebo dílčí části, která extrahuje koncept použitý v seznamu frází. Nejběžnějším scénářem je komponenta (podřízená) entity strojového učení. Pokud se má seznam frází použít u všech záměrů nebo entit, označte ho jako globální seznam frází. Příznak enabledForAllModels řídí tento obor modelu v rozhraní API.

Shody tokenů pro seznam frází

Seznam frází se vždy použije na úrovni tokenu. Následující tabulka ukazuje, jak se seznam frází obsahující slovo Ann vztahuje na varianty stejných znaků v tomto pořadí.

Varianta tokenu "Ann" Shoda seznamu frází při nalezení tokenu
ANN
Ann
Ano – token je Ann.
Ann's Ano – token je Ann.
Anne Ne – token je Anne

Model jako funkce pomáhá jinému modelu

Model (záměr nebo entita) můžete přidat jako funkci do jiného modelu (záměr nebo entita). Přidáním existujícího záměru nebo entity jako funkce přidáte dobře definovaný koncept, který obsahuje označené příklady.

Při přidávání modelu jako funkce můžete nastavit tuto funkci takto:

  • Povinné. Aby se model vrátil z koncového bodu předpovědi, musí se najít požadovaná funkce.
  • Globální. Globální funkce se vztahuje na celou aplikaci.

Kdy použít entitu jako funkci záměru

Přidání entity jako funkce do záměru, když je detekce této entity pro záměr důležitá.

Pokud je například záměrem rezervace letu, například BookFlight (Rezervovat let ) a entitou jsou informace o letenkách (například počet sedadel, místo odletu a cíl), pak by vyhledání entity informací o letenkách mělo významně přidat k předpovědím záměru BookFlight (Rezervovat let ).

Kdy použít entitu jako funkci pro jinou entitu

Entita (A) by měla být přidána jako funkce k jiné entitě (B), pokud je detekce této entity (A) důležitá pro predikci entity (B).

Pokud je například entita expediční adresy obsažená v dílčím názvu street-address, pak nalezení dílčí podsady street-address přidá významnou váhu k predikci pro entitu dodací adresy.

  • Dodací adresa (entita strojového učení):
    • Číslo ulice (dílčí číslo)
    • Poštovní adresa (podentita)
    • City (subentity)
    • Stát nebo provincie (subentita)
    • Země/oblast (podoblast)
    • PSČ (subentity)

Vnořené dílčí prvky s funkcemi

Subentita strojového učení označuje, že se koncept nachází v nadřazené entitě. Nadřazenou entitou může být jiná subentita nebo nejvyšší entita. Hodnota subentity funguje jako součást nadřazeného objektu.

Dílčí entita může mít jako funkci seznam frází i model (jinou entitu).

Když má dílčí část seznam frází, zvýší se tím slovní zásoba konceptu, ale nepřidá se žádné informace do odpovědi JSON predikce.

Pokud má dílčí část funkci jiné entity, odpověď JSON zahrnuje extrahovaná data této jiné entity.

Požadované funkce

Aby se model vrátil z koncového bodu předpovědi, musí se najít požadovaná funkce. Požadovanou funkci použijte, když víte, že příchozí data se musí shodovat s funkcí.

Pokud text promluvy neodpovídá požadované funkci, nebude extrahován.

Požadovaná funkce používá entitu jiného než strojového učení:

  • Entita regulárního výrazu
  • Entita seznamu
  • Předem připravená entita

Pokud jste si jistí, že se váš model v datech najde, nastavte funkci podle potřeby. Požadovaná funkce nevrací nic, pokud se nenajde.

Pokračujme příkladem dodací adresy:

Dodací adresa (strojově naučená entita)

  • Číslo ulice (dílčí číslo)
  • Poštovní adresa (podentita)
  • Název ulice (subentita)
  • City (subentity)
  • Stát nebo provincie (subentita)
  • Země/oblast (podoblast)
  • PSČ (subentity)

Požadovaná funkce s využitím předem připravených entit

Předem připravené entity, jako je město, stát a země/oblast, jsou obecně uzavřenou sadou seznamů, což znamená, že se v průběhu času moc nemění. Tyto entity můžou mít relevantní doporučené funkce a tyto funkce by mohly být označené jako povinné. Příznak isRequired ale souvisí pouze s entitou, ke které je přiřazen, a nemá vliv na hierarchii. Pokud se předem připravená funkce dílčí entity nenajde, nebude to mít vliv na detekci a vrácení nadřazené entity.

Jako příklad požadované funkce si představte, že chcete zjistit adresy. Můžete zvážit, že číslo ulice bude povinné. To by uživateli umožnilo zadat "1 Microsoft Way" nebo "One Microsoft Way" a obojí by se přeložilo na číslici "1" pro dílčí entitu čísla ulice. Další informace najdete v článku o předem připravené entitě.

Požadovaná funkce využívající entity seznamu

Entita seznamu se používá jako seznam kanonických názvů spolu s jejich synonymy. Jako povinná funkce platí, že pokud promluva neobsahuje kanonický název nebo synonymum, nevrátí se entita jako součást koncového bodu předpovědi.

Předpokládejme, že vaše společnost odesílá pouze do omezené sady zemí nebo oblastí. Můžete vytvořit entitu seznamu, která obsahuje několik způsobů, jak může zákazník odkazovat na zemi nebo oblast. Pokud služba LUIS nenajde přesnou shodu v textu promluvy, pak se entita (která má požadovanou funkci entity seznamu) v predikci nevrátí.

Kanonický název** Synonyma
USA USA:
USA
USA
USA
0

Klientská aplikace, například chatbot, může položit následnou otázku, která vám pomůže. To pomůže zákazníkovi pochopit, že výběr země nebo oblasti je omezený a povinný.

Požadovaná funkce využívající entity regulárních výrazů

Entita regulárního výrazu, která se používá jako požadovaná funkce, poskytuje funkce pro porovnávání formátovaného textu.

V příkladu s dodací adresou můžete vytvořit regulární výraz, který zachycuje syntaktická pravidla PSČ země/oblasti.

Globální funkce

I když se nejčastěji používá funkce pro konkrétní model, můžete ji nakonfigurovat jako globální funkci , která ji použije pro celou aplikaci.

Nejběžnějším použitím globální funkce je přidání dalšího slovníku do aplikace. Pokud například vaši zákazníci používají primární jazyk, ale očekávají, že v rámci jedné promluvy budou moct používat jiný jazyk, můžete přidat funkci, která obsahuje slova ze sekundárního jazyka.

Vzhledem k tomu, že uživatel očekává, že bude používat sekundární jazyk v jakémkoli záměru nebo entitě, přidejte do seznamu frází slova ze sekundárního jazyka. Nakonfigurujte seznam frází jako globální funkci.

Kombinování funkcí s dalšími výhodami

K popisu vlastnosti nebo konceptu můžete použít více než jednu funkci. Běžným párováním je použití:

Příklad: Funkce entity rezervace vstupenek pro aplikaci pro cestování

Jako základní příklad si představte aplikaci pro rezervaci letu se záměrem rezervace letu a entitou rezervace letenek. Entita rezervace letenek zaznamenává informace o rezervaci letenky v rezervačním systému.

Entita strojového učení pro knihu lístků má dvě dílčí úrovně pro zachycení původu a cíle. Funkce je potřeba přidat do každé dílčí části, ne do entity nejvyšší úrovně.

Snímek obrazovky znázorňující ukázkové entity pro aplikaci pro rezervaci lístků

Entita rezervace lístků je entita strojového učení s dílčími entitami, včetně původu a cíle. Obě tyto dílčí oblasti označují zeměpisnou polohu. Aby bylo možné lépe extrahovat umístění a rozlišovat mezi zdrojem a cílem, musí mít každá dílčí podentita funkce.

Typ Subentity původu Cílová dílčí entita
Model jako funkce předem připravená entita geographyV2 předem připravená entita geographyV2
Seznam frází Slova původu : start at, begin from, leave Cílová slova : do, přiletět, přistát, jet, jet, zůstat, nadpis
Seznam frází Kódy letiště – stejný seznam pro původ i cíl Kódy letiště – stejný seznam pro původ i cíl
Seznam frází Názvy letišť – stejný seznam pro původ i cíl Kódy letiště – stejný seznam pro původ i cíl

Pokud předpokládáte, že lidé budou používat kódy letišť a názvy letišť, měla by služba LUIS mít seznamy frází, které používají oba typy frází. Kódy letiště můžou být častější u textu zadaného v chatbotu, zatímco názvy letišť můžou být častější u mluvených konverzací, jako je chatovací robot s podporou řeči.

Odpovídající podrobnosti o funkcích se vrátí jenom pro modely, ne pro seznamy frází, protože v prediktivním formátu JSON se vrací jenom modely.

Označení rezervace lístku v záměru

Po vytvoření entity strojového učení musíte k záměru přidat ukázkové promluvy a označit nadřazenou entitu a všechny dílčí položky.

V příkladu rezervace lístku označte ukázkové promluvy v záměru entitou TicketBooking a všemi dílčími entitami v textu.

Snímek obrazovky s popisky pro ukázkovou promluvu

Příklad: aplikace pro objednávání pizzy

Jako druhý příklad si představte aplikaci pro pizzerii, která přijímá objednávky pizzy včetně podrobností o typu pizzy, kterou někdo objednává. Každý detail pizzy by měl být extrahován, pokud je to možné, aby bylo možné dokončit zpracování objednávky.

Entita strojového učení v tomto příkladu je složitější s vnořenými dílčími položkami, seznamy frází, předem připravenými entitami a vlastními entitami.

Snímek obrazovky znázorňující entitu strojového učení s různými dílčími úrovněmi

V tomto příkladu se používají funkce na úrovni subentity a podřízené úrovně subentity. Úroveň určuje, jaký typ seznamu frází nebo modelu jako funkce je důležitou součástí návrhu entity.

Zatímco dílčí položky můžou mít mnoho seznamů frází jako funkce, které pomáhají entitu rozpoznat, každá dílčí entita má jako funkci jenom jeden model. V této aplikaci pro pizzu jsou tyto modely primárně seznamy.

Snímek obrazovky znázorňující entitu strojového učení s mnoha seznamy frází jako funkce

Správně označené ukázkové promluvy se zobrazují způsobem, který ukazuje, jak jsou entity vnořené.

Další kroky