Udostępnij za pośrednictwem


Wzorce w aplikacjach usługi LUIS

Ważne

Usługa LUIS zostanie wycofana 1 października 2025 r. i od 1 kwietnia 2023 r. nie będzie można utworzyć nowych zasobów usługi LUIS. Zalecamy migrowanie aplikacji usługi LUIS do interpretacji języka konwersacyjnego , aby korzystać z ciągłej pomocy technicznej produktu i możliwości wielojęzycznych.

Wzorce zostały zaprojektowane w celu zwiększenia dokładności, gdy wiele wypowiedzi jest bardzo podobnych. Wzorzec umożliwia uzyskanie większej dokładności intencji bez podawania kilku kolejnych wypowiedzi.

Wzorce rozwiązują niską pewność intencji

Rozważ aplikację Human Resources, która raportuje na wykresie organizacyjnym w odniesieniu do pracownika. Biorąc pod uwagę nazwę i relację pracownika, usługa LUIS zwraca zaangażowanych pracowników. Rozważ pracownika, Tom, z menedżerem o nazwie Alice i zespołem podwładnych o nazwie: Michael, Rebecca i Carl.

Zrzut ekranu przedstawiający użycie wzorców

Wypowiedzi Przewidywana intencja Wynik intencji
Kim jest podrzędny Tom? GetOrgChart 0,30
Kim jest podrzędny Tom? GetOrgChart 0,30

Jeśli aplikacja ma od 10 do 20 wypowiedzi o różnych długościach zdań, różnych kolejności wyrazów, a nawet różnych wyrazów (synonimów "podrzędnych", "zarządzanie", "raport"), usługa LUIS może zwrócić niski wskaźnik ufności. Utwórz wzorzec, aby ułatwić usłudze LUIS zrozumienie znaczenia kolejności wyrazów.

Wzorce rozwiązują następujące sytuacje:

  • Wynik intencji jest niski
  • Prawidłowa intencja nie jest najlepszym wynikiem, ale zbyt blisko najwyższego wyniku.

Wzorce nie są gwarancją intencji

Wzorce używają kombinacji technik przewidywania. Ustawienie intencji dla wypowiedzi szablonu we wzorcu nie jest gwarancją przewidywania intencji, ale jest to silny sygnał.

Wzorce nie zwiększają wykrywania jednostek uczenia maszynowego

Wzorzec ma przede wszystkim pomóc w przewidywaniu intencji i ról. Jednostka "pattern.any" służy do wyodrębniania jednostek w formie bezpłatnej. Chociaż wzorce używają jednostek, wzorzec nie pomaga wykrywać jednostki uczenia maszynowego.

Nie należy oczekiwać, że ulepszone przewidywanie jednostek zostanie wyświetlone, jeśli zwiniesz wiele wypowiedzi do jednego wzorca. Aby proste jednostki, które mają być używane przez aplikację, należy dodać wypowiedzi lub użyć jednostek listy.

Wzorce używają ról jednostek

Jeśli co najmniej dwie jednostki w wzorcu są powiązane kontekstowo, wzorce używają ról jednostek do wyodrębniania informacji kontekstowych o jednostkach.

Wyniki przewidywania z wzorcami i bez

Biorąc pod uwagę wystarczającą liczbę przykładowych wypowiedzi, usługa LUIS może mieć możliwość zwiększenia ufności przewidywania bez wzorców. Wzorce zwiększają współczynnik ufności bez konieczności udostępniania jak największej liczby wypowiedzi.

Dopasowanie do wzorca

Wzorzec jest dopasowywany przez wykrywanie jednostek wewnątrz wzorca, a następnie weryfikowanie reszty wyrazów i kolejności wyrazów wzorca. Jednostki są wymagane we wzorcu, aby wzorzec był zgodny. Wzorzec jest stosowany na poziomie tokenu, a nie na poziomie znaku.

Jednostka Pattern.any

Jednostka Pattern.any umożliwia wyszukiwanie danych o swobodnym formacie, gdzie treść jednostki sprawia, że trudno rozróżnić koniec jednostki od reszty wypowiedzi.

Rozważmy na przykład aplikację Human Resources, która ułatwia pracownikom znajdowanie dokumentów firmowych. Ta aplikacja może wymagać zrozumienia poniższych przykładowych wypowiedzi.

  • "Gdzie jest HRF-123456?"
  • "Kto utworzył HRF-123234?"
  • "Czy HRF-456098 został opublikowany w języku francuskim?"

Jednak każdy dokument ma zarówno sformatowaną nazwę (używaną na powyższej liście), jak i nazwę czytelną dla człowieka, taką jak żądanie przeniesienia pracownika do firmy 2018 w wersji 5.

Wypowiedzi z nazwą czytelną dla człowieka mogą wyglądać następująco:

  • "Gdzie jest żądanie przeniesienia pracownika do firmy 2018 w wersji 5?".
  • "Kto utworzył "Żądanie przeniesienia pracownika do firmy 2018 w wersji 5"?
  • Czy żądanie przeniesienia od pracownika do firmy w wersji 2018 w wersji 5 jest publikowane we francji?"

Wypowiedzi obejmują wyrazy, które mogą mylić usługę LUIS o tym, gdzie kończy się jednostka. Użycie jednostki Pattern.any we wzorcu umożliwia określenie początku i końca nazwy dokumentu, dlatego usługa LUIS poprawnie wyodrębnia nazwę formularza. Na przykład następujące wypowiedzi szablonu:

  • Where is {FormName}[?] (Gdzie jest {Nazwa_formularza}[?])
  • Who authored {FormName}[?] (Kto jest autorem {Nazwa_formularza}[?])
  • Czy {FormName} jest publikowany w języku francuskim[?]

Najlepsze rozwiązania dotyczące wzorców:

Dodawaj wzorce w kolejnych iteracji

Należy zrozumieć, jak aplikacja zachowuje się przed dodaniem wzorców, ponieważ wzorce są ważone w większym stopniu niż przykładowe wypowiedzi i będą niesymetryczne zaufanie.

Gdy dowiesz się, jak działa aplikacja, dodaj wzorce stosowane do aplikacji. Nie trzeba ich dodawać za każdym razem, gdy iterujesz projekt aplikacji.

Nie ma żadnych szkód w dodawaniu ich na początku projektu modelu, ale łatwiej jest zobaczyć, jak każdy wzorzec zmienia model po przetestowaniu modelu przy użyciu wypowiedzi.

Nie dodawaj wielu wzorców

Nie dodawaj zbyt wielu wzorców. Usługa LUIS jest przeznaczona do szybkiego uczenia się przy użyciu mniejszej liczby przykładów. Nie przeciążaj systemu niepotrzebnie.

Funkcje

W uczeniu maszynowym funkcja jest cechą wyróżniającą lub atrybutem danych, które system obserwuje i uczy się.

Funkcje uczenia maszynowego zapewniają usłudze LUIS ważne wskazówki dotyczące tego, gdzie szukać rzeczy wyróżniających koncepcję. Są to wskazówki, że usługa LUIS może używać, ale nie są to twarde reguły. Usługa LUIS używa tych wskazówek z etykietami, aby znaleźć dane.

Funkcję można opisać jako funkcję, na przykład f(x) = y. W przykładowej wypowiedzi funkcja informuje, gdzie szukać cech wyróżniających. Te informacje ułatwiają tworzenie schematu.

Typy funkcji

Funkcje są niezbędną częścią projektu schematu. Usługa LUIS obsługuje zarówno listy fraz, jak i modele jako funkcje:

  • Funkcja listy fraz
  • Model (intencja lub jednostka) jako funkcja

Znajdowanie funkcji w przykładowych wypowiedziach

Ponieważ usługa LUIS jest aplikacją opartą na języku, funkcje są oparte na tekście. Wybierz tekst wskazujący cechę, którą chcesz odróżnić. W przypadku usługi LUIS najmniejsza jednostka jest tokenem. W języku angielskim token jest ciągły zakres liter i cyfr, które nie mają spacji ani znaków interpunkcyjnych.

Ponieważ spacje i znaki interpunkcyjne nie są tokenami, skoncentruj się na wskazówkach tekstowych, których można użyć jako funkcji. Pamiętaj, aby uwzględnić odmiany wyrazów, takie jak:

  • Formy mnogiej
  • Czasowniki napięte
  • Skróty
  • Pisownia i błędy pisowni

Ustal, czy tekst wymaga następującego elementu, ponieważ rozróżnia cechę:

  • Dopasuj dokładne słowo lub frazę: rozważ dodanie jednostki wyrażenia regularnego lub jednostki listy jako funkcji do jednostki lub intencji.
  • Dopasuj dobrze znaną koncepcję, np. daty, godziny lub nazwy osób: użyj wstępnie utworzonej jednostki jako funkcji do jednostki lub intencji.
  • Poznaj nowe przykłady w czasie: użyj listy fraz niektórych przykładów koncepcji jako funkcji dla jednostki lub intencji.

Tworzenie listy fraz dla koncepcji

Lista fraz to lista wyrazów lub fraz, które opisują koncepcję. Lista fraz jest stosowana jako dopasowanie bez uwzględniania wielkości liter na poziomie tokenu.

Podczas dodawania listy fraz można ustawić funkcję na globalną. Funkcja globalna ma zastosowanie do całej aplikacji.

Kiedy należy używać listy fraz

Użyj listy fraz, gdy aplikacja usługi LUIS jest potrzebna do uogólninia i identyfikowania nowych elementów dla tej koncepcji. Listy fraz są podobne do słownictwa specyficznego dla domeny. Zwiększają one jakość zrozumienia intencji i jednostek.

Jak używać listy fraz

W przypadku listy fraz usługa LUIS uwzględnia kontekst i uogólnia, aby zidentyfikować elementy podobne do, ale nie są dokładnym dopasowaniem tekstu. Wykonaj następujące kroki, aby użyć listy fraz:

  1. Rozpocznij od jednostki uczenia maszynowego:
  2. Dodaj przykładowe wypowiedzi.
  3. Etykieta z jednostką uczenia maszynowego.
  4. Dodaj listę fraz:
  5. Dodaj wyrazy o podobnym znaczeniu. Nie dodawaj każdego możliwego słowa ani frazy. Zamiast tego dodaj kilka wyrazów lub fraz jednocześnie. Następnie ponownie wytrenuj i opublikuj.
  6. Przejrzyj i dodaj sugerowane wyrazy.

Typowy scenariusz listy fraz

Typowym scenariuszem listy fraz jest zwiększenie liczby wyrazów związanych z konkretnym pomysłem.

Terminy medyczne są dobrym przykładem słów, które mogą wymagać listy fraz, aby zwiększyć ich znaczenie. Te terminy mogą mieć określone znaczenie fizyczne, chemiczne, terapeutyczne lub abstrakcyjne. Usługa LUIS nie będzie wiedziała, że terminy są ważne dla twojej domeny podmiotu bez listy fraz.

Aby na przykład wyodrębnić terminy medyczne:

  1. Utwórz przykładowe wypowiedzi i oznacz terminy medyczne w tych wypowiedziach.
  2. Utwórz listę fraz z przykładami terminów w domenie podmiotu. Ta lista fraz powinna zawierać rzeczywisty termin oznaczony etykietą i inne terminy, które opisują tę samą koncepcję.
  3. Dodaj listę fraz do jednostki lub podentencji, która wyodrębnia koncepcję używaną na liście fraz. Najbardziej typowym scenariuszem jest składnik (podrzędny) jednostki uczenia maszynowego. Jeśli lista fraz powinna być stosowana we wszystkich intencjach lub jednostkach, oznacz listę fraz jako globalną listę fraz. Flaga enabledForAllModels kontroluje ten zakres modelu w interfejsie API.

Dopasowania tokenu dla listy fraz

Lista fraz jest zawsze stosowana na poziomie tokenu. W poniższej tabeli pokazano, jak lista fraz zawierająca słowo Ann ma zastosowanie do odmian tych samych znaków w tej kolejności.

Odmiana tokenu "Ann" Dopasowanie listy fraz po znalezieniu tokenu
ANN
Ann
Tak — token to Ann
Ann's Tak — token to Ann
Anne Nie — token to Anne

Model jako funkcja pomaga innemu modelowi

Model (intencja lub jednostka) można dodać jako funkcję do innego modelu (intencji lub jednostki). Dodając istniejącą intencję lub jednostkę jako funkcję, dodasz dobrze zdefiniowaną koncepcję z etykietami przykładów.

Podczas dodawania modelu jako funkcji można ustawić tę funkcję jako:

  • Wymagane. Wymagana funkcja musi zostać znaleziona, aby model był zwracany z punktu końcowego przewidywania.
  • Globalny. Funkcja globalna ma zastosowanie do całej aplikacji.

Kiedy należy używać jednostki jako funkcji do intencji

Dodaj jednostkę jako funkcję do intencji, gdy wykrywanie tej jednostki jest istotne dla intencji.

Jeśli na przykład intencją jest rezerwacja lotu, na przykład BookFlight , a jednostka zawiera informacje o biletach (takie jak liczba miejsc, pochodzenie i miejsce docelowe), znalezienie jednostki informacji o biletach powinno dodać znaczącą wagę do przewidywania intencji BookFlight .

Kiedy należy używać jednostki jako funkcji do innej jednostki

Jednostkę (A) należy dodać jako funkcję do innej jednostki (B), gdy wykrywanie tej jednostki (A) jest istotne dla przewidywania jednostki (B).

Jeśli na przykład jednostka adresu wysyłkowego znajduje się w podsieci adresów ulicznych, znalezienie podsieci adresów ulicznych zwiększa znaczącą wagę do przewidywania jednostki adresu wysyłkowego.

  • Adres wysyłkowy (jednostka uczenia maszynowego):
    • Numer ulicy (subentity)
    • Adres ulicy (subentity)
    • Miasto (subentity)
    • Województwo lub województwo (subentity)
    • Kraj/region (subentity)
    • Kod pocztowy (subentity)

Zagnieżdżone jednostki podrzędne z funkcjami

Subentity uczenia maszynowego wskazuje, że pojęcie jest obecne w jednostce nadrzędnej. Element nadrzędny może być inną jednostki podrzędną lub górną jednostką. Wartość subentity działa jako funkcja dla jej elementu nadrzędnego.

Subentity może mieć zarówno listę fraz, jak i model (inną jednostkę) jako funkcję.

Gdy subentity ma listę fraz, zwiększa słownictwo koncepcji, ale nie dodaje żadnych informacji do odpowiedzi JSON przewidywania.

Gdy subentity ma funkcję innej jednostki, odpowiedź JSON zawiera wyodrębnione dane tej innej jednostki.

Wymagane funkcje

Aby model został zwrócony z punktu końcowego przewidywania, należy znaleźć wymaganą funkcję. Użyj wymaganej funkcji, jeśli wiesz, że dane przychodzące muszą być zgodne z funkcją.

Jeśli tekst wypowiedzi nie jest zgodny z wymaganą funkcją, nie zostanie wyodrębniony.

Wymagana funkcja używa jednostki uczenia maszynowego:

  • Jednostka wyrażenia regularnego
  • Jednostka listy
  • Wstępnie utworzona jednostka

Jeśli masz pewność, że model znajdzie się w danych, ustaw tę funkcję zgodnie z potrzebami. Wymagana funkcja nie zwraca niczego, jeśli nie zostanie znaleziona.

Kontynuując przykład adresu wysyłkowego:

Adres wysyłkowy (jednostka nauczona maszyny)

  • Numer ulicy (subentity)
  • Adres ulicy (subentity)
  • Nazwa ulicy (subentity)
  • Miasto (subentity)
  • Województwo lub województwo (subentity)
  • Kraj/region (subentity)
  • Kod pocztowy (subentity)

Wymagana funkcja korzystająca ze wstępnie utworzonych jednostek

Wstępnie utworzone jednostki, takie jak miasto, stan i kraj/region, są zazwyczaj zamkniętym zestawem list, co oznacza, że nie zmieniają się zbytnio w czasie. Te jednostki mogą mieć odpowiednie zalecane funkcje, a te funkcje mogą być oznaczone jako wymagane. Jednak flaga isRequired jest powiązana tylko z jednostką, do której jest przypisana i nie ma wpływu na hierarchię. Jeśli nie można odnaleźć wstępnie utworzonej funkcji jednostki podrzędnej, nie wpłynie to na wykrywanie i zwracanie jednostki nadrzędnej.

Jako przykład wymaganej funkcji rozważ wykrycie adresów. Możesz rozważyć wprowadzenie numeru ulicznego jako wymagania. Pozwoliłoby to użytkownikowi wprowadzić wartość "1 Microsoft Way" lub "One Microsoft Way", a oba te elementy byłyby rozpoznawane jako cyfra "1" dla podjednostki numerów ulicy. Aby uzyskać więcej informacji, zobacz artykuł dotyczący wstępnie utworzonej jednostki.

Wymagana funkcja korzystająca z jednostek listy

Jednostka listy jest używana jako lista nazw kanonicznych wraz z ich synonimami. Jako wymagana funkcja, jeśli wypowiedź nie zawiera ani nazwy kanonicznej, ani synonimu, jednostka nie jest zwracana jako część punktu końcowego przewidywania.

Załóżmy, że Twoja firma jest dostarczana tylko do ograniczonego zestawu krajów/regionów. Możesz utworzyć jednostkę listy zawierającą kilka sposobów odwoływanie się do kraju/regionu przez klienta. Jeśli usługa LUIS nie znajdzie dokładnego dopasowania w tekście wypowiedzi, jednostka (która ma wymaganą funkcję jednostki listy) nie zostanie zwrócona w prognozie.

Nazwa kanoniczna** Synonimy
Stany Zjednoczone U.S.
Stany zjednoczone ameryki
USA
USA
0

Aplikacja kliencka, taka jak czatbot, może zadać monit o pomoc. Pomaga to klientowi zrozumieć, że wybór kraju/regionu jest ograniczony i wymagany.

Wymagana funkcja używająca jednostek wyrażeń regularnych

Jednostka wyrażenia regularnego, która jest używana jako wymagana funkcja, zapewnia funkcje dopasowywania tekstu sformatowanego.

W przykładzie adresu wysyłkowego można utworzyć wyrażenie regularne, które przechwytuje reguły składni kodów pocztowych kraju/regionu.

Funkcje globalne

Najpopularniejszym zastosowaniem jest zastosowanie funkcji do określonego modelu, ale można skonfigurować tę funkcję jako funkcję globalną , aby zastosować ją do całej aplikacji.

Najczęstszym zastosowaniem funkcji globalnej jest dodanie dodatkowego słownictwa do aplikacji. Jeśli na przykład klienci używają języka podstawowego, ale oczekują, że będzie mógł używać innego języka w tej samej wypowiedzi, możesz dodać funkcję zawierającą wyrazy z języka pomocniczego.

Ponieważ użytkownik oczekuje użycia języka pomocniczego w dowolnej intencji lub jednostce, dodaj wyrazy z języka pomocniczego do listy fraz. Skonfiguruj listę fraz jako funkcję globalną.

Łączenie funkcji w celu uzyskania dodatkowej korzyści

Aby opisać cechę lub koncepcję, można użyć więcej niż jednej funkcji. Typowe parowanie polega na użyciu:

Przykład: funkcje jednostek rezerwacji biletów dla aplikacji podróżnej

Jako podstawowy przykład rozważmy aplikację do rezerwacji lotu z zamiarem rezerwacji lotów i jednostką rezerwacji biletów. Jednostka rezerwacji biletów przechwytuje informacje, aby zarezerwować bilet samolotowy w systemie rezerwacji.

Jednostka uczenia maszynowego dla książki biletów ma dwie części podrzędne do przechwytywania pochodzenia i miejsca docelowego. Funkcje należy dodać do każdej podentencji, a nie do jednostki najwyższego poziomu.

Zrzut ekranu przedstawiający przykładowe jednostki dla aplikacji do rezerwacji biletów.

Jednostka rezerwacji biletów jest jednostką uczenia maszynowego z jednostkami podrzędnymi, takimi jak Origin i Destination. Oba te podjednostki wskazują lokalizację geograficzną. Aby ułatwić wyodrębnienie lokalizacji i odróżnienie od źródła i miejsca docelowego, każda z nich powinna mieć funkcje.

Typ Podrzędność źródła Podentity docelowe
Model jako funkcja geographyV2 wstępnie utworzona jednostka geographyV2 wstępnie utworzona jednostka
Lista fraz Słowa początkowe : zacznij od, zacznij od, pozostaw Słowa docelowe : do, przybywać, lądować w, iść, iść, pobyt, nagłówek
Lista fraz Kody portów lotniczych — ta sama lista zarówno dla miejsca początkowego, jak i docelowego Kody portów lotniczych — ta sama lista zarówno dla miejsca początkowego, jak i docelowego
Lista fraz Nazwy portów lotniczych — ta sama lista zarówno dla miejsca początkowego, jak i docelowego Kody portów lotniczych — ta sama lista zarówno dla miejsca początkowego, jak i docelowego

Jeśli przewidujesz, że użytkownicy używają kodów lotnisk i nazw lotnisk, usługa LUIS powinna mieć listy fraz, które używają obu typów fraz. Kody lotnisk mogą być bardziej powszechne w przypadku tekstu wprowadzonego w czatbotze, podczas gdy nazwy lotnisk mogą być bardziej powszechne w konwersacji mówionej, takiej jak czatbot obsługujący mowę.

Pasujące szczegóły funkcji są zwracane tylko dla modeli, a nie dla list fraz, ponieważ tylko modele są zwracane w formacie JSON przewidywania.

Etykietowanie rezerwacji biletów w intencji

Po utworzeniu jednostki uczenia maszynowego należy dodać przykładowe wypowiedzi do intencji oraz oznaczyć jednostkę nadrzędną i wszystkie podjednostki.

W przykładzie rezerwacji biletów oznacz jako przykładowe wypowiedzi w intencji za pomocą jednostki TicketBooking i dowolnych elementów podrzędnych w tekście.

Zrzut ekranu przedstawiający etykietowanie przykładowej wypowiedzi.

Przykład: aplikacja do zamawiania pizzy

W drugim przykładzie rozważmy aplikację dla restauracji pizzy, która otrzymuje zamówienia na pizzę, w tym szczegóły typu pizzy, którą zamawia ktoś. Każdy szczegół pizzy należy wyodrębnić, jeśli to możliwe, w celu ukończenia przetwarzania zamówienia.

Jednostka uczenia maszynowego w tym przykładzie jest bardziej złożona z zagnieżdżonych podentencji, list fraz, wstępnie utworzonych jednostek i jednostek niestandardowych.

Zrzut ekranu przedstawiający jednostkę uczenia maszynowego z różnymi jednostkami podrzędnymi.

W tym przykładzie użyto funkcji na poziomie subentity i podrzędnym poziomu podentności. Jaki poziom pobiera rodzaj listy fraz lub modelu jako cechę, jest ważną częścią projektu jednostki.

Chociaż jednostki podrzędne mogą mieć wiele list fraz jako funkcji, które ułatwiają wykrywanie jednostki, każda podentia ma tylko jeden model jako funkcję. W tej aplikacji do pizzy te modele są przede wszystkim listami.

Zrzut ekranu przedstawiający jednostkę uczenia maszynowego z wieloma listami fraz jako funkcjami.

Poprawnie oznaczone przykładowe wypowiedzi są wyświetlane w sposób pokazujący, jak jednostki są zagnieżdżone.

Następne kroki