Per-āa : Oszustwo, morderstwo – i leśnictwo

https://szkolazpieklarodem.pl/

Jednym z ważnych egipskich mitów religijnych jest mit Ozyrysa i Seta. Służy jako podstawa wielu wierzeń pogrzebowych starożytnych, a także wyjaśnia boskość króla. Dawno temu Ozyrys rządził Egiptem. Był uważany za idealnego władcę, pokazującego ludziom, jak uprawiać ziemię, czcić bogów i przestrzegać praw. Jego brat Seth był zazdrosny i chciał dla siebie tronu. Seth wymyślił sprytny plan, aby pozbyć się świata Ozyrysa i przejąć tron. Najpierw zebrał wszystkie wymiary ciała Ozyrysa – wzrost, szerokość, wewnętrzną nogę, długość włosów, a nawet długość paznokcia. Seth następnie zbudował piękną skrzynię, która dokładnie pasowała do tych wymiarów. Seth zaprezentował tę skrzynię na bankiecie, na który został zaproszony Ozyrys i ogłosił, że każdy, kto zmieści się w skrzyni, może ją zatrzymać. W prawdziwym stylu Kopciuszka wszyscy na bankiecie próbowali wcisnąć się w klatkę piersiową. Niektórzy byli za grubi, inni za wysocy; niektórzy mieli zbyt długie lub zbyt gęste włosy. (I jestem pewna, że ​​ktoś miał groteskowo długie paznokcie!) Ozyrys oczywiście pasował idealnie. Ale zanim zdążył napawać się swoim szczęściem, Seth zatrzasnął wieko, zamknął je gwoździami i wrzucił pudło do Nilu, topiąc króla. Kiedy żona Ozyrysa, Izyda, dowiedziała się o wyczynach Seta, udała się na poszukiwanie skrzyni, aby zapewnić mężowi porządny pochówek. Jej poszukiwania zaprowadziły ją aż do Byblos (położonego gdzieś w dzisiejszym Libanie), gdzie dowiedziała się, że skrzynia wyrosła na drzewo, które zostało wycięte i wyrzeźbione w filarze w pałacu króla. Po pewnym czasie udało jej się przekonać królową, aby pozwoliła jej zabrać kolumnę z powrotem do Egiptu. Kiedy Izyda przybyła do Egiptu, położyła się na krótką drzemkę. Gdy spała, Seth przeszedł obok, rozpoznał skrzynię, wyjął ciało Ozyrysa i posiekał je na 14 kawałków, które następnie rozrzucił po całym Egipcie. (Izyda najwyraźniej bardzo spała.) Kiedy Izyda się obudziła, wraz ze swoją siostrą Neftydą zainicjowała poszukiwania części ciała Ozyrysa. Duetowi udało się zlokalizować 13 utworów. Ostatnia część – penis Ozyrysa – nigdy nie została odnaleziona. Seth wrzucił go do Nilu, gdzie natychmiast go zjadła ryba. Isis jednak okazała się twórczą dziewczyną. Po ponownym złożeniu zebranych części ciała wykonała z gliny nową, w pełni działającą czternastą część. Następnie przekształciła się w latawiec i przeleciała nad ciałem Ozyrysa. Powiew z jej trzepoczących skrzydeł dał mu oddech życia, ożywiając go – wystarczająco długo, by Izyda została zapłodniona Horusem. Ozyrys następnie zmarł i został wygnany do zaświatów. Izyda została sama, by wychowywać Horusa na egipskich bagnach i chronić go przed Setem, dopóki nie był na tyle dorosły, by przejąć tron ​​ojca.

Chatbot z Pytonem : Wdrażanie Chatbota

https://szkolazpieklarodem.pl/

Dowiemy się, jak wdrożyć nasze chatboty w sieci. Istnieją różne sposoby i kanały, za pomocą których można wdrożyć lub udostępnić aplikację internetową chatbota światu zewnętrznemu. Na przykład możemy udostępnić naszego HoroskopBota z NLU i modelem dialogowym na Facebooku i Slacku, ponieważ zapewniają one już interfejs użytkownika. Możesz także chcieć mieć własną aplikację internetową, która działa dokładnie na Twoim własnym serwerze. Pod koniec tego rozdziału dowiemy się również, jak wdrożyć chatbota na naszych własnych serwerach przy użyciu naszego własnego interfejsu użytkownika.

Per-āa : Zrób miejsce na więcej

https://szkolazpieklarodem.pl/

Aby dodać inny wymiar do tego asortymentu bogów, Egipcjanie chcieli mieszać i dopasowywać swoich bogów i tworzyć nowych. To w pewnym stopniu wyjaśnia, dlaczego starożytni Egipcjanie mieli tak wielu bogów. Na przykład wielu bogów posiadało więcej niż jedną cechę i dlatego najlepiej było reprezentowanych przez dwa różne bóstwa:

* Amon-Min był kombinacją boga stwórcy (Amun) i boga płodności (Min).

* Amun-Ra był kombinacją boga stwórcy (Amun) i boga słonecznego (Ra). Niektóre obce bóstwa zostały wprowadzone i połączone z egipskim bogiem, aby uczynić je bardziej akceptowanymi przez ludność egipską:

* Set (egipski bóg chaosu) w połączeniu z Baalem (kananejski bóg błyskawic).

* Hathor (egipska bogini matka) połączona z Anat (syryjską boginią wojenną).

* Ozyrys (egipski bóg zmarłych) w połączeniu z Dionizosem (grecki bóg płodności).

* Izyda (egipska bogini matka) połączona z Afrodytą (grecką boginią miłości).

* Imhotep (egipski bóg medycyny) w połączeniu z Asklepiosem (greckim bogiem medycyny).

Chatbot z Pytonem : Streszczenie

https://szkolazpieklarodem.pl/

Dowiedzieliśmy się o Rasa-NLU i dlaczego Rasa-NLU jest lepszy niż jakiekolwiek inne narzędzie open source dostępne na rynku. Dowiedzieliśmy się, jak konfigurować potoki przy użyciu tensorflow, sklearn i keras w naszych konfiguracjach potoków. Nauczyliśmy się tworzyć wszystko od podstaw w naszym lokalnym systemie, nie będąc zależnymi od usług wymagających korzystania z ich API, takich jak Dialogflow, wit.ai itp. Dowiedzieliśmy się także, jak tworzyć historie oraz jak trenować model NLU i okno dialogowe model i użyj ich obu, używając Rasa Core do zbudowania bota, trenując przy użyciu najfajniejszej funkcji, interaktywnego uczenia się. Mamy również dobre pojęcie o tym, jak łatwo tworzyć dane szkoleniowe i dodawać do nich adnotacje za pomocą narzędzi typu open source, takich jak rasa-nlu-trainer. Jeśli nie czujesz, że osiągnąłeś sukces, przygotuj się na następną sekcję, w której faktycznie zaprezentujemy to na żywo naszym widzom i pokażemy światu, do czego zdolne są boty. Z tego rozdziału nauczymy się integrować chatbota z różnymi platformami, takimi jak Facebook i Slack, przy użyciu naszych własnych serwerów internetowych.

Per-āa : Wygrzewanie się w promieniach słońca

https://szkolazpieklarodem.pl/

W kraju tak gorącym jak Egipt słońce było szczególnie potężną siłą w życiu ludzi. Jako taki, kult słoneczny (kult bóstw związanych z cyklem słonecznym) był szczególnie widoczny od Starego Państwa do okresu rzymskiego. Jednak zamiast upraszczać sprawy, Egipcjanie nazywali i czcili wiele różnych aspektów boga słońca, w zależności od pory dnia i obszaru, w którym czczono boga słońca. Zobacz sekcję „Zmiana ról i kształtów”, aby uzyskać więcej informacji. Dodatkowo bogowie solarni byli ściśle związani ze stworzeniem ziemi – słońce jako pierwsze pojawiło się na kopcu stworzenia na początku czasu. Oznacza to, że wszystkie bóstwa słoneczne są również bogami stwórcami. A jako bóstwa stwórcy byli też ściśle związani z kultem pogrzebowym i odrodzeniem zmarłego. Wiele innych bóstw chciało włączyć się w akcję słoneczną, aby zwiększyć swoje bogactwo i władzę (chociaż w rzeczywistości moc była prawdopodobnie pożądana przez króla lub kapłanów, a nie przez same bóstwa!). Wiele bóstw solaryzowało swoje imię, dodając do niego Ra (na przykład Amun-Ra). Nawet królowie chcieli być związani z bogiem słońca i umieścili „syna Ra” w swoich królewskich tytułach, pokazując ich boskie pochodzenie.

Chatbot z Pytonem : Testowanie bota

https://szkolazpieklarodem.pl/

Testowanie bota jest częścią naszego interaktywnego procesu uczenia się. Na bieżąco sprawdzamy wszystkie możliwe scenariusze, jakie początkowo przewidywaliśmy dla bota i odpowiednio go szkolimy. Przetestowałem Horoskop Bota pod kątem innych scenariuszy i odpowiednio go przeszkoliłem. Poniżej znajduje się jeden z nich, który różni się nieco od tego, co zrobiliśmy wcześniej .

Przypadek testowy 1

Przeprowadźmy pierwszy test:

Użytkownik: Witam!

HoroskopBot: Witam! Co mogę dla ciebie zrobić?

Użytkownik: Jaki jest dzisiaj horoskop dla Koziorożca?

HoroskopBot: Twój dzisiejszy horoskop:

Podróż od porażki do sukcesu jest napędzana optymizmem. Będziesz dzisiaj bardzo optymistycznie nastawiony do swojej pracy, przyszłości i wszystkiego, co może doprowadzić cię do sukcesu, mówi Ganesha. Będziesz także bardzo ostrożny w codziennej pracy i wykorzystasz każdą okazję, która przybliży Cię o krok do Twoich celów. Aby zrealizować swoje marzenia, wystarczy determinacja i szczęście; będziesz miał dzisiaj oba.

HoroskopBot: Czy chcesz subskrybować codzienne aktualizacje?

Użytkownik: Proszę, zasubskrybuj mnie.

HoroskopBot: Subskrybujesz pomyślnie.

Jak widać w tej rozmowie między użytkownikiem a chatbotem, sprawdziliśmy, czy bot radzi sobie ze scenariuszem, w którym użytkownik sam podaje horoskop_znak, prosząc o horoskop na dany dzień. Bot radzi sobie w tym przypadku dobrze i kończy

prosząc o subskrypcję i na podstawie odpowiedzi użytkownika podejmuje odpowiednie działania. Powinieneś przeprowadzić test poprawności rozmowy bota, aby ustalić, czy normalny przepływ działa, czy nie. Przetestowałem także historię, o której wspominaliśmy w naszym pliku Stories.md, gdy użytkownik bezpośrednio poprosił o subskrypcję i również zadziałało.

Przypadek testowy 2

Teraz drugi test:

Użytkownik: Cześć

HoroskopBot: Witam! Co mogę dla ciebie zrobić?

Użytkownik: Subskrybuj mnie, aby otrzymywać codzienne aktualizacje.

HoroskopBot: Subskrybujesz pomyślnie.

Dodam jeszcze kilka nowych historii, żeby bot działał bez zarzutu. Ale na razie mamy w pełni działającego bota. W drugiej wersji kodu na githubie znajdziesz także bota, który będzie poprawiał błędy ortograficzne dla znaku horoskopu, pobierał znak horoskopu na podstawie DOB użytkownika, żegnał się itp. Gorąco polecam sprawdzić, jak to działa w kodzie zostało już wykonane i prześlij swoją opinię. Ale wcześniej zastanów się, jak to zostanie zrobione i dokąd pójdą zmiany.  

Per-āa : Zmieniające się role i kształty

https://szkolazpieklarodem.pl/

Podobnie jak ludzie, bóstwa egipskie odgrywają wiele ról i przez całe życie przybierają różne cechy, co oznacza, że tego samego boga można przedstawiać na wiele różnych sposobów. Na przykład bóg słońca Ra jest przedstawiany na cztery różne sposoby, w zależności od pory dnia:

* Khepri to skarabeusz (lub człowiek z głową żuka), który reprezentuje słońce o świcie.

* Aten to słoneczny dysk reprezentujący światło, które świeci ze słońca w południe.

* Re-Horakhti to człowiek z głową sokoła i nakryciem głowy w kształcie tarczy słonecznej, który przedstawia słońce na horyzoncie o świcie i zachodzie słońca.

* Flesh to człowiek z głową barana, który reprezentuje słońce o zachodzie słońca.

Chatbot z Pytonem : Eksportowanie rozmów jako historii

https://szkolazpieklarodem.pl/

Teraz następnym krokiem w interaktywnej części edukacyjnej jest naciśnięcie 0 i wyeksportowanie naszych bieżących rozmów jako opowieści i wyjście. W tym celu naciskamy 0, a bot wyświetla coś takiego:

File to export to (if file exists, this will append the stories) [stories.md]:

Wystarczy wpisać nazwę naszego pliku Stories.md, jeśli zachowałeś inną nazwę, upewnij się, że podałeś poprawną nazwę pliku. Rasa wykonuje za nas całą ciężką pracę i ponownie automatycznie generuje dla nas plik Stories.md w następujący sposób:

## Generated Story 3797421409943253925

* greeting

– utter_greet

* I want to know my horoscope

– utter_ask_horoscope_sign

* get_horoscope

## Generated Story 7304374603374920907

* greeting

– utter_greet

* what is my todays horoscope?

– utter_ask_horoscope_sign

* Cancer

## Generated Story -6877464862083507836

* greeting

– utter_greet

* get_horoscope

– utter_ask_horoscope_sign

* get_horoscope{“horoscope_sign”: “capricorn”}

– slot{“horoscope_sign”: “capricorn”}

– get_todays_horoscope

– slot{“horoscope_sign”: “capricorn”}

– utter_subscribe

* subscription{“subscribe”: “True”}

– slot{“subscribe”: “True”}

– subscribe_user

– slot{“subscribe”: true}

Możesz zmienić źródło pliku historii podczas uczenia modelu za pomocą wyżej wymienionego pliku lub możesz skopiować i wkleić nowo wygenerowane historie do naszego oryginalnego pliku Stories.md. Na razie skopiuję i wkleję te historie do naszego oryginalnego pliku Stories.md. Przed przystąpieniem do testowania lub ponownego interaktywnego uczenia się pamiętaj o ponownym uruchomieniu modeli.

Per-āa : Wyjaśniając wszystkie te niezwykłe formy

https://szkolazpieklarodem.pl/

Zarówno religia państwowa, jak i domowa obejmowała bogów o nieco dziwacznej formie – przedstawianych jako ludzie z głowami zwierząt, zwierzętami lub jako ludzie z nieożywionymi przedmiotami zamiast głów. Egipcjanie nie wierzyli jednak, że te dziwne pozory są tym, jak faktycznie wyglądali bogowie. Wierzyli, że bóstwa są bezforemne. Przedstawienia przedstawiają cechy bóstwa i jego rolę w panteonie bogów. Charakter zwierzęcia lub przedmiotu zastępującego głowę boga dostarcza pewnych informacji o bogu. Na przykład:

* Hathor była kobietą z głową krowy, która reprezentuje macierzyńską, opiekuńczą naturę krowy.

* Sekhmet była kobietą z głową lwicy, która reprezentuje

agresywna natura lwicy.

* Selket była kobietą o ciele skorpiona i ludzkiej głowie, co oznacza, że jest obrońcą przed ukąszeniami skorpionów i pająków.

Chatbot z Pytonem : Trening w czasie rzeczywistym poprzez wzmocnienie

https://szkolazpieklarodem.pl/

W tej sekcji napiszemy więcej kodu, aby wytrenować nasz model okna dialogowego i przeszkolić go ponownie, gdy otrzyma nieprawidłowe wyniki. Tak więc, gdy nasz bot zrobi coś złego, natychmiast wkraczamy i pozwalamy modelowi aby wiedzieć, że jego przewidywania są błędne, mówiąc mu, co jest słuszne. Bez konieczności zatrzymywania model sam się szkoli, a gdy już to zakończymy, interakcja między użytkownikiem a botem zostaje przechwycona w pliku i dodana do naszych istniejących danych szkoleniowych. Działa bardziej jak system informacji zwrotnej na każdym kroku, zamiast czekać na pojedynczą nagrodę na końcu. Następnym krokiem jest utworzenie nowego pliku o nazwie endpoints.yml z poniższą zawartością. Będziemy używać tego pliku w naszym pliku kodu Pythona train_online.py. Dzięki tej konfiguracji możemy udostępnić metodę Rasa jako interfejsy API HTTP.

action_endpoint:

url: http://localhost:5055/webhook

#nlg:

# url: http://localhost:5056/nlg

core_endpoint:

url: http://localhost:5005

Now, let’s create train_online.py for our online/interactive training purposes.

from __future__ import absolute_import

from __future__ import division

from __future__ import print_function

from __future__ import unicode_literals

import logging

from rasa_core import utils, train

from rasa_core.training import online

from rasa_core.interpreter import NaturalLanguageInterpreter

logger = logging.getLogger(__name__)

def train_agent(interpreter):

return train.train_dialog_model(domain_file=”horoscope_domain.yml”,

stories_file=”data/stories.md”,

output_path=”models/dialog”,

nlu_model_path=interpreter,

endpoints=”endpoints.yml”,

max_history=2,

kwargs={“batch_size”: 50,

“epochs”: 200,

“max_training_samples”: 300

})

if __name__ == ‘__main__’:

utils.configure_colored_logging(loglevel=”DEBUG”)

nlu_model_path = “./models/nlu/default/horoscopebot”

interpreter = NaturalLanguageInterpreter.create(nlu_model_path)

agent = train_agent(interpreter)

online.serve_agent(agent)

max_history to liczba stanów, które model ma śledzić.

Zanim zaczniemy uruchamiać nasz końcowy skrypt, train_online.py, powinniśmy wiedzieć i przygotować się na coś, co nazywa się rasa-nlu-sdk.

rasa-nlu-sdk

Stos Rasa NLU zawiera rasa-nlu-sdk, który jest pakietem SDK języka Python do tworzenia niestandardowych akcji dla Rasa Core. Jeśli chodzi o nasz przykład chatbota, musimy zdefiniować kilka niestandardowych akcji, jak na przykład wejście do API w celu pobrania dzisiejszego horoskopu, czy może operacja zapisu do bazy danych w celu dodania użytkownika do listy subskrybentów. Dobra wiadomość jest taka, że mają do tego oddzielną bibliotekę, którą możemy zainstalować za pomocą pip. Zainstalujmy to za pomocą następującego polecenia:

pip install rasa-core-sdk==0.11.0

Teraz musimy przejść do innej zakładki naszego terminala lub do świeżej linii poleceń i wykonać następujące polecenie w naszym katalogu projektu (miejscu, w którym znajduje się nasz plik action.py):

python -m rasa_core_sdk.endpoint –actions actions

INFO:__main__:Starting action endpoint server…

INFO:rasa_core_sdk.executor:Registered function for ‘get_todays_horoscope’.

INFO:rasa_core_sdk.executor:Registered function for ‘subscribe_user’.

INFO:__main__:Action endpoint is up and running. on (‘0.0.0.0’, 5055)

To polecenie uruchomi serwer akcji, który będzie nasłuchiwał wszelkich akcji niestandardowych przewidywanych przez model. Gdy tylko jakakolwiek akcja zostanie uruchomiona, wykona ją i udzieli odpowiedzi zgodnie z metodą. Domyślny port punktu końcowego serwera akcji to 5055 na hoście lokalnym. Jeśli chcesz to zmienić, możesz dodać argument pass –port w wierszu poleceń. Nasuwa się szybkie pytanie: dlaczego? Po co mi do tego osobny serwer? Dlaczego nie możemy używać zwykłego Pythona? Tak, możemy używać zwykłego języka Python, ale załóżmy, że wymagane działania chcesz opracować w jakimkolwiek innym języku lub masz już pewne działania ujawnione jako interfejsy API. Teraz wystarczy przejść do pliku endpoints.yml, który już utworzyliśmy, i użyć go, aby wspomnieć, gdzie powinien być używany serwer akcji i gdzie powinien znajdować się serwer core_endpoint. W systemie produkcyjnym oba mogą być różnymi serwerami mającymi zupełnie różne adresy URL.

Teraz, gdy uruchomimy nasz następny skrypt, w którym wspomnieliśmy o pliku endpoints.yml, Rasa przeczyta plik i pobierze konfigurację naszego serwera akcji, który jest już uruchomiony i działa zgodnie z konfiguracją, którą zrobiliśmy wcześniej.

action_endpoint:

url: http://localhost:5055/webhook

Uruchommy train_online.py w nowym terminalu wiersza poleceń.

$python3 train_online.py

Po udanym wytrenowaniu modelu dialogowego otrzymamy taki komunikat:

2018-08-30 07:09:37 INFO rasa_core.policies.keras_policy – Done

fitting keras policy model

2018-08-30 07:09:37 INFO rasa_core.agent – Model directory models/nlu

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

2018-08-30 07:09:37 INFO rasa_core.agent – Persisted model to ‘/Users/

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

2018-08-30 07:09:37 INFO rasa_core.training.online – Rasa Core server

is up and running on http://localhost:5005

Bot loaded. Type a message and press enter (use ‘/stop’ to exit).

127.0.0.1 – – [2018-08-30 07:09:37] “GET /domain HTTP/1.1” 200 996 0.001847

Teraz możesz zacząć rozmawiać ze swoim botem, który właśnie się urodził. Odtąd to, jak będziesz go trenować, zależy wyłącznie od Ciebie. Możesz go poprawić, gdy zareaguje na coś złego lub nieoczekiwanego. Zróbmy to i zobaczmy, czy sytuacja się poprawi. Wpisuję „Cześć” jako pierwszą wiadomość, a bot zwraca następujące informacje:

—————————————————————————

Chat history:

bot did: action_listen

user said: hi

whose intent is: {‘confidence’: 0.8472929307505297, ‘name’: ‘greeting’}

we currently have slots: DD: None, MM: None, horoscope_sign: None,

subscribe: None

——

The bot wants to [utter_greet] due to the intent. Is this correct?

  1. Yes
  2. No, intent is right but the action is wrong
  3. The intent is wrong
  4. Export current conversations as stories and quit

—————————————————————————

Teraz bot mówi mi, co zrobił, na podstawie tego, co powiedział użytkownik i jak to zrozumiał. Teraz daje nam również cztery opcje. Porozmawiamy o tym za chwilę. To, co bot_ zrobił tutaj, ma znaczenie action_listen; po prostu czekał, aż użytkownik coś wprowadzi, co jest w porządku. Bot wypowiada intencję {‘confidence’: 0.8472929307505297, ‘name’: ‘greeting’}, co jest poprawne, więc naciskamy 1, co oznacza, co bot rozumie i stara się to zrobić poprawnie.

1

—————————————————————————

Chat history:

bot did: action_listen

user said: hi

whose intent is: {‘confidence’: 0.8472929307505297, ‘name’: ‘greeting’}

bot did: utter_greet

we currently have slots: DD: None, MM: None, horoscope_sign: None,

subscribe: None

——

The bot wants to [action_listen]. Is this correct?

  1. Yes.
  2. No, the action is wrong.
  3. Export current conversations as stories and quit

—————————————————————————

I proszę bardzo, nasz bot przynajmniej przywitał użytkownika poprawnie. Jeśli zobaczysz powyższą odpowiedź, możesz faktycznie sprawdzić, co zrobił nasz bot; śledzi to wszystko, podczas gdy my go szkolimy.

bot did: utter_greet

Teraz bot mówi, że następną rzeczą jest poczekanie i wysłuchanie, co użytkownik powie (tj. oczekiwanie na dane wejściowe użytkownika). Czy to jest poprawne? Tak, zgadza się, więc ponownie naciskamy 1, a bot wyświetla monit użytkownikowi. Wchodzę i pytam: „Jaki jest mój horoskop na dzisiaj?”

—————————————————————————

Chat history:

bot did: action_listen

user said: hi

whose intent is: {‘confidence’: 0.8472929307505297, ‘name’:

‘greeting’}

bot did: utter_greet

bot did: action_listen

user said: what’s my horoscope for today?

whose intent is: {‘confidence’: 0.8902154738608781, ‘name’:

‘get_horoscope’}

we currently have slots: DD: None, MM: None, horoscope_sign: None,

subscribe: None

——

The bot wants to [utter_ask_horoscope_sign] due to the intent. Is this

correct?

  1. Yes
  2. No, intent is right but the action is wrong
  3. The intent is wrong
  4. Export current conversations as stories and quit

—————————————————————————

bot did: utter_greet

Teraz bot mówi, że następną rzeczą jest poczekanie i wysłuchanie, co użytkownik powie (tj. oczekiwanie na dane wejściowe użytkownika). Czy to jest poprawne? Tak, zgadza się, więc ponownie naciskamy 1, a bot wyświetla monit użytkownikowi. Wchodzę i pytam: „Jaki jest mój horoskop na dzisiaj?”

—————————————————————————

Chat history:

bot did: action_listen

user said: hi

whose intent is: {‘confidence’: 0.8472929307505297, ‘name’:

‘greeting’}

bot did: utter_greet

bot did: action_listen

user said: what’s my horoscope for today?

whose intent is: {‘confidence’: 0.8902154738608781, ‘name’:

‘get_horoscope’}

we currently have slots: DD: None, MM: None, horoscope_sign: None,

subscribe: None

——

The bot wants to [utter_ask_horoscope_sign] due to the intent. Is this

correct?

  1. Yes
  2. No, intent is right but the action is wrong
  3. The intent is wrong
  4. Export current conversations as stories and quit

—————————————————————————

Teraz bot bardzo poprawnie identyfikuje intencję jako intencję „get_horoskop” z 89-procentową dokładnością, co jest całkiem dobrym wynikiem. Bot mówi również, że chce wypowiedzieć_ zapytaj_horoskop_znak, co znowu jest poprawne, ponieważ użytkownik nie wspomniał jeszcze o żadnym znaku horoskopu, a miejsce nadal ma wartość Brak, jak pokazano. Ponownie wciskamy 1.

—————————————————————————

Chat history:

bot did: action_listen

user said: hi

whose intent is: {‘confidence’: 0.8472929307505297, ‘name’: ‘greeting’}

bot did: utter_greet

bot did: action_listen

user said: what’s my horoscope for today?

whose intent is: {‘confidence’: 0.8902154738608781, ‘name’:

‘get_horoscope’}

bot did: utter_ask_horoscope_sign

we currently have slots: DD: None, MM: None, horoscope_sign: None,

subscribe: None

——

The bot wants to [action_listen]. Is this correct?

  1. Yes.
  2. No, the action is wrong.
  3. Export current conversations as stories and quit

—————————————————————————

Teraz bot pyta, czy czas poczekać na dane wejściowe użytkownika. Tak, użytkownik musi podać znak horoskopu

Ponownie wciskamy 1 i po wyświetleniu monitu wprowadziliśmy „Koziorożec” jako dane wejściowe.

—————————————————————————

Chat history:

bot did: action_listen

user said: hi

whose intent is: {‘confidence’: 0.8472929307505297, ‘name’: ‘greeting’}

bot did: utter_greet

bot did: action_listen

user said: what’s my horoscope for today?

whose intent is: {‘confidence’: 0.8902154738608781, ‘name’:

‘get_horoscope’}

bot did: utter_ask_horoscope_sign

bot did: action_listen

user said: Capricorn

whose intent is: {‘confidence’: 0.8456705103362621, ‘name’:

‘get_horoscope’}

with horoscope_sign: capricorn

we currently have slots: DD: None, MM: None, horoscope_sign: capricorn,

subscribe: None

The bot wants to [get_todays_horoscope] due to the intent. Is this correct?

  1. Yes
  2. No, intent is right but the action is wrong
  3. The intent is wrong
  4. Export current conversations as stories and quit

—————————————————————————

Teraz, jak widzimy, miejsce na znak horoskopu jest automatycznie ustawiane powyżej na „Koziorożec”. Kolejnym krokiem jest nauczenie bota wywoływania get_todays_horoskop i wywoływania akcji get_todays_horoskop. Do tego czasu nasz slot jest już ustawiony na zmienną horoskop_znak, którą zdefiniowaliśmy w horoskop_domain.yml, więc jeśli ta akcja zostanie wywołana ponownie, chatbot powinien zwrócić aktualny horoskop na dany dzień. Spróbujmy. Wpisałem „Koziorożec”. Bot trafia do punktu końcowego serwera akcji i zwraca wynik użytkownikowi zgodnie z definicją w naszej akcji niestandardowej. Twój horoskop na dziś: Podróż od porażki do sukcesu napędzana jest optymizmem. Będziesz dzisiaj bardzo optymistycznie nastawiony do swojej pracy, przyszłości i wszystkiego, co może doprowadzić cię do sukcesu, mówi Ganesha. Będziesz także bardzo ostrożny w codziennej pracy i wykorzystasz każdą okazję, która przybliży Cię o krok do Twoich celów. Aby zrealizować swoje marzenia, wystarczy determinacja i szczęście; będziesz miał dzisiaj oba. Wydaje się to uczciwe, ponieważ brakuje mi terminu na dokończenie tego rozdziału, a teraz jest 6:00 rano, a ja jeszcze nie spałem. Dołóż wszelkich starań, aby Twoje pieniądze były warte wydania tej książki. OK, wróćmy i zobaczmy, co nasz bot próbuje dalej zrobić.

——

The bot wants to [action_listen]. Is this correct?

  1. Yes.
  2. No, the action is wrong.
  3. Export current conversations as stories and quit

Może nie chcemy, żeby nasz bot słuchał teraz, po tym jak wypowiedział horoskop na dzisiaj. Chcemy, aby nasz bot prosił użytkownika o zasubskrybowanie aktualizacji zgodnie z naszym skryptem konwersacji, a także zgodnie z utworzonymi przez nas historiami. Więc naciskam 2 i pojawia się komunikat

——

what is the next action for the bot?

0 action_listen 1.00

1 action_restart 0.00

2 action_default_fallback 0.00

utter_greet 0.00

4 utter_ask_horoscope_sign 0.00

5 utter_ask_dob 0.00

6 utter_subscribe 0.00

7 get_todays_horoscope 0.00

8 subscribe_user 0.00

Ponieważ chcemy, aby nasz użytkownik subskrybował, należy nacisnąć 6, aby bot zapytał użytkownika, czy chce zapisać się na codzienne aktualizacje. Bot odpowiada: „Czy chcesz subskrybować codzienne aktualizacje?” Teraz bot mówi:

—————————————————————————

The bot wants to [get_todays_horoscope]. Is this correct?

  1. Yes.
  2. No, the action is wrong.
  3. Export current conversations as stories and quit

Akcja tutaj nie jest poprawna, więc wciskamy 2 i uczymy bota, aby słuchał tutaj akcji użytkownika.

—————————————————————————

what is the next action for the bot?

0 action_listen 0.21

1 action_restart 0.01

2 action_default_fallback 0.01

3 utter_greet 0.21

4 utter_ask_horoscope_sign 0.51

5 utter_ask_dob 0.01

6 utter_subscribe 0.02

7 get_todays_horoscope 0.78

8 subscribe_user 0.22

—————————————————————————

Wciskamy 0, gdy bot czeka na poznanie prawidłowego kolejnego kroku. Bot będzie teraz czekać na dane wejściowe użytkownika w naszym interaktywnym procesie uczenia się

Użytkownik mówi tutaj: „Proszę mnie zasubskrybować”, a nasz bot z 80% pewnością rozpoznaje, że jest to zamiar subskrypcji, a także, w oparciu o nasze dane szkoleniowe w data.json, dość łatwo rozumie, że użytkownik prosi o subskrypcję i nie wypisywać się. Innymi słowy, ustawia przedział subskrypcji na True, jak widać tutaj:

—————————————————————————

user said: Please subscribe me

whose intent is: {‘confidence’: 0.795172441763619, ‘name’:

‘subscription’}

with subscribe: True

we currently have slots: DD: None, MM: None, horoscope_sign: capricorn,

subscribe: True

—————————————————————————

Teraz, gdy nasz bot zrozumiał intencję, a także przeanalizował zawarte w niej encje, nadszedł czas, aby odpowiedzieć użytkownikowi, mówiąc: „Zasubskrybowano go pomyślnie” i bingo — otrzymujemy wiadomość od bota: Subskrypcja została pomyślnie zapisana. ty idź! Możesz z powodzeniem samodzielnie zbudować własnego chatbota. W ramach ćwiczenia polecam dodać wszystkie omówione przez nas przypadki użycia HoroskopBota i sprawdzić, czy to działa. Spróbuj dodać więcej przypadków użycia i więcej funkcjonalności, gdy wszystko, co zrobiliśmy do tej pory, działa dobrze. Możesz tutaj dodać więcej komunikatów, aby bot powiedział „Do widzenia, miłego dnia” po zakończeniu rozmowy. Jestem głęboko przekonany, że powinieneś mieć taką możliwość. Upewnij się, że to zrobiłeś i daj nam znać, jak poszło. Teraz ostatnia część polega na oddaniu całej tej wiedzy użytkownikowi, abyśmy nie musieli ponownie uczyć tych samych historii, a bot będzie próbował uczyć się na podstawie istniejących historii i jeszcze więcej.