Chatbot z Pytonem : Interaktywna nauka

https://szkolazpieklarodem.pl/

Do tej pory mówiliśmy o interaktywnym nauczaniu w kawałkach, ale nadszedł czas, aby napisać jakiś kod i to zrobić. Interaktywne uczenie się to jedna z najfajniejszych funkcji Rasy, dzięki której nauka uczenia maszynowego staje się przyjemna i łatwa. Są dwie części: w pierwszej uczymy model, podając nasz początkowy zbiór danych przy użyciu różnych polityk, a w drugiej części testujemy model, poprawiamy go i ponownie szkolimy w sposób interaktywny.

Trenowanie modelu agenta Chatbota

Utwórzmy nowy plik o nazwie train_initialize.py w naszym głównym katalogu projektu. Zawartość train_initialize.py wygląda następująco:

from __future__ import absolute_import

from __future__ import division

from __future__ import print_function

from __future__ import unicode_literals

from rasa_core import utils

from rasa_core.agent import Agent

from rasa_core.policies.keras_policy import KerasPolicy

from rasa_core.policies.memoization import MemoizationPolicy

from rasa_core.policies.sklearn_policy import SklearnPolicy

if __name__ == ‘__main__’:

utils.configure_colored_logging(loglevel=”DEBUG”)

training_data_file = ‘./data/stories.md’

model_path = ‘./models/dialogue’

agent = Agent(“horoscope_domain.yml”,

policies=[MemoizationPolicy(), KerasPolicy()])

training_data = agent.load_data(training_data_file)

agent.train(

training_data,

augmentation_factor=50,

epochs=500,

batch_size=10,

validation_split=0.2

)

agent.persist(model_path)

To jest kod, który zapisujemy w pliku train_initialize.py. Teraz, zanim przejdziemy do następnego pliku kodu, spróbujmy najpierw zrozumieć zawarte w nim ważne punkty.

  1. Najpierw importujemy kilka metod z modułu __future__. Przyszłe instrukcje w Pythonie mają specjalne zastosowanie, zmieniają sposób analizowania modułu Pythona i zmieniają sposób, w jaki zachowuje się istniejąca metoda.

Curious personality ? Try the below code in your python

interpreter

from __future__ import braces

  1. Zaimportuj metodę utils z modułów rasa_core, aby skonfigurować rejestrowanie.
  2. Zaimportuj klasę agenta z modułu agenta, aby utworzyć obiekt agenta.
  3. KerasPolicy, MemorizationPolicy zostaną przekazane jako parametry polityk do klasy agenta.

5.configure_colored_logging: Metoda narzędziowa zdefiniowana w utils.py do kolorowego rejestrowania przy użyciu pakietu colorlogs Pythona.

  1. Agent: Klasa zdefiniowana przez Rasa, która zapewnia interfejs umożliwiający wykorzystanie najważniejszych funkcjonalności Rasa Core, takich jak szkolenie, obsługa komunikatów, ładowanie modelu okna dialogowego, uzyskiwanie następnej akcji i obsługa kanału.
  2. loading_data: ładuje dane treningowe z podanej ścieżki.
  3. pociąg: szkoli daną politykę/zespół polityk korzystając z danych z udostępnionego pliku.
  4. Training_data: obiekt zwrócony metodą Load_data. Lista DialogueStateTracker. To nic innego jak nasz plik danych treningowych.
  5. augmentation_factor: informuje Rasę, ile fikcyjnych historii należy utworzyć, biorąc pod uwagę nasz początkowy zestaw historii. Współczynnik 10x to heurystyka rund wzmacniających dla generatora danych szkoleniowych.
  6. Epoki: 1 epoka to pełny cykl szkoleniowy na całym zbiorze danych uczących. Całkowita liczba przejść danych szkoleniowych do przodu i do tyłu.
  7. rozmiar_wsadu: informuje o ilości próbki szkoleniowej do wykorzystania w każdym przebiegu. 100 przykładów o wielkości partii wynoszącej 10 zajmie 10 epok, aby przejrzeć cały zbiór danych.
  8. validation_split: procent danych służący do sprawdzenia bezstronnej dokładności modelu.
  9. utrwalanie: ta metoda służy do utrwalania obiektu agenta w danym katalogu w celu ponownego użycia.

W tym momencie powinno być już całkiem jasne, co robi każda metoda i co dzieje się w kodzie. Zanim przejdziemy do uruchomienia skryptu, upewnij się, że masz zainstalowaną bibliotekę rasa_core przed wykonaniem tego skryptu. Możesz zainstalować rasa_core za pomocą następującego polecenia:

pip zainstaluj rasa_core==0.11.1

Jeśli podążasz za przykładem chatbota z tej książki, upewnij się, że zainstalowałeś tylko wyżej wymienioną wersję, ponieważ Rasa może nie być kompatybilna wstecz. Szybko opracowują nowsze i bardziej zoptymalizowane metody.

NAJNOWSZY RASA_CORE

Możesz także zainstalować najnowszą wersję rasa_core z repozytorium Github. Wystarczy wykonać następujący zestaw poleceń, który pobierze najnowszy kod z githuba bezpośrednio przed instalacją.

git clone https://github.com/RasaHQ/rasa_core.git

cd rasa_core

pip install -r requirements.txt

pip install -e

Spróbujmy uruchomić ten plik kodu, aby wytrenować nasz model zgodnie z podanymi parametrami.

$python train_initialize.py

Możesz także uruchomić ten skrypt z samego Notatnika Jupyter za pomocą magicznego polecenia Jupytera, jak pokazano tutaj:

!python train_initialize.py #Use python3 if you have installed rasa for python3

Wytrenowanie modelu na tak małym zbiorze danych jak nasz powinno zająć około 25–30 sekund. Dodałem SklearnPolicy do listy polityk wraz z MemorizationPolicy i KerasPolicy, aby wytrenować mój model. Różne polityki mają swoje zalety. Przeczytaj więcej na ich temat, aby dowiedzieć się, które z nich mogą działać lepiej w Twoim przypadku; dla mojego zbioru danych wydaje się, że czasami SklearnPolicy działa lepiej niż KerasPolicy. Po zakończeniu wykonywania skryptu powinieneś zobaczyć kilka pomyślnych komunikatów, takich jak te:

2018-08-30 04:24:31 INFO rasa_core.policies.keras_policy – Done fitting

keras policy model

2018-08-30 04:24:31 INFO rasa_core.featurizers – Creating states and

action examples from collected trackers (by MaxHistoryTrackerFeaturizer)…

Processed trackers: 100%|████████| 96/96 [00:00<00:00,

898.31it/s, # actions=75]

2018-08-30 04:24:31 INFO rasa_core.featurizers – Created 75 action

examples.

2018-08-30 04:24:31 INFO rasa_core.policies.sklearn_policy – Done

fitting sklearn policy model

2018-08-30 04:24:31 INFO rasa_core.agent – Model directory models/nlu

exists and contains old model files. All files will be overwritten.

2018-08-30 04:24:31 INFO rasa_core.agent – Persisted model to

‘/Users/sumit/apress_all/Chapter IV/horoscope_bot/models/nlu’

You will also find a couple of folders created as per their model name. Make sure

you have them in the model_path you gave in the script. Below are the folders/files I see

inside my model_path folder.

policy_0_MemoizationPolicy

policy_1_KerasPolicy

policy_2_SklearnPolicy

domain.json

domain.yml

Policy_metadata.json

Jeśli sprawdziłeś, że Twój model pomyślnie zakończył wykonanie i utrwalił go w systemie lokalnym, możemy przejść do kolejnego etapu interaktywnego szkolenia.

Dodaj komentarz

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