Budowanie botów

Jak efektywnie trenować model NLU? 10 prostych sposobów

Spis treści

W naszym Poradniku Budowania Botów wielokrotnie podkreślaliśmy, jak kluczową rolę w sukcesie chatbota pełni jego odpowiednie trenowanie oraz jak przekłada się to na sukces Twojej marki. Nic dziwnego zatem, że w dzisiejszym artykule kończącym naszą serię poruszymy ten temat jeszcze raz. Zgłębimy wszystkie szczegóły trenowania modelu NLU, zdradzimy tajniki dobrych praktyk i postaramy się nakierować Cię na prostą drogę do sukcesu!

NLU i NLP – Zrozumienie procesów

Po pierwsze, zajmijmy się kwestią NLU i NLP – co różni oba te pojęcia? Zarówno one jak i ich rozwinięcia są do siebie zbliżone, ale zanim przejdziemy dalej, musimy omówić to, co je różni.

Przetwarzanie języka naturalnego (ang. natural language processing, NLP) to ogólna teoria zajmująca się przetwarzaniem, kategoryzacją i analizą języka naturalnego. W ramy NLP wpisuje się subdyscyplina zwana NLU (ang. Natural language understanding) skupiająca się bardziej na semantyce i wyciąganiu znaczenia z języka. Wiąże się to z rozumieniem relacji pomiędzy słowami, konceptami i całymi zdaniami. Zadaniem technologii NLU jest nie tylko analiza symboli i struktu w tekście, ale również rozumienie znaczenia i kontekstu stanowiącego jego otoczkę.

W gruncie rzeczy NLU służy do osiągniecia wyższego poziomu rozumienia języka poprzez analizę sentymentów czy sumaryzację, ponieważ rozumienie to jest niezbędne do wykonywania tych bardziej zaawansowanych działań.

Kluczowe komponenty NLU

By w pełni zrozumieć zasady działania NLU, wpierw musimy pochylić się nad kilkoma podstawowymi definicjami, które będą przewijać się przez resztę artykułu.

  • Intencje: ogólnie rzecz biorąc, klienci wchodzą w interakcję z botem, ponieważ potrzebują uzyskać pomoc w jakiejś sprawie – nazywamy to ich intencją. Mogą one obejmować weryfikowanie informacji lub rezerwowanie usług lub zabiegów, lecz naszym punktem wyjścia przy doskonaleniu NLU powinno być ustalenie, które intencje są już znane, które powinniśmy dodać, a które okazały się nieskuteczne.
  • Frazy (lub wyrażenia): tutaj chodzi o dane językowe przesyłane przez użytkowników w celu komunikowania się z chatbotem lub botem głosowym. Jak już wspomnieliśmy w naszym artykule o wielojęzycznych chatbotach, warto zastanowić się nad wykorzystaniem ChatuGPT do wygenerowania dużej ilości fraz, jakimi posługują się Twoi klienci, by znacznie przyspieszyć początkowy etap prac.
  • Encje: są to części fraz o dużym znaczeniu semantycznym. To tutaj rozumienie języka naturalnego wysuwa się na prowadzenie, ponieważ rozpoznawanie jednostek i przypisywanie im zaprogramowanych w modelu NLU wartości czyni je znacznie bardziej zaawansowanym rozwiązaniem w porównaniu z NLP. Encje pozwalają na zrozumienie kluczowych szczegółów z frazy lub zdania, co z kolei pozwala technologii na przydzielenie ich do danej kategorii, jak np. imię czy lokalizacja.
  • Zmienne: wiążą się ściśle z jednostkami, ponieważ jakakolwiek niosąca znaczenie jednostka (taka jak imię czy data) wprowadzona przez użytkownika może zostać zapisana przez chatbota do wykorzystania jej w przyszłości, by zwiększyć personalizację usługi (np. encja: imię, zmienna: Andrew, lub encja: lokalizacja, zmienna: Londyn).

Jak trenować NLU

Mając za sobą fundamenty, możemy przejść do sedna i odpowiedzieć na główne pytanie: jak można wyszkolić nasz model rozumienia języka naturalnego?

Trenowanie NLU wymaga skompilowania zestawu danych treningowych złożonego z przykładów użycia języka, by konwersacyjna sztuczna inteligencja potrafiła zrozumieć Twoich użytkowników. Taki zestaw danych powinien składać się z fraz, encjii zmiennych, które odzwierciedlają język, który model musi zrozumieć.

Proces ten wiąże się z pewną koniecznością dostrajania. Twój początkowy zestaw danych do trenowania NLU z pewnością nie będzie wystarczający. Wraz z poszerzaniem zebranych informacji na temat tego, co działa, a co nie, kontynuując aktualizację i rozszerzanie zestawu danych, dostrzeżesz luki w wynikach swojego modelu. Potem, monitorując swojego chatbota, stale go oceniając i na bieżąco aktualizując, stopniowo zwiększysz jego zdolność rozumienia języka, z czasem czyniąc go skuteczniejszym.

Na początku musimy określić intencje, jakie chcemy, by nasz model potrafił zrozumieć. Reprezentują one cele, jakie użytkownicy chcą osiągnąć rozmawiając z Twoim chatbotem AI. Uniwersalne przykłady intencji to „zamówienie”, „płatność”, czy „zwrot”. Następnie trzeba podać frazy, za którymi stoją te intencje. Jeśli prowadzisz pizzerię, intencja „zamówienie” potrzebować będzie fraz typu „Chcę zamówić pizzę serową”, „Chciałbym zamówić pizzę z serem” i tak dalej, ponieważ istnieje wiele sposobów wyrażenia chęci zamówienia serowej pizzy.

Na podstawie listy fraz określisz także encji, takie jak „rodzaj_pizzy”, który definiuje różne rodzaje pizzy, jakie mogą zamawiać klienci. Zamiast wyliczać wszystkie rodzaje po kolei wystarczy zdefiniować encję i wypisać przykładowe wartości. W taki sposób model NLU zrozumie i odpowiednio przetworzy dane wejściowe użytkowników, a my nie musimy wypisywać ręcznie każdego rodzaju sprzedawanej pizzy po kolei.

Jak działa model NLU.

Jak działa model NLU.

Najlepsze praktyki w trenowaniu modeli NLU

1. Zacznij od wstępnej analizy

Do skorzystania z pierwszej wskazówki nie będzie Ci potrzebny żaden interfejs do projektowania chatbotów. Do tego trzeba jedynie tablicy do pisania, albo nawet kartki i długopisu. Przed dodaniem intencji, encji i zmiennych na Twojej platformie do budowania botów, warto sporządzić listę działań, o wykonanie których klienci mogą prosić Twojego bota. Taka burza mózgów pozwala uwzględnić wszystkie niezbędne podstawy, a zarazem kładzie podwaliny pod późniejszą optymalizację. Uważaj jednak, by nadmiernie nie uściślić tych zadań – w ten sposób ryzykujesz tzw. overfitting, który omówimy już za moment.

2. Dopasuj intencje do ogólnych działań, a encje do konkretnych sytuacji

Zawsze najlepiej przyjmować wielopoziomowe podejście. Zaprojektowane intencje powinny funkcjonować niczym seria lejków, a przyporządkowane im encje niczym drobne sitka przesiewające konkretnego rodzaju informacje. Chatbot stworzony w ten sposób uprzedza zmiany w sposobie korzystania z Twoich usług i pozwala zwinniej reagować na aktualizacje. Niezależnie od tego, jak wymyślny i szczegółowy będzie Twój początkowy projekt, nierzadko zdarza się, że spora część intencji staje się z czasem zbędna, zwłaszcza, jeśli były one zbyt rozdrobnione.

Najlepiej stworzyć 15–20 fraz dla każdej intencji. Liczba ta jak widać nie jest przesadnie wysoka, i nie bez powodu. Zmiany w intencjach wiążą się z koniecznością zmiany powiązanych z nimi fraz, co może skutkować potencjalnym ogromem pracy. Encje nie mają aż tak surowych wymagań ze względu na ich szczegółowość, a w konsekwencji zmienianie ich jest prostsze i nie wiąże się z ryzykiem efektu domina, które powali cały nasz system. Możemy zatem utworzyć ich tyle, ile potrzebujemy.

Poniżej znajdziesz krótki przykład ilustrujący dwa warianty infrastruktury intencji, bezpieczną i „niebezpieczną”:

 

Not Safe Safe
activate card, activate account activate (+ entities: card, account)
remind login, recover password recover (+ entities: login password)
loan view, change (+ entities: loan, details) (+ entities: loan, repayment)
payment view, help (+ entities: payments, methods) (+ entities: payment, failure)

 

 

3. Unikaj nadmiernie zbliżonych do siebie intencji

Z czasem napotkasz na drodze sytuacje, gdzie wydawać się będzie, że jedną intencję najlepiej rozdzielić na dwie lub więcej. „Płatność_kredytowa” i „płatność_debetowa” to klasyczny przykład. Lecz ta szlachetna próba inteligentnego przewidywania przyszłych problemów zanim się jeszcze zmaterializują może przypadkiem przysporzyć modelowi więcej trudności w odpowiednim rozpoznawaniu intencji i odróżnianiu ich w oparciu o drobne niuanse. W takich przypadkach najlepiej nie unosić się dumą i złączyć te intencje w jedną, a specyficzność konkretnych scenariuszy moderować za pomocą dodatkowych encji.

4. Nie twórz zbyt skomplikowanych fraz

To jasne, że nie każdy klient będzie potrafił elokwentnie przekazać swoje myśli w jasny i zwięzły sposób. Jednakże wszelkie próby uwzględnienia tego w modelu z użyciem zbyt długich lub prozodyjnych fraz wcale nie pomogą Twojemu NLU w przypisaniu odpowiednich intencji.

To, że jeden klient powiedział kiedyś „Dzwonię, ponieważ mam kartę kredytową i, no, chciałem się w sumie dowiedzieć, czy jest ona jakoś ubezpieczona, ale nic na ten temat nie znalazłem, czy możesz to dla mnie sprawdzić?” nie oznacza, że trzeba taką wypowiedzią zaśmiecać model NLU. „Czy możesz sprawdzić, czy moja karta kredytowa ma jakieś ubezpieczenie?” jest znacznie lepszą frazą treningową.  Proste wprowadzenie okraszone słowami kluczowymi i czasownikami niosącymi znaczenie, takimi jak „karta kredytowa”, „ubezpieczenie”, „otworzyć”, „konto walutowe” czy „online” stanowią klucz do wydajności NLU zdolnego do precyzyjnego wydobywania znaczenia z każdej frazy, nawet jeśli poprzedza ją wybujała preambuła. W 99% przypadków, bycie zwięzłym to najlepsze wyjście.

5. Kiedy możesz, korzystaj z wcześniej zdefiniowanych encji

Wykorzystywanie uprzednio zdefiniowanych encji to niezawodna metoda na zaoszczędzenie czasu i zmniejszenie ryzyka, że popełnisz błąd przy tworzeniu skomplikowanych encji. Na przykład, uprzednio zdefiniowana encja „sys.Państwa” automatycznie zawierać będzie wszystkie istniejące na świecie państwa, zwalniając Cię z konieczności własnoręcznego wypisania każdego z nich. Pracuj mądrzej, nie ciężej.

Skoro mówimy już o mądrej pracy, jeśli chcesz uruchomić swój NLU tak szybko, jak to możliwe, SentiOne Automate oferuje sprawdzone, wbudowane encje, które z łatwością wprowadzisz do swojego modelu. Nie trać czasu na zbędną pracę!

6. Upewnij się, że intencje i encje są od siebie semantycznie odmienne

Początkujący designerzy mogą szybko pogubić się w tych pojęciach, a jeśli te dwa elementy nie zostaną zaprogramowane z odpowiednim poziomem rozróżnienia semantycznego, Twoje NLU po prostu może nie działać poprawnie.

Aby nie zmylić rozumienia języka naturalnego Twojego chatbota, intencja (cel użytkownika) powinna być oznaczona jako „podajpogodę” lub „podajprognozę”, a twoje encje (informacja która uzupełnia intencję) powinny być oznaczone jako „czas” (np. dzisiaj),  „lokalizacja” (np. Londyn), lub “stan_pogody” (np. deszcz). Nie powinieneś/powinnaś  nazywać swojej encji tylko mianem “pogody”, ponieważ wtedy nie byłaby ona semantycznie różna od intencji (“podajpogodę”).

7. Ujednolicaj nazewnictwo

Niechlujny kod nie nadaje się do użytku. Dotyczy to także Twojej infrastruktury NLU. Jasne i konsekwentne nazewnictwo encji i intencji zapewnia, że nie dojdzie do nieporozumień, zwłaszcza, gdy na projekcie pracuje wielu programistów i bot designerów. Zasadniczo najlepiej używać znaków podkreślenia i/lub zapisywać pierwszą część każdego słowa wielką literą, a także unikać spacji i myślników w nazwach. Spójrz na poniższy przykład:

Default context FAQ Small talk Processes
booking_new
booking_change
bot_greetings faq_insurance smalltalk_age booking_cancel
bot_bye faq_loan smalltalk_creator card_new
bot_functions faq_petpolicy smalltalk_joke card_activate
faq_payment smalltalk_insult card_block
appointment_new
appointment_cancel

8. Przygotuj odpowiednio dużo wysokiej jakości danych testowych

Bardzo ważne jest, aby stosować odpowiednią mieszankę testów jakościowych i ilościowych Zrównoważona metodyka zakłada, że zestawy danych muszą obejmować szeroki zakres rozmów, by być statystycznie miarodajne. Znowu, najlepiej celować w 15–20 fraz na każdą intencję. Jeśli chodzi o encje, decyzja należy do Ciebie.

Co do jakości, analizowanie transkrypcji z rozmów użytkowników oraz tzw. conversation mining (czyli przeglądanie stron i forów internetowych w celu zapoznania się z żargonem użytkowników) dadzą najlepszy wgląd we frazy używane przez Twoich klientów i zapytania przesyłane do chatbota. The more natural-sounding you make your NLU, the less hiccups you can expect.

9. Po implementacji bota ciągle ewoluuj swoje frazy

Sprawdzenie tego, jak bot radzi sobie po uruchomieniu go to prawdopodobnie najistotniejsze źródło wiedzy. Pozwala Ci na szybkie zmierzenie tego, czy użytkownicy rzeczywiście wykorzystują zaprogramowane przez Ciebie wyrażenia, a także na błyskawiczne zmiany celem usprawnienia rozpoznawania intencji. Jak już wspomnieliśmy, stałe dopracowywanie chatbota to nie tylko dobra praktyka, to wymóg dla biznesów pragnących nadążać za potrzebami klientów.

10. Strzeż się overfittingu

Overfitting występuje, gdy model nie potrafi generalizować i dostosowuje się zbyt dokładnie do zestawu treningowego. Gdy podejmujesz wysiłki mające na celu poprawę  rozumienia języka naturalnego (NLU) Twojego bota, łatwo skupić się na jednym konkretnym problemie, który jest nisko oceniany pod względem rozpoznawania intencji. Warto jednak skupić się na ogóle zamiast gonić bezmyślnie za wiatrem i ryzykować wydajnością całej reszty.

By zapobiec overfittingowi używaj zróżnicowanych danych treningowych i szkól bota, by rozumiał nawet najdziwniejsze sposoby mówienia lub pisania, nie dostosowując jednak całego modelu do specyficznych zachowań.

Aby zapobiec overfittingowi, wprowadź zróżnicowane dane treningowe (frazy, struktury zdania, terminologię, a nawet synonimy oparte na tym, w jaki sposób ludzie zadają pytania), aby bot mógł zrozumieć Twoich użytkowników, bez dostosowywania całego modelu do jednego konkretnego manieryzmu lub sytuacji.

SentiOne Automate – Najłatwiejszy sposób na trenowanie NLU

Mamy nadzieję, że artykuł ten pokazał Ci kilka przydatnych rad i wskazał właściwą drogę. Jeśli trudno Ci zorientować się w ogromie nowej wiedzy i potrzebujesz partnera, który przeprowadzi Cię przez cały proces dopracowywania modelu intencji, nasz zespół jest gotowy, by udzielić Ci pomocy. Algorytmy naszego zaawansowanego silnika rozumienia języka naturalnego zostały przeszkolone na ponad 30 miliardach internetowych rozmów, dzięki czemu osiągają 94% skuteczność w rozpoznawaniu intencji. Co więcej, pomożemy Ci wyszkolić nowe boty wykorzystując dodatkowe frazy z Twojej branży oraz już zgromadzone konwersacje, by chatbot był dopasowany do potrzeb Twojej firmy. Skontaktuj się z naszym zespołem i sprawdź, co mogą zaoferować Ci nasi eksperci.


Podsumowanie artykułu

Dowiedz się, jak skutecznie trenować swój model NLU dzięki 10 prostym krokom. Artykuł podkreśla znaczenie trenowania twojego chatbota dla jego sukcesu i bada różnicę między NLU a NLP. Omawia kluczowe komponenty NLU, takie jak intencje, frazy, encje i zmienne, wyjaśniając ich role w rozumieniu języka. Proces treningu obejmuje kompilowanie zestawu danych z przykładami języka, doskonalenie i rozszerzanie zestawu danych w czasie, aby poprawić wydajność modelu. Najlepsze praktyki obejmują: rozpoczęcie od wstępnej analizy,upewnienie się, że intencje i encje są odrębne, korzystanie z predefiniowanych encji i unikanie zbyt skomplikowanych fraz.