Top

Seria o PVA – ekstrakcja bytów i więcej


Jedną z bardzo potężnych funkcji Power Virtual Agent jest funkcjonalność o nazwie „Byty” (Entities). Jego głównym celem jest pozwolenie botowi zadać pytanie użytkownikowi, a następnie pozwolić użytkownikowi odpowiedzieć na pytanie w naturalnym języku, używając pełnego zdania, a na końcu wyodrębnić z odpowiedzi kluczowe punkty, które pozwolą botowi przejść dalej w rozmowie.

Ostatnio Jeff Zhang, Principal Product Manager z Microsoft, napisał ten krótki post opisujący możliwości wbudowanych funkcji ekstrakcji słów kluczowych w PVA: https://powervirtualagents.microsoft.com/en-us/blog/smart-entity-extraction-and-proactive-slot-filling/.

Ja postaram Ci się pomóc i zrozumieć, jak móc osiągnąć dużo ponad to 🙂

Dowiedz się więcej – obejrzyj screencast

Entities (Byty, Słowa kluczowe)

Funkcja jest łatwa do znalezienia – jest ona obecna w głównej nawigacji. Po otwarciu strony zauważysz długą listę predefiniowanych bytów, których użycie umożliwi np. wyodrębnienie wieku ze zdania. Na przykład – bot pyta użytkownika: „ile masz lat?”. Ale użytkownik nie musi odpowiadać przy użyciu samych cyfr, prawda? Załóżmy, że użytkownik odpowiada: „Mam czterdzieści lat”. W trakcie zwykłego przebiegu rozmowy bot zgubiłby się – nie wiedziałby, jaka jest odpowiedź na jego pytanie (przykład nr 1):

Ale w przypadku, gdyby projektant wybrał byt „Age” w celu zidentyfikowania odpowiedzi użytkownika, wówczas w procesie inteligentnej ekstrakcji słowa kluczowego zdanie zostałoby przetworzone jak poniżej:

Odpowiedź użytkownikaBytZapisana wartość
I am forty years old.forty years40

To jest bardzo przydatne! I jest gotowych do użycia wiele takich predefiniowanych bytów.

Własne byty

Projektanci mogą również tworzyć własne byty niestandardowe. Aby to zrobić, po prostu kliknij link powyżej tytułu:

W ten sposób projektant jest w stanie stworzyć własny zestaw słów kluczowych i ich synonimów. Jeśli zostaną następnie użyte w rozmowie, zostaną wyświetlone jako przyciski (3), jednak użytkownik będzie mógł również odpowiedzieć pełnym zdaniem (1). Ale – jeśli zdanie będzie zbyt skomplikowane, jeśli bot nie byłby w stanie dopasować go ani do słowa kluczowego, ani do jego synonimów, nie będzie w stanie go przeanalizować i utknie (2):

Ekstrakcja własnych bytów

Wszystko fajnie, ale co zrobić, jeśli chcesz po prostu zadać użytkownikowi pytanie i wyciągnąć z niego słowo kluczowe (ale nie używając jednego z wcześniej zdefiniowanych zestawów), aby przejść dalej? LUIS (Language Understanding Intelligent Service) firmy Microsoft jest tutaj, aby Ci pomóc! 🙂

Korzystając z LUIS, jesteś w stanie stworzyć własną ekstrakcję bytów. Pokażę ci krok po kroku jak to zrobić:

1) Skonfiguruj LUIS

Przejdź do https://www.luis.ai/ i zaloguj się.

Ważne! By zarejestrować się w usłudze LUIS musisz albo być tenant adminem, albo mieć zgodę administratora do używania jej.

Następnie utwórz usługę Language Understanding, do pracy z LUIS. Musisz to zrobić oczywiście w portal.azure.com. Usługa musi być skonfigurowana zarówno dla środowiska wykonawczego, jak i tworzenia (1). Możesz skorzystać z subskrypcji F0 (bezpłatnej, 2, 3), jeśli potrzebujesz tę usługę wyłącznie na potrzeby testów (mały ruch):

Teraz wróć do portalu LUIS i utwórz nową aplikację, wybierając subskrypcję użytą do stworzenia usługi (1), a następnie samą usługę (2), następnie kliknij przycisk „utwórz nową aplikację” (3) i wypełnij formularz (4).

Teraz możesz przejść do następnego kroku!

2) Konfigurowanie grup celów i bytów

Następnie utwórz grupy celów (intents). Grupa celów to zestaw przykładów służących do umożliwienia kwalifikacji danych od użytkowników do określonych grup. W moim przypadku mam tylko jedną grupę – przechowującą przykłady zdań, które użytkownicy mogą napisać do bota, gdy poprosi ich o opisanie ich problemu IT (oczywiście mogę utworzyć dwa: jeden dla każdego z oczekiwanych rodzajów problemów; software, hardware, a następnie przeszkolić LUIS, aby dopasowywać dane wejściowe użytkownika do jednego z nich).

Teraz przejdź do Bytów. Są to w zasadzie słowa kluczowe, które LUIS będzie mógł wydobyć z podanego celu na podstawie tego, jak dobrze zostały przygotowane. Najpierw utwórz byt. Istnieje wiele możliwych typów. W moim przypadku wybrałem „List”, ponieważ chcę wyodrębnić niektóre słowa kluczowe z danych wejściowych użytkownika i na ich podstawie ustalić, czy jest to problem z rodzaju Software, czy Hardware:

Kiedy skończysz konfigurować byty, wróć do swoich grup celów i sprawdź, czy słowa kluczowe użyte w twoich przykładach zdań zostały zaznaczone (1, 2). Jeśli nie, po prostu zaznacz je i wybierz właściwy byt (3):

Gotowe! Teraz wciśnij przycisk „Train” w prawym górnym rogu, a następnie: „Publish” (wybierając miejsce do publikowania: Staging lub Production).

Teraz przejdź do „Manage” – informacja tutaj są wymagane do skonfigurowania komunikacji pomiędzy Power Automate i LUIS.

Dlaczego więc konfigurować cele i byty? Zasadniczo w scenariuszu, który opisuję, całkowicie wystarczyłoby mi posiadanie jedynie dwóch grup celów i dobrze wytrenowaną usługę. Jednak użycie Bytów i ich dopasowanie do słów kluczowych w celach poprawia prawidłowe rozpoznanie wpisanego zdania i przyporządkowanie go do określonej grupy.

Ale dlaczego byty? Zasadniczo, jeśli chciałbym pójść o krok dalej, bot mógłby poprosić użytkownika o opisanie problemu według określonego szablonu, np. pytając o system, szczegóły komputera, nazwę aplikacji, typ urządzenia itp … Wtedy dzięki użyciu wyodrębniania bytów bot dokładnie znałby wszystkie szczegóły problemu, nawet gdyby jego opis został napisany pełnym zdaniem i naturalnym językiem. To jest potęga! 🙂

Np. dla takiego przykładu: „Mam problem z arkuszem kalkulacyjnym Excel. Aplikacja nie chce zapisać dokumentu informując o braku uprawnień do biblioteki SharePoint.”

Bot dostałby informacje:
Rodzaj problemu: Software
Aplikacja: Excel
Akcja: zapis pliku
Problem: uprawnienia
Lokalizacja: biblioteka SharePoint

Które mógłby wykorzystać w dalszej komunikacji z użytkownikiem lub do wygenerowania zadania w helpdesk poprawnie ustawiając jego parametry.

3) Power Automate – flow

Utwórz nowy przepływ. Jako wyzwalacz użyj nowej, wciąż w trybie preview, akcji o nazwie „When Power Virtual Agents call a flow”:

Zdefiniuj zmienną dla danych wejściowych – będzie to informacja od użytkownika – opis problemu.

Następnie wstaw akcję HTTP do wysłania żądanie do LUIS. Możesz wybrać metodę GET lub POST. Jeśli treść, którą chcesz wysłać, jest bardziej złożona, sugeruję użycie POST i umieszczenie jej w treści żądania (źródło):

Dobrym pomysłem jest teraz wykonanie połączenia testowego przy użyciu na przykład Postmana, aby uzyskać JSON treści odpowiedzi, a następnie użyć go do konfiguracji akcji „Parse JSON”. Poniżej znajdziesz przykład tego samego zdania, którego mój niestandardowy byt stworzony w PVA nie był w stanie przenalizować i zrozumieć. Korzystanie z LUIS jest mniej niż łatwe, a działa wyśmienicie:

Rozwiązanie jakie ja zbudowałem, liczyło na podstawie ilości faktycznych dopasowań do jednego lub drugiego bytu, czy opisywany przez użytkownika problem jest z rodzaju Software, czy Hardware. Informację tę przepływ następnie zwraca do PVA. Mógłby dodatkowo zwracać jeszcze znalezione encje, które mogłyby zostać użyte w komunikacji bota z użytkownikiem.

A zatem, w moim działającym scenariuszu bot pyta użytkownika o problem (1) – nie musi już najpierw pytać o problem, a potem o jego rodzaj – nowy sposób jest znacznie wygodniejszy (i bardziej inteligentny ;)) dla użytkownika. Użytkownik odpowiada używając pełnego zdania, które zostaje zapisane jako zmienna (2). Następnie jest ono przekazywane jako parametr wejściowy do przepływu (3), który wywołuje LUIS, a następnie wylicza, czy problem dotyczy oprogramowania (4) czy sprzętu.

Krótkie podsumowanie

Osobiście jestem pod ogromnym wrażeniem, jak łatwo jest dzisiaj stworzyć naprawdę działającego bota konwersacyjnego, z którego firmy mogą korzystać zarówno do celów wewnętrznych, jak i zewnętrznych.

Wciąż jednak głównym celem projektantów powinno być tworzenie rozmów, aby użytkownicy mogli brać w nich udział w jak najbardziej naturalny sposób. A to oznacza zarówno kanał, w którym uzyskują do nich dostęp (Teams bot, Facebook bot, czat online), a także sposób prowadzenia rozmów. Im mniej bot zadaje pytań „krok po kroku”, zamiast tego będąc w stanie zrozumieć język naturalny, tym mniej frustracji spowoduje to po stronie użytkownika.

Mam nadzieję, że te informacje okażą się dla Ciebie przydatne. Zostaw komentarz, jeśli masz jakieś pytania!


Tomasz Poszytek

Cześć! Nazywam się Tomasz. Jestem ekspertem w dziedzinie automatyzacji procesów i budowaniu rozwiązań dla biznesu z użyciem Power Platform. Jestem Microsoft MVP i Nintex vTE.

Brak komentarzy

Wyślij komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.