Chatbot z Pytonem : Wizualizacja i modyfikacja formatu danych JSON firmy Rasa

https://szkolazpieklarodem.pl/

W tej sekcji wykorzystamy narzędzie o nazwie Rasa NLU trainer do wizualizacji naszych danych. (tj. dane, które stworzyliśmy do tej pory). To narzędzie pomaga nam również w opisywania danych. Jeśli pamiętasz, kiedy interfejs Dialogflow został wyjaśniony w rozdziale 3, zdefiniowanie jednostek, ich nazw i typów było niezwykle łatwe. Zrobimy to samo, korzystając z narzędzia typu open source. Trener Rasa NLU to bardzo ładne i przydatne narzędzie do edycji naszych danych treningowych bezpośrednio z poziomu naszej przeglądarki. Obsługa danych JSON jest trudna i może prowadzić do błędów. Dzięki temu poręcznemu narzędziu możemy łatwo dodać więcej przykładów do naszych danych treningowych lub edytować już istniejące. Oszczędza to dużo czasu na ręcznym dodawaniu adnotacji do danych. rasa-nlu-trainer jest narzędziem opartym na JavaScript, więc musielibyśmy zainstalować node.js, aby uruchomić to narzędzie w naszym systemie. Wykonanie tej czynności nie zajmie więcej niż 5 minut. Skonfigurujmy to, wykonując następujące kroki:

  1. Przejdź do https://www.npmjs.com/get-npm i pobierz plik node.js.
  2. Zainstaluj pakiet w swoim systemie zgodnie z instrukcjami na stronie internetowej. Po zainstalowaniu przejdź do nowego terminala/interfejsu wiersza poleceń w swoim systemie i wpisz „npm”, aby sprawdzić, czy działa. Zainstalowałem wersję LTS 8.11.4. Po zainstalowaniu uruchom następującą komendę, aby zainstalować rasa-nlu-trainer:

sudo npm i -g rasa-nlu-trainer

Po pomyślnej instalacji tego polecenia zobaczysz dzienniki podobne do następujących:

[fsevents] Success: “/usr/local/lib/node_modules/rasa-nlu-trainer/

node_modules/fsevents/lib/binding/Release/node-v57-darwin-x64/fse.node” already installed

Pass –update-binary to reinstall or –build-from-source to recompile

npm WARN slick-carousel@1.8.1 requires a peer of jquery@>=1.8.0 but none is installed. You must install peer dependencies yourself.

+ rasa-nlu-trainer@0.2.7

added 492 packages in 10.14s

Nawet jeśli Twoja wiadomość nie wygląda tak, o ile nie powoduje żadnych błędów, nie martw się. Za chwilę dowiemy się, czy nasz rasa-nlu-trainer został pomyślnie zainstalowany i działa dobrze. Przejdźmy do naszego folderu danych, który utworzyliśmy wcześniej w naszym terminalu i uruchommy następującą komendę:

train rasa-nlu

Wpisanie tego polecenia uruchomi lokalny serwer na porcie 55703 i otworzy go w domyślnej przeglądarce. Będzie to wyglądać mniej więcej tak, jak na rysunku

Jak widać, wszystkie nasze istniejące dane z pliku data.json są wybierane przez to niesamowite narzędzie do usunięcia lub edycji. Z tego miejsca możemy także dodawać nowe przykłady i będziemy stale rozszerzać plik data.json. Sugerowałbym dodanie większej ilości danych do swoich zamiarów w celu lepszego szkolenia modelu. Możesz pobrać ten plik data.json w kodzie źródłowym ZIP lub w repozytorium dostarczonym przez wydawcę, jeśli próbujesz zbudować tego samego chatbota, co opisano w tym rozdziale. Tak jak w Rozdziale 3 wybraliśmy encje w wyrażeniach, aby je zdefiniować przy użyciu Dialogflow, możemy zrobić to samo za pomocą tego narzędzia i nadać nazwy naszym encjam do późniejszej analizy. Zatem kliknij przycisk przełączania przykładu, wybierz tekst i dodaj obiekt, nadając mu nazwę. Dodałem od pięciu do sześciu przykładów wypowiedzi w każdej ze zdefiniowanych przeze mnie intencji. Im więcej przykładów dodamy, tym lepiej będzie można wytrenować model i zapewnić większą dokładność. Jeśli teraz spojrzysz na plik data.json, automatycznie dodanych zostanie do niego więcej przykładów. Zatem śmiało zweryfikuj plik data.json, aby sprawdzić, czy masz wszystkie dodane przykłady z interfejsu użytkownika rasa-nlu-trainer.

W pliku data.json zauważysz także, że encje, które mogłeś zdefiniować za pomocą interfejsu użytkownika rasa-nlu-trainer, są przechwytywane na liście common_examples jako posiadające klucze początku i końca, które informują model, w którym momencie dana wartość encji zaczyna się w przykładzie i kiedy się kończy. Ten sam obiekt słownika przedstawia także wartość encji i nazwę zdefiniowanej przez nas encji. W naszym przykładzie wygląda to następująco:

{

“text”: “19-01”,

“intent”: “dob_intent”,

“entities”: [

{

“start”: 0,

“end”: 2,

“value”: “19”,

“entity”: “DD”

},

{

“start”: 3,

“end”: 5,

“value”: “01”,

“entity”: “MM”

}

]

}

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *