botframework
Dodawanie przetwarzania języka naturalnego
Szukaj…
Wprowadzenie
Bot Framework obsługuje programy Recognizers
. Rozpoznawanie służy do rozpoznawania, co zrobić, gdy użytkownik wyśle botowi dowolną wiadomość. Dlatego możesz zaprojektować bota, aby rozpoznawał zamiary na podstawie danych wprowadzonych przez użytkownika. Rozpoznawanie może być używane z LUIS API w celu dodania zrozumienia bota przez język naturalny.
Składnia
var rozpoznający = nowy konstruktor.LUISRecognizer („URL twojego modelu”);
var intents = new builder.IntentDialog ({rozpoznaje: [rozpoznawanie]});
Inicjowanie i dodawanie LUISRecognizer
Po opracowaniu nowego projektu z podstawowym szablonem przedstawionym we wstępie powinieneś być w stanie dodać LUISRecognizer w taki sposób -
var model = '' // Your LUIS Endpoint link comes here
var recognizer = new builder.LuisRecognizer(model);
Teraz program recognizer
jest programem LUISRecognizer i może przekazywać zamiary w oparciu o zdefiniowany model LUIS. Możesz dodać recognizer
do swoich celów przez
var intents = new builder.IntentDialog({recognizers: [recognizer]});
Twój bot może teraz obsługiwać zamiary LUIS. Wszelkie nazwane zamiary Luis można wykryć za pomocą matches
własność IntentDialog
klasie. Powiedzmy, że intencja o nazwie hi
jest zdefiniowana w modelu LUIS, aby rozpoznać intencję bota,
intents.matches('hi', function(session) {
session.send("Hey :-)");
});
Definiowanie modelu LUIS z intencjami
Tworzenie modelu LUIS wymaga niewielkiego doświadczenia w programowaniu lub nie wymaga go wcale. Musisz jednak znać 2 ważne terminy, które będą szeroko stosowane.
- Intencje - w ten sposób identyfikujesz funkcje, które należy wykonać, gdy użytkownik coś wpisze. Np. - Intencja o nazwie
Hi
zidentyfikuje funkcję, która musi zostać wykonana za każdym razem, gdy użytkownik wyśle „Cześć”. Intencje są jednoznacznie nazwane w twoim programie / modelu. - Podmioty - identyfikują rzeczowniki w zestawieniu. Np. - „Ustaw alarm na 13:00”, tutaj
1:00 pm
to jednostka, która musi zostać rozpoznana przez czat-bot, aby ustawić alarm.
Uwaga: obrazy witryny nie są dostępne jako front-end mojej zmiany, ale podstawowa koncepcja pozostaje taka sama.
Aby utworzyć nowy model, przejdź do LUIS.ai i zaloguj się za pomocą konta Microsoft, aby przejść na stronę tworzenia aplikacji. Gdzie można utworzyć pusty projekt.
Definiowanie zamiarów:
Intencje można zdefiniować na karcie Intents
. Określają, jaką funkcję należy wykonać, gdy użytkownik wejdzie w cokolwiek.
Wszystkie aplikacje mają domyślną intencję None
, która jest aktywowana, gdy dane wejściowe użytkownika nie odpowiadają żadnej innej intencji.
Aby zdefiniować zamiar,
- Nadaj mu unikalną nazwę odpowiadającą funkcji, którą chcesz pełnić.
- Po zakończeniu nazewnictwa należy dodać
utterances
do intencji. Wypowiedzi są tym, co użytkownik chce wysłać, aby aktywować zdefiniowane zamiary. Spróbuj nakarmić jak najwięcej różnychutterances
, aby LUIS prawidłowo kojarzyłintents
iutterances
. - Trenować LUIS modelu, klikając
Train
przycisk naTrain and Test
Tab. Po szkoleniu aplikację można przetestować w panelu poniżej. - Na koniec opublikuj swoją aplikację na karcie
Publish App
. Powinieneś teraz otrzymać adres URL punktu końcowego, który należy wstawić podczas definiowaniaLUISRecognizer
w kodzie bota.
Dodawanie jednostek do modelu LUIS
Istota to informacja, którą bot pobiera z określonej wypowiedzi zgodnej z intencją.
Np. Niech My name is John Doe
należy do intencji zwanej introduction
. Aby twój bot zrozumiał i wyodrębnił z zdania imię John Doe
, musisz zdefiniować byt, który to robi. Możesz nazwać byt, jak chcesz, ale najlepiej nazwać go jako coś związanego z tym, co wyodrębnia. W naszym przykładzie możemy nazwać naszą name
podmiotu.
Jednostki mogą być ponownie użyte między różnymi intencjami, aby wyodrębnić różne rzeczy. Zatem najlepszą zasadą byłoby stworzenie bytu, który wyodrębnia tylko typ danych i wykorzystuje je w różnych celach. Dlatego w naszym powyższym przykładzie powiedz, że Book a flight on Emirates
należy do zamierzonej booking
, wówczas ten sam podmiot, name
, może zostać użyty do wyodrębnienia emirates
nazw lotów.
Zanim zaczniesz definiować byty, musisz pamiętać o dwóch rzeczach -
- Jednostki powinny być unikatowe pod względem wypowiedzi w zamierzeniu. Encji nie można użyć dwukrotnie w tej samej wypowiedzi.
- LUIS nie uwzględnia wielkości liter. Oznacza to, że wszystko wyodrębnione i odebrane przez wyodrębnienie bytu będzie pisane małymi literami. Tak więc wydobywanie danych z rozróżnianiem wielkości liter przez podmioty jest prawdopodobnie złym pomysłem.
Dodawanie gotowych elementów
Wcześniej zbudowane jednostki są, jak sugeruje nazwa, wstępnie zbudowane, tj. Są już skonfigurowane do wyodrębniania określonego typu danych w celu, do którego zostały dodane. Przykładem może być number
jednostki, który wyodrębnia liczby z zamiaru, do którego jest przypisany. Liczby mogą być numeryczne lub alfabetyczne, na przykład 10
lub ten
.
Aby uzyskać pełną listę wszystkich gotowych jednostek, możesz odwiedzić [Lista gotowych jednostek] [1].
Aby dodać gotowe elementy,
- Przejdź do zakładki
entities
. - Kliknij
Add pre-built entities
i wybierz element, który chcesz dodać do modelu, i kliknij Zapisz.
Dodawanie encji niestandardowych Encje niestandardowe są 4 typów,
- Prosty : Prosty byt wyodrębnia określone dane,
name
w powyższych przykładach jest prostym bytem. - Hierarchiczna : jednostka nadrzędna z jednostkami podrzędnymi (podtypami), które są zależne od jednostki nadrzędnej.
- Złożony : grupa 2 lub więcej niezależnych podmiotów.
- Lista : jednostka, która rozpoznaje słowa tylko z podanej listy.
Definiowanie prostych jednostek
- Przejdź na zakładkę
entities
. - Kliknij
Add Custom Entities
- Nazwij swoją jednostkę, sprawdź wymagany typ jednostki i naciśnij
Save
.
Wszystkie inne typy jednostek można dodawać w ten sam sposób, po prostu zmieniając Entity Type
na jeden z powyższych typów. W typach encji hierarchicznych i złożonych musisz także podać nazwy dzieci wraz z nazwą encji nadrzędnej. Definiowanie jednostek listy różni się nieco od reszty.
Definiowanie elementów listy
Po wykonaniu powyższych kroków, aby utworzyć List Entity
, umieszczając Entity Type
jako Listę, zostaniesz przekierowany do strony szczegółów encji, którą właśnie zdefiniowałeś.
- Zdefiniuj wartość kanoniczną. Jest to standardowa wartość, którą bot otrzyma, gdy użytkownik wpisze dowolny z synonimów.
- Zdefiniuj synonimy wartości kanonicznej. Zostaną one przekonwertowane na wartość kanoniczną po napotkaniu przez byt.
Możesz także importować całe listy, używając tablicy Obiektów JSON w postaci:
[
{
"canonicalForm": "Hey",
"list": [
"Howdy",
"Hi"
]
},
.
.
.
]
Kojarzenie jednostki z intencją
Pre-built
oraz list
podmiotów już zbiór wartości zdefiniowanych, które mogą być pozyskiwane z wszystkich utterences jednak Simple
, Hierarchical
i Composite
wypowiedzi muszą być przeszkoleni, aby podnieść wartości.
Można to zrobić przez
- Przejdź do zakładki
intents
i wybierz intencję, do której chcesz dodać encję. - Dodaj wypowiedź o wartości fikcyjnej, którą chcesz wyodrębnić. Powiedz, możesz dodać
My name is John Doe
jako wypowiedź. - Kliknij i przeciągnij myszą nad słowami, które jednostka ma wyodrębnić. W powyższym przykładzie będziesz musiał zaznaczyć
john doe
. - Otworzy się menu rozwijane z listą wszystkich podmiotów dostępnych w projekcie. Wybierz odpowiedni według własnego uznania.
Name
będzie jednostką wybraną w powyższym przykładzie. - Dodaj za każdym razem więcej wypowiedzi z różnymi wartościami manekina i wszystkie możliwe struktury, jakie możesz wymyślić.
- Trenuj i publikuj swój model LUIS.