Chatbot z Pytonem : Więcej informacji na temat rdzenia Rasa i systemu dialogowego

https://szkolazpieklarodem.pl/

Zanim faktycznie przejdziemy do kodowania części Rasa Core dla naszego modelu zarządzania dialogiem, naprawdę ważne jest, aby zrozumieć, dlaczego i skąd to się bierze. Spróbujemy zrozumieć, jak do tej pory robiliśmy wszystko, aby zbudować chatboty i jak to się zmieni na zawsze. Weźmy przykład:

Gdybyśmy mieli zbudować prostego chatbota, który pomógłby użytkownikom zarezerwować bilety lotnicze/autobusowe/filmowe/kolejowe, najłatwiej byłoby stworzyć maszynę stanów lub drzewa decyzyjne, napisać kilka if…else i gotowe. To by zadziałało, ale nie byłoby skalowalne. Jeśli klient ma początkowo dobre doświadczenia z czymś, chce częściej z tego korzystać. Za pomocą niektórych heurystyk możemy wykazać, że chatbot jest inteligentny, ale nie na długo. Kiedy przepływ kontrolny kodu przechodzi z bloku try do bloku wyjątkiem, zaczynamy drapać się po głowie. Rysunek przedstawia prostą prezentację tego, jak może wyglądać maszyna stanu służąca do zbudowania tego chatbota.

Zanim faktycznie przejdziemy do kodowania części Rasa Core dla naszego modelu zarządzania dialogiem, naprawdę ważne jest, aby zrozumieć, dlaczego i skąd to się bierze. Spróbujemy zrozumieć, jak do tej pory robiliśmy wszystko, aby zbudować chatboty i jak to się zmieni na zawsze. Weźmy przykład:

Gdybyśmy mieli zbudować prostego chatbota, który pomógłby użytkownikom zarezerwować bilety lotnicze/autobusowe/filmowe/kolejowe, najłatwiej byłoby stworzyć maszynę stanów lub drzewa decyzyjne, napisać kilka if…else i gotowe. To by zadziałało, ale nie byłoby skalowalne. Jeśli klient ma początkowo dobre doświadczenia z czymś, chce częściej z tego korzystać. Za pomocą niektórych heurystyk możemy wykazać, że chatbot jest inteligentny, ale nie na długo. Kiedy przepływ kontrolny kodu przechodzi z bloku try do bloku wyjątkiem, zaczynamy drapać się po głowie. Rysunek przedstawia prostą prezentację tego, jak może wyglądać maszyna stanu służąca do zbudowania tego chatbota.

Jeśli spojrzymy na nasz diagram stanu, może to zadziałać w przypadku normalnej rozmowy, w której użytkownik szuka biletów do kina, autobusu lub pociągu albo chce zarezerwować bilet autobusowy po zapytaniu o bilety do kina. Co się stanie, jeśli użytkownik poprosi jednocześnie o bilety na autobus i do kina? Można powiedzieć, że możemy dodać jeszcze kilka instrukcji if…else do naszego już zagnieżdżonego kodu, aby sobie z tym poradzić. Jeśli jesteś dobrym programistą, zapisanie wejścia-wyjścia z maszyny stanowej lub rozszerzenie drzewa decyzyjnego nie zajmie Ci dużo czasu. Ale pomyśl o sytuacji, gdy te warunki zaczynają rosnąć wykładniczo i musisz ciągle dodawać przypadki, aby sobie z tym poradzić, a one również zaczynają się wzajemnie zakłócać. Nasz mózg działa w taki sposób, że uczymy się i uczymy na nowo. Jeśli dziecko nie wie, co zrobi z nim ogień, dotyka go, ale gdy go zaboli, nie robi tego więcej. Utwierdzają w przekonaniu, że jest to szkodliwe. Podobnie działa to w przypadku nagród – gdy coś zrobisz i coś otrzymasz, kojarzysz fakt, że zrobienie czegoś przynosi nagrodę lub lepszą nagrodę, a potem masz zamiar zrobić to ponownie. Nazywa się to uczeniem przez wzmacnianie w ML, gdzie maszyna uczy się, jak zachować się w określonej sytuacji, wykonując działania i rozumiejąc wyniki. Uczenie się przez wzmacnianie czasami nie jest najlepszym podejściem, na przykład w sytuacjach, gdy dane nie są wystarczające do nauczenia się, jakość danych jest niewystarczająca do nauczenia się scenariuszy nagród itp.

Per-āa : Wyposażenie gabinetu lekarskiego

https://szkolazpieklarodem.pl/

Po przeszkoleniu lekarzy musieli założyć praktykę. W świątyniach mieszkali pełnoetatowi księża z wykształceniem medycznym. Bez wątpienia mieli tylko niewielką liczbę pacjentów, których leczyli w Domu Życia. Inni lekarze, którzy nie byli księżmi, musieli samodzielnie zakładać i leczyć ludność w swoich wsiach, być może tylko w niepełnym wymiarze godzin. Lekarz mógł być również zatrudniony przez bogate gospodarstwo domowe. Osobisty lekarz byłby bardziej satysfakcjonującym stanowiskiem niż wiejski lekarz. Lekarze musieli również zebrać zestaw instrumentów, za pomocą których mogliby ćwiczyć swoją sztukę. W grobowcu z szóstej dynastii w Sakkarze, należącym do Qara, starszego lekarza pałacu królewskiego, odkryto kompletny zestaw narzędzi chirurgicznych, w tym 30 skalpeli i pęsety, które wydają się być podstawowymi narzędziami większości zabiegów. W świątyni Kom Ombo widnieje wizerunek kompletnego zestawu narzędzi medycznych, który koresponduje z przedmiotami z grobowca Qar. Odpowiednia lista na Papirusie Edwina Smitha (papirus medyczny) zawiera następujące pozycje:

* szuwar (łodyga rośliny z zaostrzonym końcem, używana nożem do zabiegów cięcia)

* Wiertło przeciwpożarowe (dwa drewniane patyki do pocierania w celu spalenia narośli)

* Nóż/dłuto

* Szklanka do bańki do wytworzenia próżni na skórze

* Cierń (aby pękać pęcherze)

* Podgrzewane potłuczone szkło (do zabiegów na oczy – ow!)

* Waciki, tampony i materiał lniany

* Noże, łyżki do maści i moździerze

Większość z tych instrumentów wydaje się dość rozsądna i jest używana do dziś. Na przykład pękanie pęcherzy ostrym narzędziem (jak cierń) jest powszechne, a wypalanie brodawek jest skutecznym sposobem na ich pozbycie się. Rzeczywiście, jedyną rzeczą na liście, która wydaje się nieco wątpliwa, jest gorące potłuczone szkło stosowane w leczeniu chorób oczu. Nie warto o tym myśleć; nawet jeśli waciki i lniane płatki mogłyby zetrzeć wszystko, co wyjdzie, ten zabieg sprawi, że twoje oczy będą więcej niż wodniste!

Chatbot z Pytonem : Zarządzanie dialogami za pomocą Rasa Core

https://szkolazpieklarodem.pl/

W tej sekcji będziemy sobie brudzić ręce, ucząc inny model zarządzania oknami dialogowymi Rasa Core. Pamiętaj, że w tym momencie mamy gotowy model do przewidzenia intencji tekstu, możemy napisać kod w Pythonie, aby sformułować odpowiedzi, i możemy odpowiedzieć klientowi. Co jednak jeśli będziemy chcieli dodać do naszego bota więcej intencji? Czy jest to skalowalne w przypadku większej aplikacji z dużą ilością funkcji? Odpowiedź brzmi nie. Tutaj na ratunek przychodzi zarządzanie dialogami z Rasa Core. Jeśli kiedykolwiek próbowałeś użyć dowolnego bota na dowolnej platformie, musiałeś widzieć, że zawiódł on w pewnych warunkach. Tak, wszyscy tam byliśmy i nadal istnieje, ponieważ dzisiejszy bot fatalnie radzi sobie z kontekstem rozmowy i nie podąża za nią. Za pomocą platformy dialogowej Rasa Core opartej na ML możemy łatwo rozwiązać ten problem. Rasa Core jest dobrze sprawdzony w zastosowaniach na poziomie przedsiębiorstw i używany przez tysiące programistów, ponieważ jest gotowy do produkcji, łatwy w użyciu i rozszerzeniu, a co najważniejsze, ma otwarte oprogramowanie.

Per-āa : Jak zostać lekarzem egipskim

https://szkolazpieklarodem.pl/

Zostanie lekarzem w starożytnym Egipcie wiązało się z nauką i szkoleniem – zarówno w zakresie procedur medycznych, jak i ceremonii religijnych. Poniższe sekcje opisują proces zostania lekarzem.

Praktykowanie magicznej medycyny

Niestety, praktyka medyczna, którą musieli znosić starożytni Egipcjanie, nie była całkowicie naukowa. Byli przesądną populacją, która wierzyła, że ​​wiele dolegliwości ma przyczynę nadprzyrodzoną – zemstę bóstwa, złego ducha lub złe oko rzucone przez wroga. W rezultacie chorzy zwracali się zarówno do bogów, jak i do lekarzy. Medycyna praktyczna była bardzo ściśle związana z religią i często towarzyszyły jej religijne zaklęcia recytowane przez medycznie przeszkolonych kapłanów. Większość lekarzy była w rzeczywistości kapłanami, którzy używali magii i zaklęć, aby uzupełnić medycynę praktyczną, aby uspokoić ducha lub boga. Kapłanów wysoko ceniono, ponieważ codziennie rozmawiali z boskością. Kapłani niektórych bóstw byli bardziej niż inni skłonni zwrócić się do medycyny. Najważniejszymi bóstwami związanymi z medycyną były:

* Sekhmet, bogini wojny, epidemii i plag o lwicy głowie

* Selqet, bogini skorpionów, do której kapłanów zwracano się o leczenie ukąszeń i użądleń jadowitych gadów, skorpionów i ptaszników

* Thoth, bóg wiedzy o głowie ibisa, który często był akredytowany do pisania formuł uzdrawiania

Większość zawodów była przekazywana z ojca na syna , więc niektóre rodziny kapłańskie, które zwróciły się ku medycynie, utrzymywały ten zawód przez pokolenia. Dobrze wyszkolony i skuteczny lekarz był bez wątpienia zajęty, dobrze opłacany i szanowany w społeczności. Sąsiednie kraje bardzo szanowały egipskich lekarzy, a zapisy pokazują, że zagraniczni królowie prosili o leczenie egipskiego lekarza.

Trening medyczny

Aby zakwalifikować się jako elitarny lekarz, młody student medycyny został przeszkolony w Domu Życia, niezwykłej instytucji edukacyjnej, która zapewniała kształcenie medyczne, skrybskie i kapłańskie, a także mieściła obszerną bibliotekę.  Kształcenie medyczne i przygotowanie kapłańskie szły zapewne w parze. Większość instytucji Domu Życia była przyłączona do świątyń. Tak było w przypadku Bubastis, Edfu, Amarny i Kom Ombo. Najsłynniejszy Dom Życia został założony przez Imhotepa (budowniczego piramidy schodkowej w Sakkarze) w Memfis; był używany od Starego Państwa aż do okresu grecko-rzymskiego – okresu ponad 2000 lat. Chociaż lekarze byli formalnie przeszkoleni, nie musieli zdawać egzaminów, aby ćwiczyć. Podobnie jak w dzisiejszym zawodzie medycznym, obowiązywała ścisła hierarchia według umiejętności i doświadczenia:

* Senenu (lekarzy świeccy) byli lekarzami najniższej rangi. Byli

często skrybowie, którzy potrafili czytać teksty medyczne.

* Kherep senenu byli kontrolerami lekarzy i nadzorowali pracę wielu lekarzy senenu.

*Sau (magicy lekarze) byli generalnie kapłanami Sekhmeta, którzy posiadali kwalifikacje medyczne, lecz leczyli tylko osoby, które bogini w jakiś sposób ukarała.

* Pasterz odbytu faraona był spektakularnym tytułem dla lekarza, który dał królowi lewatywy.

* Specjalistami byli lekarze, którzy koncentrowali się na jednej konkretnej dolegliwości, podobnie jak dziś lekarze. Starożytne egipskie specjalności obejmowały oczy, zęby, usta, bóle brzucha i „niepewne choroby”.

Zamiast studenta wybierającego i realizującego gałąź medycyny jako karierę, stanowisko było podyktowane posiadanymi umiejętnościami. Niektórzy lekarze byli więc bardziej wykwalifikowani niż inni.

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.

Trenowanie modelu

Uruchamiamy poniższy fragment, aby wywołać naszą metodę train_horoskopbot z odpowiednimi parametrami train_horoskopbot(‘./data/data.json’, ‘config.json’, ‘./models/nlu’) Po uruchomieniu tego kodu w naszym rasa-nlu. ipynb, otrzymamy taki wynik:

Epoki: 100%|██████████| 300/300 [00:01<00:00, 175,69it/s,

strata=0,075, acc=1,000]

Kod do szkolenia modelu chatbota utworzy folder models, który możesz wyświetlić za pomocą Jupytera lub eksploratora plików lub aplikacji Finder. Utworzy kilka plików indeksowych, meta i pickle w podanym przez nas docelowym katalogu modelu.

Chatbot z Pytonem : Przewidywanie na podstawie modelu

Wywołajmy metodę przewidywania_intent, przekazując tekst, aby zobaczyć, jak działa nasz wyszkolony model.

predict_intent(“I am looking for my horoscope for today. I am wondering if

you can tell me that.”)

Sama metoda wypisuje wynik. W przypadku powyższego tekstu moje dane wyjściowe wyglądają następująco:

INFO:tensorflow:Restoring parameters from ./models/nlu/default/

horoscopebot/intent_classifier_tensorflow_embedding.ckpt

{

“intent”: {

“name”: “get_horoscope”,

“confidence”: 0.9636583924293518

},

“entities”: [],

“intent_ranking”: [

{

“name”: “get_horoscope”,

“confidence”: 0.9636583924293518

},

{

“name”: “dob_intent”,

“confidence”: 0.03462183475494385

},

{

“name”: “greeting”,

“confidence”: 0

},

{

“name”: “subscription”,

“confidence”: 0

}

],

“text”: “I am looking for my horoscope for today. I am wondering if you

can tell me that.”

}

Wow! Czy to nie magiczne? Nasz model przewidział taki tekst z pewnością 96%. W dostarczonym pliku ipynb widać, że nasz model dobrze radzi sobie również z przewidywaniem innych zamiarów. To jest ogólna siła tensorflow i ML. Nie trzeba dodawać, że biblioteka rasa_nlu sprawia, że tak łatwo w to uwierzyć. Czas więc cofnąć się w czasie i jeśli pamiętasz rozdział 3 tej książki, to musisz pamiętać, że za każdym razem, gdy dodawaliśmy nowy przykład, Dialogflow służył do ponownego uczenia modelu. Właściwie robiliśmy to samo, co przed chwilą, za kulisami. Nie mogliśmy tam zmienić modelu ani dostroić żadnego parametru, ale teraz możemy to wszystko zrobić z pełną kontrolą. Teraz, gdy pomyślnie zbudowaliśmy i wytrenowaliśmy model przy użyciu tensorflow, a także go przetestowaliśmy, przejdziemy do kolejnego tematu Zarządzanie dialogami. Prosiłbym o przetestowanie wszystkich scenariuszy, z którymi może spotkać się Twój bot, aby poznać punkty, w których Twój model nie działa dobrze, i w związku z tym móc dodać więcej danych lub w razie potrzeby dostroić parametry. Należy również pamiętać, że ponowne uczenie modelu wystarczy za każdym razem, gdy nastąpi zmiana danych uczących. Jeśli nie ma zmian w danych szkoleniowych, możemy załadować istniejący model szkoleniowy, aby kontynuować przewidywanie na podstawie nowych przykładów.

Per-āa : Badanie ogólnego stanu zdrowia Egipcjan

https://szkolazpieklarodem.pl/

Liczne zachowane akta medyczne, szczątki ludzkie, a nawet dokładne badanie osad może dać szczegółowy obraz ogólnego stanu zdrowia Egipcjan. Według współczesnych standardów starożytni Egipcjanie byliby niezdrowi, ale w dużej mierze wynikało to z ich warunków życia. W wielu osadach ludzie żyli w bardzo bliskim kontakcie, w jednym czteroizbowym domu mieszkało kilkanaście osób. Dowody w wiosce robotniczej w Amarnie wskazują na szerzącą się obecność pluskiew, pcheł i szczurów – wszystko to pomaga w rozprzestrzenianiu się chorób. Dodatkowe dowody sugerują, że dżuma (podobna do dżumy dymieniczej) rozprzestrzeniła się w mieście Amarna podczas XVIII dynastii, zabijając wielu ludzi, w tym większość rodziny królewskiej. Inne epidemie prawdopodobnie wystąpiły z powodu zatłoczonych warunków życia, ale trudno je prześledzić w zapisach archeologicznych, zwłaszcza jeśli nie były tak śmiertelne jak dżuma dymienicza. Przeciętny Egipcjanin miał ciężkie życie i prawdopodobnie cierpiał na jedną lub wszystkie z poniższych dolegliwości:

* Ropnie zębowe, które spowodowały utratę zębów i rozpuszczenie kości szczęki

* Pasożytnicze robaki jelitowe, najczęstsze to bilharcja

* Zaburzenia oddychania spowodowane piaszczystym środowiskiem

* Choroba zwyrodnieniowa stawów

* Ślepota, zwłaszcza wśród robotników, którzy budowali grobowce królewskie

Na podstawie badań tysięcy mumii z Egiptu średni wiek śmierci wynosił tylko 36 lat, chociaż istnieje szereg wyjątków. Osoby, które dożyły 40, 50 i 60 lat, pochodziły jednak ze wszystkich środowisk, więc status i bogactwo niekoniecznie były czynnikami wpływającymi na długość życia. Dożycie sędziwego wieku było bardziej szczęściem niż osądem; liczne śmiertelne choroby i infekcje dotknęły wszystkich Egipcjan.

Chatbot z Pytonem : Tworzenie pliku konfiguracyjnego

https://szkolazpieklarodem.pl/

Utwórzmy ponownie plik JSON w ten sam sposób, w jaki utworzyliśmy go wcześniej za pomocą Jupytera i nazwijmy go config.json. Trzymajmy go poza naszym folderem danych (czyli w horoskopie_bocie, czyli katalogu naszego projektu). Dodaj do niego następującą konfigurację:

{

“pipeline”: “tensorflow_embedding”,

“ścieżka”:”./modele/nlu”,

“dane”:”./data/data.json”

}

Jak widać, w naszym pliku config.json znajduje się kilka ważnych parametrów konfiguracyjnych. Spróbujmy je zrozumieć.

  • potok: Pipeline określi, jakie funkcje lub ekstraktory funkcji zostaną użyte do przetwarzania wiadomości tekstowych i wydobywania niezbędnych informacji. W naszym przypadku używamy tensorflow_embedding.
  • ścieżka: ścieżka jest zasadniczo katalogiem, w którym przechowujemy nasz model treningowy. Zamierzamy przechowywać nasz model w folderze /models/nlu.
  • dane: dane to ścieżka, którą musimy określić; to w zasadzie miejsce, w którym jesteśmy, dane treningowe siedzą.

Gdy skończymy z plikiem config.json, przejdźmy do kodu Pythona, aby wytrenować nasz model ML.

KONFIGURACJA YAML-a

Możesz także użyć pliku .yml jako plików konfiguracyjnych, jak poniżej. Możesz pobrać przykładowe pliki config.yml w repozytorium github.

  • Przykład 1:

language: “en”

pipeline: “tensorflow_embedding”

  • Przykład 2:

language: “en”

pipeline:

– name: “nlp_spacy”

– name: “tokenizer_spacy”

– name: “intent_entity_featurizer_regex”

– name: “intent_featurizer_spacy”

– name: “ner_crf”

– name: “ner_synonyms”

– name: “intent_classifier_sklearn”

Wszystkie przychodzące wiadomości są przetwarzane według określonej sekwencji komponentów. Zdefiniowane komponenty są uruchamiane sekwencyjnie, jeden po drugim, dlatego nazywane są potokiem przetwarzania. Różne komponenty są używane do różnych celów, takich jak wyodrębnianie jednostek, klasyfikacja zamiarów, przetwarzanie wstępne itp. Zaletą takiego formatu jest to, że możemy określić predefiniowane potoki przez Rasa w sposób jasny.

Per-āa : Dbanie o zdrowie: choroby i medycyna

https://szkolazpieklarodem.pl/

Choroba to coś, co nęka każde społeczeństwo (zamierzona gra słów) – starożytna i współczesna. Papirusy medyczne i zmumifikowane szczątki dostarczają wielu dowodów na choroby, na które cierpieli starożytni Egipcjanie. Te resztki pomagają również nakreślić jasny obraz profesji medycznej w faraońskim Egipcie, w tym niektóre nieprzemyślane terapie, a także kilka zaskakująco skutecznych kuracji. Jestem pewien, że pod koniec już nigdy nie będziesz narzekać na służbę zdrowia! Tu poznasz starożytnych egipskich lekarzy, zapoznasz się z ich zapisami i zachwycisz się pomysłowością – i całkowitą dziwacznością – wielu leków, z których niektóre stanowią podstawę współczesnej medycyny.

Chatbot z Pytonem : Trenowanie modelu Chatbota

https://szkolazpieklarodem.pl/

W tej sekcji będziemy trenować model na przygotowanych przez nas danych. Ponieważ do tworzenia plików i zarządzania nimi korzystaliśmy z programu Jupyter Notebook, utworzymy nowy plik .ipynb i zaczniemy pisać nasz kod w języku Python w celu uczenia naszego modelu, wybierając jeden z potoków omówionych wcześniej .

Per-āa : Ciesząc się winem

https://szkolazpieklarodem.pl/

Chociaż piwo było podstawowym napojem alkoholowym w starożytnym Egipcie, w Nowym Państwie wino było bardzo popularne, zwłaszcza wśród elity. Wino było luksusową alternatywą dla piwa i było zachowywane na specjalne okazje. W tym regionie istniało wiele winnic, a wielu miejscowych rolników produkowało wino. Ateneusz napisał w 200 rne, że egipskie wina były „blade, przyjemne, aromatyczne i lekko cierpkie, o oleistej jakości”. Podobnie jak we współczesnym świecie, każda amfora wina była oznaczona datą wina, winnicy i winiarza. Inne etykiety z pałacu Malkata w Tebach, domu Amenhotepa III, również informują, jaki rodzaj wina znajdował się w słoju, w tym „mieszane”, „wino na ofiary”, „wino na podatki”, „wino na szczęśliwy powrót ‘ i ‘wino do robienia wesela’. Wszystko to wskazuje, że późniejsi Egipcjanie byli prawdziwymi koneserami wina. Proces produkcji wina był bardzo podobny do tego w niektórych małych nowoczesnych winnicach. Podstawowe kroki obejmują

* Zbieranie winogron

* Deptanie winogron w kadziach z gliny, drewna lub kamienia

* Umieszczanie zmiażdżonej ściółki w dużych arkuszach płótna, które zostały skręcone, aby wycisnąć każdą kroplę soku

* Umożliwienie fermentacji soku winogronowego w słoikach ceramicznych

* Przenoszenie sfermentowanego soku do ustawionych na stojakach słoików, które były zakorkowane perforowanymi uszczelkami, co pozwalało na ulatnianie się tlenku węgla

* Delektowanie się winem po krótkim okresie fermentacji

Z winogron wytwarzano rzadką odmianę wina, zwaną Shedeh, ale podgrzewano ją jak grzane wino. Jeśli podano to na przyjęciu, goście wiedzieli, że ich gospodarz jest zarówno bogaty, jak i wyrafinowany.