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 migrację aplikacji LUIS do interpretacji języka konwersacyjnego, aby korzystać z ciągłej pomocy technicznej i wielojęzycznych możliwości produktów.
Wzorce są 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 wykres organizacyjny 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 imieniu Alice, i zespołem podwładnych o nazwie: Michael, Rebecca i Carl.
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 słów, a nawet różnych wyrazach (synonimach "podrzędnych", "zarządzanie", "raport"), usługa LUIS może zwrócić niski współczynnik 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 jest przeznaczony przede wszystkim do przewidywania intencji i ról. Jednostka "pattern.any" służy do wyodrębniania jednostek bez formularzy. Wzorce używają jednostek, ale wzorzec nie pomaga wykrywać jednostki uczenia maszynowego.
Nie spodziewaj się, ż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 we wzorcu są powiązane kontekstowo, wzorce używają ról jednostki do wyodrębniania kontekstowych informacji o jednostkach.
Wyniki przewidywania z wzorcami i bez ich
Biorąc pod uwagę wystarczającą liczbę przykładowych wypowiedzi, usługa LUIS może być w stanie zwiększyć pewność przewidywania bez wzorców. Wzorce zwiększają współczynnik ufności bez konieczności podawania jak największej liczby wypowiedzi.
Dopasowanie do wzorca
Wzorzec jest dopasowywany przez najpierw wykrywanie jednostek wewnątrz wzorca, a następnie weryfikowanie pozostałej części 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 jest autorem 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ł "Zażądaj przeniesienia pracownika z nowego pracownika do firmy 2018 w wersji 5"?
- Czy wniosek o przeniesienie pracownika z nowego pracownika do firmy 2018 w wersji 5 jest publikowany w języku francuskim?"
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, więc 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 element {FormName} jest publikowany w języku francuskim[?]
Najlepsze rozwiązania dotyczące wzorców:
Dodawanie wzorców w kolejnych iteracji
Przed dodaniem wzorców należy zrozumieć, jak działa aplikacja, ponieważ wzorce są ważone częściej niż przykładowe wypowiedzi i będą wypaczać pewność siebie.
Gdy dowiesz się, jak działa aplikacja, dodaj wzorce w miarę ich stosowania 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 to cecha wyróżniająca lub atrybut 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, które odróżniają koncepcję. Wskazują one, ż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 najmniejszą jednostką jest token. 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żywać jako funkcji. Pamiętaj, aby uwzględnić odmiany wyrazów, takie jak:
- Formy mnogie
- Czasowniki czasowników
- Abbreviations
- Pisownia i błędy pisowni
Ustal, czy tekst wymaga następującego, 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ę, na przykład 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 z kilku 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 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ładnie zgodne z tekstem. Wykonaj następujące kroki, aby użyć listy fraz:
- Zacznij od jednostki uczenia maszynowego:
- Dodaj przykładowe wypowiedzi.
- Etykieta z jednostką uczenia maszynowego.
- Dodaj listę fraz:
- Dodaj wyrazy o podobnym znaczeniu. Nie dodawaj każdego możliwego słowa ani frazy. Zamiast tego dodaj kilka słów lub fraz jednocześnie. Następnie ponownie przetrenuj i opublikuj.
- 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ą potrzebować 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 domeny podmiotu bez listy fraz.
Aby na przykład wyodrębnić terminy medyczne:
- Utwórz przykładowe wypowiedzi i oznacz terminy medyczne w tych wypowiedziach.
- 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ę.
- 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 steruje tym zakresem modelu w interfejsie API.
Dopasowania tokenu dla listy fraz
Lista fraz zawsze ma zastosowanie na poziomie tokenu. W poniższej tabeli pokazano, jak lista fraz zawierająca wyraz 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
Możesz dodać model (intencję lub jednostkę) jako funkcję do innego modelu (intencji lub jednostki). Dodając istniejącą intencję lub jednostkę jako funkcję, dodajesz dobrze zdefiniowaną koncepcję z etykietami przykładów.
Podczas dodawania modelu jako funkcji można ustawić tę funkcję jako:
- Wymagany. Wymagana funkcja musi zostać znaleziona, aby model został zwrócony z punktu końcowego przewidywania.
- Globalny. Funkcja globalna ma zastosowanie do całej aplikacji.
Kiedy 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 zwiększyć znaczącą wagę do przewidywania intencji BookFlight .
Kiedy należy używać jednostki jako funkcji do innej jednostki
Jednostka (A) powinna zostać dodana jako funkcja 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 podentencji adresów ulicznych, znalezienie podentencji 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 (podentity)
- Miasto (subentity)
- Województwo lub województwo (subentity)
- Kraj/region (subentity)
- Kod pocztowy (podentity)
Zagnieżdżone podentacje z funkcjami
Podentycja uczenia maszynowego wskazuje, że pojęcie jest obecne w jednostce nadrzędnej. Element nadrzędny może być inną podjętością lub górną jednostką. Wartość subentity działa jako cecha elementu nadrzędnego.
Podentity mogą mieć zarówno listę fraz, jak i model (inną jednostkę) jako funkcję.
Gdy podentity ma listę fraz, zwiększa słownictwo koncepcji, ale nie dodaje żadnych informacji do odpowiedzi JSON przewidywania.
Gdy podentity 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 innej niż uczenie maszynowe:
- 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 żadnych elementów, jeśli nie zostanie znaleziona.
Kontynuuj korzystanie z przykładu adresu wysyłkowego:
Adres wysyłkowy (jednostka wyuczonej maszyny)
- Numer ulicy (subentity)
- Adres ulicy (podentity)
- Nazwa ulicy (subentity)
- Miasto (subentity)
- Województwo lub województwo (subentity)
- Kraj/region (subentity)
- Kod pocztowy (podentity)
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 w miarę upływu czasu nie zmieniają się zbytnio. 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. Warto rozważyć wprowadzenie numeru ulicznego. Pozwoliłoby to użytkownikowi na wprowadzenie ciągu "1 Microsoft Way" lub "One Microsoft Way", a oba te elementy rozpoznałyby liczbę "1" dla podjednostki numerów ulicznych. 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 dostarcza tylko do ograniczonego zestawu krajów/regionów. Możesz utworzyć jednostkę listy zawierającą kilka sposobów, aby klient odwołył się do kraju/regionu. 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 | Krajowe USA NAM USA 0 |
Aplikacja kliencka, taka jak czatbot, może zadać pytanie, aby uzyskać 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
Chociaż najczęstszym zastosowaniem jest zastosowanie funkcji do określonego modelu, 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
Do opisania cech lub koncepcji można użyć więcej niż jednej funkcji. Typowe parowanie polega na użyciu:
- Funkcja listy fraz: możesz użyć wielu list fraz jako funkcji do tego samego modelu.
- Model jako funkcja: wstępnie utworzona jednostka, jednostka wyrażenia regularnego, jednostka listy.
Przykład: funkcje jednostek rezerwacji biletów dla aplikacji turystycznej
W podstawowym przykładzie rozważmy aplikację do rezerwacji lotu z intencją 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 źródła i miejsca docelowego. Funkcje należy dodać do każdej podentencji, a nie do jednostki najwyższego poziomu.
Jednostka rezerwacji biletów jest jednostką uczenia maszynowego, w tym źródła i miejsca docelowego. Te podentacje wskazują lokalizację geograficzną. Aby ułatwić wyodrębnienie lokalizacji i odróżnienie od źródła i miejsca docelowego, każda podentność powinna mieć funkcje.
Typ | Subentity źródła | Podentity docelowe |
---|---|---|
Model jako funkcja | geographyV2 wstępnie skompilowana jednostka | geographyV2 wstępnie skompilowana jednostka |
Lista fraz | Słowa początkowe: zacznij od, zacznij od, pozostaw | Słowa docelowe: do, przybywać, lądować, iść, iść, pobyt, nagłówek |
Lista fraz | Kody lotnisk — ta sama lista zarówno dla miejsca początkowego, jak i docelowego | Kody lotnisk — ta sama lista zarówno dla miejsca początkowego, jak i docelowego |
Lista fraz | Nazwy lotnisk — ta sama lista zarówno dla miejsca początkowego, jak i docelowego | Kody lotnisk — ta sama lista zarówno dla miejsca początkowego, jak i docelowego |
Jeśli przewidujesz, że użytkownicy używają kodów lotniska 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 z włączoną obsługą mowy.
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 podentacje.
W przykładzie rezerwacji biletów oznacz przykładowe wypowiedzi w intencji jednostką TicketBooking i wszystkimi podkatarytami w tekście.
Przykład: aplikacja do zamawiania pizzy
W drugim przykładzie rozważmy aplikację dla restauracji pizzerii, 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 podentiami, listami fraz, wstępnie utworzonymi jednostkami i jednostkami niestandardowymi.
W tym przykładzie użyto funkcji na poziomie subentity i podrzędnym poziomu subentity. Który poziom pobiera rodzaj listy fraz lub modelu jako cechę, jest ważną częścią projektu jednostki.
Chociaż podentity 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.
Poprawnie oznaczone przykładowymi wypowiedziami są wyświetlane w sposób pokazujący sposób zagnieżdżania jednostek.