Planowanie aplikacji 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 tworzyć nowych zasobów usługi LUIS. Zalecamy migrowanie aplikacji LUIS do interpretacji języka konwersacyjnego , aby korzystać z ciągłej pomocy technicznej produktu i możliwości wielojęzycznych.

Schemat aplikacji Language Understanding (LUIS) zawiera intencje i jednostki istotne dla domeny podmiotu. Intencje klasyfikują wypowiedzi użytkowników, a jednostki wyodrębniają dane z wypowiedzi użytkownika. Intencje i jednostki związane z domeną tematu. Intencje klasyfikują wypowiedzi użytkowników.

Aplikacja usługi LUIS uczy się i wykonuje najbardziej wydajną operację podczas iteratywnego opracowywania. Oto typowy cykl iteracji:

  1. Tworzenie nowej wersji
  2. Edytuj schemat aplikacji usługi LUIS. Obejmuje on:
    • Intencje z przykładowymi wypowiedziami
    • Jednostki
    • Funkcje
  3. Trenowanie, testowanie i publikowanie
  4. Testowanie pod kątem aktywnej nauki przez przejrzenie wypowiedzi wysłanych do punktu końcowego przewidywania
  5. Zbieranie danych z zapytań punktu końcowego

Zrzut ekranu przedstawiający cykl tworzenia

Identyfikowanie domeny

Aplikacja usługi LUIS jest skoncentrowana wokół domeny podmiotu. Na przykład możesz mieć aplikację do podróży, która obsługuje rezerwację biletów, lotów, hoteli i wypożyczeń samochodów. Inna aplikacja może udostępniać zawartość związaną z ćwiczeniami, śledzenie wysiłków fitness i ustalanie celów. Identyfikowanie domeny pomaga znaleźć wyrazy lub frazy, które są istotne dla twojej domeny.

Porada

Usługa LUIS oferuje wstępnie utworzone domeny dla wielu typowych scenariuszy. Sprawdź, czy możesz użyć wstępnie utworzonej domeny jako punktu wyjścia dla aplikacji.

Identyfikowanie intencji

Pomyśl o intencjach , które są ważne dla zadania aplikacji.

Przyjrzyjmy się przykładowi aplikacji turystycznej z funkcjami, aby zarezerwować lot i sprawdzić pogodę w miejscu docelowym użytkownika. Dla tych akcji można zdefiniować dwie intencje: BookFlight i GetWeather.

W bardziej złożonej aplikacji z większą ilością funkcji prawdopodobnie będziesz mieć więcej intencji i należy je dokładnie zdefiniować, aby nie były zbyt szczegółowe. Może być na przykład konieczne oddzielenie intencji BookFlight i BookHotel, ale bookInternationalFlight i BookDomesticFlight mogą być zbyt podobne.

Uwaga

Najlepszym rozwiązaniem jest użycie tylko tak wielu intencji, jak trzeba wykonać funkcje aplikacji. Jeśli zdefiniujesz zbyt wiele intencji, usługa LUIS będzie trudniej poprawnie klasyfikować wypowiedzi. Jeśli zdefiniujesz zbyt mało, mogą one być tak ogólne, że nakładają się na siebie.

Jeśli nie musisz identyfikować ogólnej intencji użytkownika, dodaj do intencji wszystkie przykładowe None wypowiedzi użytkownika. Jeśli twoja aplikacja będzie potrzebować większej liczby intencji, możesz je utworzyć później.

Tworzenie przykładowych wypowiedzi dla każdej intencji

Aby rozpocząć, unikaj tworzenia zbyt wielu wypowiedzi dla każdej intencji. Po określeniu intencji potrzebnych dla aplikacji utwórz od 15 do 30 przykładowych wypowiedzi na intencję. Każda wypowiedź powinna być inna niż podane wcześniej wypowiedzi. Uwzględnij różne liczby wyrazów, wybory wyrazów, czasowniki i znaki interpunkcyjne.

Aby uzyskać więcej informacji, zobacz understanding good utterances for LUIS apps (Zrozumienie dobrych wypowiedzi dla aplikacji usługi LUIS).

Identyfikowanie jednostek

W przykładowych wypowiedziach zidentyfikuj jednostki, które chcesz wyodrębnić. Aby zarezerwować lot, potrzebujesz informacji takich jak miejsce docelowe, data, linia lotnicza, kategoria biletów i klasa podróży. Utwórz jednostki dla tych typów danych, a następnie oznacz jednostki w przykładowych wypowiedziach. Jednostki są ważne dla realizacji intencji.

Podczas określania, które jednostki mają być używane w aplikacji, należy pamiętać, że istnieją różne typy jednostek do przechwytywania relacji między typami obiektów. Aby uzyskać więcej informacji na temat różnych typów, zobacz Jednostki w usłudze LUIS .

Porada

Usługa LUIS oferuje wstępnie utworzone jednostki dla typowych scenariuszy użytkownika konwersacyjnego. Rozważ użycie wstępnie utworzonych jednostek jako punktu wyjścia do tworzenia aplikacji.

Intencje a jednostki

Intencja jest pożądanym wynikiem całej wypowiedzi, podczas gdy jednostki są fragmentami danych wyodrębnionych z wypowiedzi. Zazwyczaj intencje są powiązane z akcjami, które powinna wykonywać aplikacja kliencka. Jednostki to informacje potrzebne do wykonania tej akcji. Z perspektywy programowania intencja wyzwoli wywołanie metody, a jednostki będą używane jako parametry do tego wywołania metody.

Ta wypowiedź musi mieć intencję i może mieć jednostki:

"Kup bilet lotniczy z Seattle do Kairu"

Ta wypowiedź ma jedną intencję:

  • Kupowanie biletu lotniczego

Ta wypowiedź może mieć kilka jednostek:

  • Lokalizacje Seattle (źródło) i Kair (miejsce docelowe)
  • Ilość pojedynczego biletu

Rozwiązanie w wypowiedziach z więcej niż jedną funkcją lub intencją

W wielu przypadkach, zwłaszcza podczas pracy z naturalną konwersacją, użytkownicy udostępniają wypowiedź, która może zawierać więcej niż jedną funkcję lub intencję. W tym celu ogólną strategią jest zrozumienie, że dane wyjściowe mogą być reprezentowane przez intencje i jednostki. Ta reprezentacja powinna być mapowana na akcje aplikacji klienckiej i nie musi być ograniczona do intencji.

Int-ent-ties to koncepcja, że akcje (zwykle zrozumiałe jako intencje) mogą być również przechwytywane jako jednostki w danych wyjściowych aplikacji i mapowane na określone akcje. Negacja,na przykład, często opiera się na intencji i jednostce do pełnego wyodrębniania. Rozważ następujące dwie wypowiedzi, które są podobne do wyboru słów, ale mają różne wyniki:

  • "Proszę zaplanować mój lot z Kairu do Seattle"
  • "Anuluj mój lot z Kairu do Seattle"

Zamiast mieć dwie oddzielne intencje, należy utworzyć pojedynczą intencję z jednostką uczenia maszynowego FlightAction. Ta jednostka uczenia maszynowego powinna wyodrębnić szczegóły akcji dotyczące planowania i anulowania żądań oraz lokalizacji początkowej lub docelowej.

Ta jednostka FlightAction będzie ustrukturyzowana przy użyciu następującej jednostki uczenia maszynowego najwyższego poziomu i jednostek podrzędnych:

  • FlightAction
    • Akcja
    • Origin
    • Element docelowy

Aby ułatwić wyodrębnianie, należy dodać funkcje do podentii. Możesz wybrać funkcje na podstawie słownictwa, które mają być widoczne w wypowiedziach użytkownika, oraz wartości, które mają zostać zwrócone w odpowiedzi przewidywania.

Najlepsze rozwiązania

Planowanie schematu

Przed rozpoczęciem tworzenia schematu aplikacji należy określić, jak i gdzie planujesz używać tej aplikacji. Im dokładniej i dokładniej planujesz, tym lepiej staje się aplikacja.

  • Badania użytkowników docelowych
  • Zdefiniuj kompleksowe osoby reprezentujące twoją aplikację — głos, awatar, obsługa problemów (proaktywna, reaktywna)
  • Identyfikowanie kanałów interakcji użytkowników (takich jak tekst lub mowa), przekazywanie istniejących rozwiązań lub tworzenie nowego rozwiązania dla tej aplikacji
  • Kompleksowa podróż użytkownika
    • Czego oczekujesz, że ta aplikacja będzie robić, a czego nie robić? Jakie są priorytety tego, co należy zrobić?
    • Jakie są główne przypadki użycia?
  • Zbieranie danych — informacje na temat zbierania i przygotowywania danych

Nie trenuj i publikuj przy użyciu każdej przykładowej wypowiedzi

Przed rozpoczęciem trenowania i publikowania dodaj 10 lub 15 wypowiedzi. Pozwala to zobaczyć wpływ na dokładność przewidywania. Dodanie pojedynczej wypowiedzi może nie mieć widocznego wpływu na wynik.

Nie używaj usługi LUIS jako platformy szkoleniowej

Usługa LUIS jest specyficzna dla domeny modelu językowego. Nie jest przeznaczona do pracy jako ogólna platforma szkoleniowa języka naturalnego.

Iteracyjne kompilowanie aplikacji przy użyciu wersji

Każdy cykl tworzenia powinien być zawarty w nowej wersji sklonowanej z istniejącej wersji.

Nie publikuj zbyt szybko

Publikowanie aplikacji zbyt szybko i bez odpowiedniego planowania może prowadzić do kilku problemów, takich jak:

  • Aplikacja nie będzie działać w rzeczywistym scenariuszu na akceptowalnym poziomie wydajności.
  • Schemat (intencje i jednostki) może nie być odpowiedni, a jeśli utworzono logikę aplikacji klienckiej zgodnie ze schematem, może być konieczne jego ponowne wykonanie. Może to spowodować nieoczekiwane opóźnienia i dodatkowe koszty projektu, nad którym pracujesz.
  • Wypowiedzi dodane do modelu mogą powodować uprzedzenia w kierunku przykładowych wypowiedzi, które są trudne do debugowania i identyfikowania. Spowoduje to również trudności z usunięciem niejednoznaczności po zatwierdzeniu określonego schematu.

Monitorowanie wydajności aplikacji

Monitoruj dokładność przewidywania przy użyciu zestawu testów wsadowych.

Utrzymuj oddzielny zestaw wypowiedzi, które nie są używane jako przykładowe wypowiedzi ani wypowiedzi punktów końcowych. Ciągle ulepszaj aplikację dla zestawu testowego. Dostosowuj zestaw testów, aby odzwierciedlał rzeczywiste wypowiedzi użytkowników. Oceniaj każdą iterację lub wersję aplikacji za pomocą tego zestawu testów.

Nie twórz list fraz ze wszystkimi możliwymi wartościami

Podaj kilka przykładów na listach fraz , ale nie każdy wyraz lub frazę. Usługa LUIS uogólnia i uwzględnia kontekst.

Następne kroki

Intencje