Chatbot z Pytonem : Pisanie kodu w języku Python w celu uczenia modelu i przewidywania

https://szkolazpieklarodem.pl/

Otwórzmy nowy plik .ipynb i zacznijmy pisać nasz kod. Nazwijmy ipynb rasa-nlu.ipynb. Upewnij się, że pomyślnie zainstalowałeś rasa-nlu==0.13.2 dla używanej wersji Pythona. Poniżej przedstawiono, jak wygląda nasz kod, gdy korzystamy z plików data.json i config.json w języku Python i trenujemy model przy użyciu potoku tensorflow_embedding.

from rasa_nlu.training_data import load_data

from rasa_nlu.model import Trainer

from rasa_nlu import config

from rasa_nlu.model import Interpreter

def train_horoscopebot(data_json, config_file, model_dir):

training_data = load_data(data_json)

trainer = Trainer(config.load(config_file))

trainer.train(training_data)

model_directory = trainer.persist(model_dir, fixed_model_name =

‘horoscopebot’)

def predict_intent(text):

interpreter = Interpreter.load(‘./models/nlu/default/horoscopebot’)

print(interpreter.parse(text))

W pierwszej części kodu importujemy wszystkie potrzebne biblioteki z pakietu rasa_nlu. Następnie definiujemy dwie metody zwane train_horoskopbot i przewidywanie_intent, gdzie pierwsza metoda szkoli model na podstawie danych, pliku konfiguracyjnego i katalogu_modelu (miejsca do przechowywania modeli), a metoda przewidywania_intent wykorzystuje model Interpretera z rasa_nlu do załadowania wstępnie wyszkolonych plików modelu i daje użytkownikowi możliwość przewidzenia nowych przykładów tekstu.

Per-āa : Leczenie pacjentów

https://szkolazpieklarodem.pl/

Egipscy lekarze byli bardziej zainteresowani leczeniem dolegliwości niż zapobieganiem chorobom. Z nielicznych zachowanych zapisów dotyczących metod profilaktycznych większość wydaje się dość prosta, na przykład regularne kąpiele. Lekarze zalecili noszenie makijażu oczu, aby odbijać słońce od wrażliwej okolicy oczu i zapobiegać przedostawaniu się owadów do oka. Doradzili również palenie kadzideł (więcej informacji na temat aromaterapii w części „Metody alternatywne” w dalszej części tego rozdziału), aby pomóc w odkażaniu domów i świątyń oraz w utrzymaniu z dala przenoszących malarię mchów. Jeśli dolegliwość była oczywista, jak rana lub złamana kość, przepisane lekarstwo było czysto lecznicze. Na przykład, niezainfekowane rany zamykano przez zszycie za pomocą igły i nici, a surowe mięso umieszczano na ranach pierwszego dnia, aby wspomóc gojenie. (Metoda ta jest dziś znana jako skuteczny sposób na zatrzymanie krwawienia.) Chociaż lekarze zwracali się do bogów o pomoc w trudnych przypadkach, mieli niezwykłe zrozumienie ludzkiej anatomii, dzięki praktyce mumifikacji. Edwin Smith Papirus zajmuje się technikami chirurgicznymi, takimi jak amputacje, szycie i usuwanie nieuczciwych przedmiotów z ciała (takich jak strzały). Jeśli dolegliwość była wewnętrzna bez wyraźnej przyczyny, uważano, że ma ona nadprzyrodzone pochodzenie i bogowie zwracali się o lekarstwo.

Chatbot z Pytonem : Szablony

https://szkolazpieklarodem.pl/

Szablony to słowo, które na pewno choć raz w życiu słyszałeś, szukając szablonu do wysłania e-maila, przygotowania dokumentu, zbudowania strony portfolio czy śledzenia procesu.

W wypowiedziach używane są szablony w języku Rasa. Szablon wypowiedzi zawiera zestaw gotowego tekstu, który zostanie wysłany do użytkownika po uruchomieniu jakiejś akcji. Mając taką samą nazwę akcji jak wypowiedź lub akcję z niestandardowym kodem, możemy wysłać do użytkownika sformatowany komunikat w szablonach. Prosta reprezentacja szablonów w pliku domeny może wyglądać następująco:

templates:

utter_greet:

– “hello {name}!” # name can be filled by a slot of same name or by

custom code

utter_goodbye:

– “goodbye”

– “take care bye” # multiple templates allow the bot to randomly pick

from them

utter_default:

– “Sorry, I didn’t get that.”

Teraz, gdy przeszliśmy przez trzy koncepcje akcji, miejsc i szablonów i wiemy już, jakie są intencje i byty w ramach naszej wiedzy z rozdziału 3, jesteśmy teraz gotowi, aby zagłębić się w rasę i zacząć pisać kod dla naszego pierwszy chatbot.

Per-āa : Badanie pacjentów

https://szkolazpieklarodem.pl/

Było więcej lekarzy mężczyzn niż kobiet, więc zarówno mężczyźni, jak i kobiety mogli odwiedzać lekarzy mężczyzn, chociaż zapisy na ten temat milczą. Jeden z medycznych papirusów wskazuje, że lekarze-mężczyźni zajmowali się problemami kobiecymi. Papirus Ebersa (papirus medyczny) opisuje szczegółowo procedurę badania pacjenta. Ta metoda diagnozy jest podobna do współczesnej praktyki. Lekarz rozpoczął badanie od wywiadu, aby spróbować zrozumieć objawy, na które cierpiała pacjentka. Lekarz następnie monitorował puls pacjenta i prowadził badania wydzielin ustrojowych, takich jak mocz, stolec, flegma i krew, odnotowując wszelkie nieprawidłowości. Następnie lekarz zbadał odruchy. Po zakończeniu wszystkich badań postawiono diagnozę. Ponieważ nie wszystkie choroby miały nazwy, diagnoza była zwykle tylko stwierdzeniem, czy lekarz spróbuje wyleczyć pacjenta. Diagnoza miała trzy formy:

* Dolegliwość, którą wyleczę

* Dolegliwość, z którą będę walczyć

* Dolegliwość nieuleczalna

Tylko 14 z 48 przypadków na papirusie Ebersa uznano za beznadziejne i dlatego nieuleczalne. Spośród pozostałych 34 pacjentów lekarze myśleli, że po prostu spróbują i zobaczą, co się stanie. Następnie przepisali to, co uważali za najbardziej odpowiednie. Recepty były bardzo szczegółowe w odniesieniu do dawki i czasu trwania, a wszystkie zostały dostosowane do wieku, dając dziecku mniejszą dawkę niż dorosły.

Chatbot z Pytonem : Działanie

https://szkolazpieklarodem.pl/

Jak sama nazwa wskazuje, jest to konkretne działanie, które można podjąć. Zgodnie z dokumentacją Rasa jest napisane: „Następna akcja, którą należy podjąć w odpowiedzi na stan okna dialogowego”. Przykładowo, jeśli użytkownik zapyta o horoskop na dzisiaj, nasz bot może wykonać akcję „GetTodaysHoroskop”. Zobaczmy jak wyglądałaby akcja „GetTodaysHoroskop” w formie kodu.

from rasa_core.actions import Action

from rasa_core.events import SlotSet

class GetTodaysHoroscope(Action):

def name(self):

return “get_todays_horoscope”

def run(self, dispatcher, tracker, domain):

# type: (Dispatcher, DialogueStateTracker, Domain) -> List[Event]

user_horoscope_sign = tracker.get_slot(‘horoscope_sign’)

“””Write your logic to get today’s horoscope details

for the given Horoscope sign based on some API calls

or retrieval from the database”””

return [SlotSet(“horoscope_sign”, user_horoscope_sign)]

Metoda name zwraca nazwę akcji, do której będziemy odnosić się w pliku domeny jako niestandardową nazwę metody.

Metoda run wykonuje główne zadanie polegające na wykonaniu akcji — to znaczy, że tutaj znajduje się podstawowa logika biznesowa. Jak widać, pobiera trzy parametry: wysyłkę, moduł śledzący i domenę. Przyjrzyjmy się kolejno tym parametrom:

  • dyspozytor: dyspozytor służy do wysyłania wiadomości do naszych użytkowników. Aby osiągnąć to samo, możemy użyć funkcji dipatcher.utter_message().
  • moduł śledzący: moduł śledzący stan bieżącego użytkownika. Dostęp do wartości slotów możemy uzyskać za pomocą tracker.get_slot(nazwa_slotu), a aby uzyskać najnowszą wiadomość użytkownika, możemy użyć tracker.latest_message.text.
  • domena: domena bota. Bardziej szczegółowo omówimy tę domenę w dalszej części rozdziału.

Uwaga: metoda run zwraca listę instancji zdarzeń.

Per-āa : Wizyta u lekarza

https://szkolazpieklarodem.pl/

Po przeszkoleniu i wyposażeniu nowi lekarze mogli rozpocząć praktykę. Zachowało się ponad 1200 starożytnych egipskich dokumentów medycznych, które dają szczegółowy wgląd w to, jak wyglądała konsultacja z lekarzem. Te medyczne papirusy obejmują

* Profesjonalna przysięga lekarska, podobna do przysięgi Hipokratesa

*Opis procesu przesłuchiwania pacjentów pod kątem objawów i przeprowadzania badań fizykalnych

* Informacje na temat ciąży i ginekologii

* Opisy ran i chorób oczu, skóry i odbytu

* Opisy ukąszeń ludzi, świń i hipopotamów (życie starożytnych egipskich listonoszy było wyraźnie o wiele bardziej niebezpieczne!)

*Szczegóły zalecanych zabiegów i recept

Większość zalecanych praktyk jest dokładnie taka sama, jak te stosowane obecnie, ale pojawiają się również pewne fascynujące różnice, co omówiono w poniższych sekcjach.

Chatbot z Pytonem : Zrozumienie koncepcji Rasy

https://szkolazpieklarodem.pl/

Bardzo ważne jest, abyśmy zrozumieli kilka konkretnych koncepcji związanych z Rasą, zanim faktycznie spróbujemy w pełni wykorzystać je w kodzie. W tej sekcji poznamy kilka ważnych i bardzo przydatnych koncepcji Rasa NLU. Upewnij się, że całkowicie rozumiesz te koncepcje, ponieważ będziemy je wykorzystywać podczas tworzenia naszego pierwszego wewnętrznego chatbota w formacie pliku domeny Rasa. Jeśli nie zrozumiemy, co oznaczają te pojęcia, trudno będzie nam zrobić kolejny krok.

Per-āa : Ładować czy nie ładować?

https://szkolazpieklarodem.pl/

Chociaż istnieje mnóstwo informacji o starożytnej medycynie egipskiej i lekarzach, żadne z zachowanych informacji nie wyjaśniają, ile kosztują określone zabiegi ani jak płacono za usługi. Nie ma dowodów na to, że rząd zatrudniał lekarzy stanowych do leczenia dolegliwości ludności, tak jak robią to brytyjscy lekarze ogólni. Jedynym wyjątkiem wydaje się być wioska robotnicza Deir el Medina . Rząd zapewnił lekarzy w tym miejscu, aby tylko robotnicy byli zdolni do budowy grobów. Państwo płaciło lekarzom w Deir el Medina niższą pensję niż wszystkim innym pracownikom na miejscu. Być może dopłacali do swoich niskich zarobków poprzez pobieranie opłat od pacjentów. Egipt nie miał systemu monetarnego do czasu przybycia Aleksandra w 332 p.n.e., więc pacjenci otrzymujący leczenie prawdopodobnie płacili swoim lekarzom zboże, żywy inwentarz, płótno lub rzemiosło, w zależności od zawodu pacjenta, zamożności i zadowolenia z leczenia. Gdybyś mógł dziś kupić recepty z kozą i torbą mąki, apteka byłaby o wiele bardziej kolorowym miejscem do odwiedzenia!

Chatbot z Pytonem : Rasa Stack i jego rola wraz z Rasa NLU, którego uczyliśmy się do tej pory.

https://szkolazpieklarodem.pl/

Rysunek to diagram, który pomoże ci zrozumieć, w jaki sposób Rasa Core pasuje dobrze

Dzięki Rasa Core możemy określić wszystkie rzeczy, które nasz bot ma powiedzieć lub zrobić. Nazywa się to działaniami. Jedną z czynności może być przywitanie się z użytkownikiem lub wysłanie zapytania do bazy danych, albo może to być pobranie informacji za pomocą usługi internetowej lub interfejsu API. Rasa Core zapewnia możliwość trenowania naszego modelu probabilistycznego w celu przewidywania, jakie działania należy podjąć na podstawie historycznej rozmowy użytkownika lub użytkowników. Wyobraź sobie, że robisz to bez modelu ML i piszesz setki przypadków użycia, aby dowiedzieć się, jaka odpowiedź lub akcja powinna zostać wysłana lub wykonana. Krótko mówiąc, Rasa Core rozwiązuje ten problem dla Ciebie. Przyjrzyjmy się rozmowie pomiędzy użytkownikiem a botem, którą stworzyliśmy w rozdziale 3 podczas tworzenia OnlineEatsBota.

Użytkownik: OnlineEatsBot

Witaj OnlineEats: Witam! Jak mogę ci pomóc?

Chcę zamówić jedzenie: Jasne, co chciałbyś dzisiaj zamówić?

Jeden burger z kurczakiem: Gotowe. Twoja ostateczna kwota to 3,99 USD

Dziękuję: Wielkie dzięki

Ta rozmowa jest dość prosta i można ją przeprowadzić również bez żadnego modelu uczenia maszynowego, mimo że użyliśmy przeszkolonego modelu do rozpoznania intencji i zawartych w nim jednostek. Teraz interesujące pytanie, które przyjdzie Ci do głowy, brzmi: „A co, jeśli chcę, aby mój bot mógł zmieniać kolejność? A co jeśli chcę, żeby mój bot mógł usuwać lub dodawać większą ilość artykułów spożywczych?” Tak więc, jak omówiono, dodaj więcej przypadków użycia, większą złożoność, więcej intencji i ich wyrażeń, więcej if… else w kodzie do obsługi przypadków narożnych, ale kiedy budujesz chatbota dla firmy, musisz go skalować, aby wygenerować więcej za jego pośrednictwem przychody. Wszystkie systemy oprogramowania tak robią i te, którym się to udaje, przetrwają. Najważniejsze jest to, że nie możemy ciągle zmieniać i wdrażać kodu. Zamiast więc zajmować się wszystkimi przypadkami na bieżąco i powtarzać je wielokrotnie, możemy zastosować metodę uczenia maszynowego, aby rozwiązać ten problem za pomocą stosu Rasa, który powie nam, co bot powinien dalej zrobić w oparciu o kontekst użytkownika i stan rozmowy. Ponieważ model uczy się sam na podstawie kontekstu danych z poprzedniej rozmowy, botowi łatwiej jest prowadzić rozmowę bardziej naturalną i przyjazną dla użytkownika, zamiast losowo wybierać od czterech do pięciu stałych zdań. Rasa zaleca użytkownikom z niewielką ilością danych lub bez nich korzystanie z interaktywnej nauki. Więcej na temat interaktywnego uczenia się dowiemy się w dalszej części tego rozdziału. Zanim faktycznie zaczniemy używać Rasa Stack do napisania podstawowej części naszego bota, najpierw musimy zrozumieć kilka pojęć.

Per-āa : Dwa najlepsze dokumenty

https://szkolazpieklarodem.pl/

Ponad 100 starożytnych egipskich lekarzy jest znanych z imienia i nazwiska, wszyscy z elity społeczeństwa. Wśród tych znanych lekarzy wyróżniają się dwa:

Hesy-re jest pierwszym znanym lekarzem w historii, którego początki sięgają trzeciej dynastii. Hesy-re posiadał tytuł szefa stomatologów i lekarzy i był wyraźnie człowiekiem wysokiej pozycji na dworze królewskim. Jego grób znajduje się na północ od piramidy Dżesera.

Peseszet była jedyną znaną z historii Egiptu kobietą lekarką, żyjącą w IV dynastii. Została zatytułowana Pani Nadzorczyni Lady Lekarzy. Chociaż żadna inna lekarka nie była znana aż do okresu ptolemejskiego, fakt, że Peseshet nadzorował lekarki, sugeruje, że istniało wystarczająco dużo kobiet, by potrzebować nadzorcy.