Per-āa : Podbój Bliskiego Wschodu: Asyryjczycy

https://szkolazpieklarodem.pl/

W tym samym czasie, gdy rozszerzyły się wpływy nubijskie na Egipt, imperium asyryjskie rozszerzyło się również na Bliski Wschód. Kilka asyryjskich powstań miało miejsce w pobliżu granic Egiptu, ale królowie nubijscy stłumili je. Jednak za panowania nubijskiego faraona Taharki (690-664 p.n.e.) Asyryjczycy i Nubijczycy prowadzili liczne konfrontacje. Obie strony na przemian zyskiwały przewagę, pokazując, że są równo dopasowane. Sytuacja musiała być dość niepokojąca dla nowych dynastii nubijskich, które niedługo zdobyły upragnioną nagrodę panowania nad Egiptem. W 671 p.n.e. asyryjski król Asarhaddon faktycznie wkroczył do Egiptu, przejmując kontrolę nad północą aż do Memfisu. Oznaczało to, że król Taharqa musiał uciekać na południe Egiptu. Mimo że utrzymali kontrolę nad Deltą, Asyryjczycy odeszli, by powrócić w 669 p.n.e. Jednak Asarhaddon zmarł po drodze, a jego następcą został jego syn Asurbanipal, który w końcu przejął kontrolę nad Egiptem. Asurbanipal ostatecznie przejął kontrolę nad Tebami w 661 p.n.e., czyniąc go królem Górnego i Dolnego Egiptu. To spowodowało, że Taharqa i jego następcy uciekli dalej na południe do stolicy Nubii, Napata, poza granice Egiptu, aby nigdy więcej nie wkroczyć do Egiptu.

Chatbot z Pytonem : Analiza zależności

https://szkolazpieklarodem.pl/

Analiza zależności jest jedną z piękniejszych i najpotężniejszych funkcji spaCy, która jest szybka i dokładna. Parser może być również używany do wykrywania granic zdań i umożliwia iterację po podstawowych frazach rzeczownikowych, czyli „fragmentach”. Ta funkcja spaCy zapewnia przeanalizowane drzewo, które wyjaśnia relację rodzic-dziecko między słowami lub frazami i jest niezależne od kolejności występowania słów. Weźmy przykład, w którym musisz przeanalizować następujące zdanie:

Zarezerwuj mi lot z Bangalore do Goa

Przykład 1:

doc = nlp(u’Book me a flight from Bangalore to Goa’)

blr, goa = doc[5], doc[7]

list(blr.ancestors)

Wyjście:

[from, flight, Book]

Powyższe dane wyjściowe mogą nam powiedzieć, że użytkownik chce zarezerwować lot z Bangalore. Spróbujmy wypisać przodków obiektu goa.ancestors:

list(goa.ancestors)

Wyjście:

[to, flight, Book]

Dane wyjściowe mogą nam powiedzieć, że użytkownik chce zarezerwować lot do Goa.

Czym są przodkowie w analizie zależności?

Przodkowie są skrajnym prawym symbolem syntaktycznych potomków tego tokenu. Podobnie jak w powyższym przykładzie dla obiektu br przodkowie pochodzili z, lotu i Księgi. Pamiętaj, że zawsze możesz wyświetlić listę przodków elementu obiektu dokumentu, używając atrybutu przodków.

list(doc[4].ancestors) #doc[4]==flight

Powyższy kod wyświetli:

[flight, Book]

Aby programowo sprawdzić, czy element obiektu dokumentu jest przodkiem innego elementu obiektu dokumentu, możemy wykonać następujące czynności:

doc[3].is_ancestor(doc[5])

Powyższe zwraca True, ponieważ dokument [3] (tj. lot) jest przodkiem dokumentu [5] (tj. Bangalore). Możesz wypróbować więcej takich przykładów, aby lepiej zrozumieć analizę zależności i koncepcję przodków. Jeśli spróbujemy pomyśleć o scenariuszu ze świata rzeczywistego, z którym możemy się spotkać, próbując zbudować chatbota, możemy natknąć się na zdanie w rodzaju: Chcę zarezerwować taksówkę do hotelu i stolik w restauracji. W tym zdaniu ważne jest, aby wiedzieć, jakie zadania są zlecane i dokąd są kierowane (tj. czy użytkownik chce zarezerwować taksówkę do hotelu lub restauracji). Spróbujmy to zrobić za pomocą następującego kodu:

Przykład 1:

doc = nlp(u’Book a table at the restaurant and the taxi to the hotel’)

tasks = doc[2], doc[8] #(table, taxi)

tasks_target = doc[5], doc[11] #(restaurant, hotel)

for task in tasks_target:

for tok in task.ancestors:

if tok in tasks:

print(“Booking of {} belongs to {}”.format(tok, task))

break

Wyjście:

Booking of table belongs to restaurant

Booking of taxi belongs to hotel

Czym są dzieci w analizie zależności?

Dzieci są bezpośrednimi syntaktycznymi zależnymi tokena. Możemy zobaczyć dzieci słowa, używając atrybutu dzieci, tak jak używaliśmy przodków.

list(doc[3].children)

wyjściewyprowadzi

[a, from, to]

Per-āa : Granica Egiptu: Piankhy

https://szkolazpieklarodem.pl/

Król nubijski Piankhy (czasami Piye) stawił czoła czterem północnym królom z 22-24 dynastii w 727 pne i zwyciężył nad nimi. Chociaż pozbawił ich królewskich tytułów, Piankhy pozwolił im mieć pewną władzę na nowych stanowiskach lokalnych gubernatorów, co, szczerze mówiąc, nie różniło się zbytnio od ich roli jako drobnych królów małych regionów. Aby w pełni wzmocnić swoją pozycję króla Egiptu, Piankhy przejął kapłaństwo Amona, co dało mu ostateczną władzę nad regionem tebańskim. Następcy po nim królowie utrzymywali ten związek z kultem Amona, zarówno w Tebach, jak iw Nubii. Pomimo tego przynależności do kultu Amona w Tebach, Piankhy zdecydował się rządzić z nubijskiej stolicy Napaty. Został pochowany w piramidzie w el-Kurru, na północ od Gebel Barkal. Późniejszych władców chowano także w piramidach. Piramidy te bardzo różniły się od piramid egipskich Starego Państwa (patrz rozdział 14), ponieważ były małe, ale wysokie i wąskie. Wiele piramid nubijskich wyprodukowało szereg dóbr grobowych, w tym złotą biżuterię. Następca Piankhy’ego, jego syn Shabaka, powiększył obszar kontrolowany przez dynastię Nubijczyków tak, aby obejmował cały Egipt od południa na północ aż do granicy regionu Sais w Delcie.

AT&T kontra NASM

https://chacker.pl/

Dwie główne formy składni asemblera to AT&T i Intel. Składnia AT&T jest używana przez asembler GNU (gaz), zawarty w pakiecie kompilatorów gcc i jest często używana przez programistów Linuksa. Spośród asemblerów składni Intela najczęściej używany jest Netwide Assembler (NASM). Format NASM jest używany przez wiele asemblerów i debugerów Windows. Te dwa formaty dają w efekcie ten sam język maszynowy; istnieje jednak kilka różnic w stylu i formacie:

  • Operandy źródłowe i docelowe są odwrócone, a początek komentarza oznacza się różnymi symbolami:
  • Format NASM CMD <dest>, <source> <; komentarz>
  • Format AT&T CMD <źródło>, <docelowy> <#komentarz>
  • W formacie AT&T procent przed rejestrami; NASM nie. % oznacza „argument pośredni”.
  • W formacie AT&T znak $ znajduje się przed wartościami literału; NASM nie. Znak $ oznacza „operand bezpośredni”.
  • AT&T obsługuje odniesienia do pamięci inaczej niż NASM.

W tej sekcji przedstawiono składnię i przykłady w formacie NASM dla każdego polecenia. Dodatkowo pokazuje przykład tego samego polecenia w formacie AT&T dla porównania. Ogólnie rzecz biorąc, dla wszystkich poleceń używany jest następujący format:

<optional label:> <mnemonic> <operands> <optional comments>

Liczba operandów (argumentów) zależy od polecenia (mnemonika). Choć instrukcji montażu jest wiele, wystarczy opanować tylko kilka. Zostały one opisane w poniższych sekcjach.

Chatbot z Pytonem : Zatrzymaj słowa

https://szkolazpieklarodem.pl/

Słowa stop to słowa o dużej częstotliwości, takie jak a, an, the, to, które czasami chcemy odfiltrować z dokumentu przed dalszym przetwarzaniem. Słowa stop zazwyczaj mają niewielką zawartość leksykalną i nie mają większego znaczenia. Poniżej znajduje się lista 25 semantycznie nieselektywnych słów stop, które są powszechne w Reuters-RCV1.

Zajmijmy się kodem i spróbujmy zrozumieć, jak to wszystko działa. Aby zobaczyć wszystkie słowa zdefiniowane jako słowa stop w spaCy, możesz uruchomić następujące linie kodu:

from spacy.lang.en.stop_words import STOP_WORDS

print(STOP_WORDS)

Powinieneś zobaczyć coś takiego:

Na liście słów stop spaCy zdefiniowanych jest około 305 słów stop. W razie potrzeby zawsze możesz zdefiniować własne słowa stop i zastąpić istniejącą listę. Aby sprawdzić, czy słowo jest słowem kończącym, czy nie, możesz użyć obiektu nlp spaCy. Możemy użyć atrybutu is_stop obiektu nlp.

Przykład 1:

nlp.vocab[u’is’].is_stop

Wyjście:

TRUE

Przykład 2:

nlp.vocab[u’hello’].is_stop

Wyjście:

FALSE

Przykład 3:

nlp.vocab[u’with’].is_stop

Wyjście:

TRUE

Słowa Stop są bardzo ważną częścią porządkowania tekstu. Pomaga usunąć bezsensowne dane, zanim spróbujemy dokonać faktycznego przetwarzania, aby nadać tekstowi sens. Załóżmy, że budujesz bota, który ma uszczęśliwiać ludzi poprzez ocenę ich nastroju. Teraz należy przeanalizować nastroje zawarte w tekście wprowadzanym przez użytkownika, aby można było sformułować poprawną odpowiedź. W tym miejscu, zanim zaczniemy przeprowadzać podstawową analizę nastrojów, powinniśmy usunąć szum z danych, który istnieje w postaci słów kończących.

Per-āa : Wywieranie presji z południa: wpływy nubijskie

https://szkolazpieklarodem.pl/

Około 727 p.n.e. władza i wpływy Nubijczyków rozprzestrzeniły się na północ od ich ojczyzny aż do regionu tebańskiego. Jeśli Nubijczycy podróżowali dalej na północ, mogą zakłócać spokój podzielonej północy. Północni królowie z 22. (Tanis), 23. (Leontopolis) i 24. (Sais) dynastii połączyli więc siły, aby umożliwić im rozprawienie się z nubijską grupą władców (25. dynastia), aby zapobiec dalszemu rozszerzaniu się jej władzy. Rosnąca siła Nubia nigdy wcześniej nie była zagrożeniem dla Egipcjan. Do panowania Ramzesa II  obszar ten był pod ścisłą kontrolą Egipcjan, którzy eksploatowali nubijskie kamieniołomy i kopalnie złota. Po osłabieniu sił Ramzesa II Nubia zaczęła dystansować się od Egipcjan i zdołała stworzyć własną stolicę w Napacie (w pobliżu czwartej katarakty Nilu). Podczas XXI dynastii arcykapłani Amona zdobyli duże wpływy w Nubii, a nawet zbudowali dla Amona dużą świątynię w Gebel Barkal na terytorium Nubii. Kapłani nubijscy tej świątyni również rozszerzyli swoją władzę na okolicę i ostatecznie uzurpowali sobie królestwo nubijskie. Ci królowie nubijscy używali tytułów i kartuszy na sposób tradycyjnych królów egipskich. Po ugruntowaniu się dynastii nubijskiej zaczęła ona przesuwać się na północ do Egiptu, gdzie egipska władza królewska była oczywiście w stanie osłabienia z powodu licznych podziałów. Nubijczycy postrzegali swój postęp jako okazję do odwrócenia sytuacji i kontrolowania Egiptu dla odmiany.

Chatbot z Pytonem : Rozpoznawanie nazwanych jednostek

https://szkolazpieklarodem.pl/

Rozpoznawanie nazwanych jednostek (NER), znane również pod innymi nazwami, takimi jak identyfikacja jednostek lub wyodrębnianie jednostek, to proces wyszukiwania i klasyfikowania nazwanych jednostek istniejących w danym tekście do wcześniej zdefiniowanych kategorii. Zadanie NER jest w ogromnym stopniu zależne od bazy wiedzy używanej do uczenia algorytmu ekstrakcji NE, więc może działać, ale nie musi, w zależności od dostarczonego zbioru danych, na którym zostało przeszkolone. spaCy posiada bardzo szybki model rozpoznawania jednostek, który jest w stanie zidentyfikować frazy jednostek z danego dokumentu. Jednostki mogą być różnych typów, np. osoba, lokalizacja, organizacja, daty, cyfry itp. Dostęp do tych encji można uzyskać poprzez właściwość .ents obiektu doc. Spróbujmy znaleźć nazwane jednostki, biorąc kilka przykładów z pomocą potężnej możliwości tagowania NER spaCy.

Przykład 1:

my_string = u”Google has its headquarters in Mountain View, California

having revenue amounted to 109.65 billion US dollars”

doc = nlp(my_string)

for ent in doc.ents:

print(ent.text, ent.label_)

Output:

(‘Google’, ‘ORG’)

(‘Mountain View’, ‘GPE’)

(‘California’, ‘GPE’)

(‘109.65 billion US dollars’, ‘MONEY’)

Widzimy jak pięknie i automagicznie model spaCy z łatwością potrafił zidentyfikować, że słowo Google jako Organizacja, Kalifornia to byt geopolityczny, a w podanym zdaniu mówimy o 109,65 miliardach dolarów amerykańskich, co tak naprawdę chodzi o pieniądze. Spróbujmy zbadać więcej przykładów.

Przykład 2:

my_string = u”Mark Zuckerberg born May 14, 1984 in New York is an American technology entrepreneur and philanthropist best known for co-founding and leading Facebook as its chairman and CEO.”

doc = nlp(my_string)

for ent in doc.ents:

print(ent.text, ent.label_)

Wyjście:

(‘Mark Zuckerberg’, ‘PERSON’)

(‘May 14, 1984’, ‘DATE’)

(‘New York’, ‘GPE’)

(‘American’, ‘NORP’)

(‘Facebook’, ‘ORG’)

Przykład 3:

my_string = u”I usually wake up at 9:00 AM. 90% of my daytime goes in

learning new things.”

doc = nlp(my_string)

for ent in doc.ents:

print(ent.text, ent.label_)

Wyjście:

(‘9:00 AM’, ‘TIME’)

(‘90%’, ‘PERCENT’)

Jak widać, ekstraktor encji może z łatwością wyodrębnić informacje o czasie z danego ciągu. Jak widać ekstraktor jednostek próbuje nie tylko zidentyfikować liczbę, ale także dokładną wartość PROCENTOWĄ. Zgodnie z dokumentacją spaCy, modele trenowane w korpusie OntoNotes 51 obsługują następujące typy jednostek.

TYP: OPIS

PERSON: Ludzie, także fikcyjni

NORP: Narodowości, grupy religijne lub polityczne

FAC: Budynki, lotniska, autostrady, mosty itp.

ORG: Firmy, agencje, instytucje itp.

GPE: Kraje, miasta, stany

LOC: lokalizacje inne niż GPE, pasma górskie, zbiorniki wodne

PRODUCT: Przedmioty, pojazdy, żywność itp. (nie usługi)

EVENT : Nazwane huragany, bitwy, wojny, wydarzenia sportowe itp.

WORK_OF_ART: Tytuły książek, piosenek itp.

LAW : Nazwane dokumenty przekształcone w prawa

LANGUAGE: Dowolny nazwany język

DATE: Bezwzględne lub względne daty lub okresy

TIME: Czasy krótsze niż jeden dzień

PERCENT: Procent, w tym „%”

MONEY: Wartość pieniężna, łącznie z jednostką

QUANTITY: Wymiary, takie jak waga lub odległość

ORDINAL: „pierwszy”, „drugi” itp.

CARDINAL: Liczby, które nie należą do innego typu

Ilekroć mamy zamiar zbudować agenta konwersacyjnego lub chatbota w prostych słowach, zawsze mamy na myśli domenę. Na przykład chcemy, aby chatbot umawiał wizytę u lekarza, zamawiał jedzenie, płacił rachunki, wypełniał wnioski bankowe, zajmował się handlem elektronicznym itp. Chatbot mógłby również rozwiązywać kombinację tych problemów. Znając podmiot występujący w pytaniu, można uzyskać rzetelny obraz kontekstu, w jakim pytanie zostało zadane. Spróbujmy to zrozumieć na przykładzie dwóch zdań z podobnymi słowami i różnymi znaczeniami.

my_string1 = u”Imagine Dragons are the best band.”

my_string2 = u”Imagine dragons come and take over the city.”

doc1 = nlp(my_string1)

doc2 = nlp(my_string2)

for ent in doc1.ents:

print(ent.text, ent.label_)

The above for loop over doc1 object gives an output:

(‘Imagine Dragons’, ‘ORG’)

Niesamowite, prawda? Stanie się bardziej intrygujące, gdy zdasz sobie sprawę, że moduł rozpoznawania jednostek nie rozpoznaje żadnej jednostki w drugim ciągu. Uruchom następujący kod, a dokument doc2 nie wygeneruje żadnych danych wyjściowych.

for ent w doc2.ents:

print(ent.text, ent.label_)

Teraz wyobraź sobie, że chcesz wyodrębnić kontekst powyższych dwóch ciągów w środowisku na żywo. Co byś zrobił? Za pomocą Entity Extractor można łatwo rozgryźć kontekst wypowiedzi i inteligentnie poprowadzić rozmowę dalej.

Per-āa : Libijski wyzwoliciel

https://szkolazpieklarodem.pl/

W 925 r. p.n.e. Szeszonk poszedł na wojnę z Palestyną i udowodnił, że wojsko egipskie wciąż jest siłą, z którą należy się liczyć. Jego kampania została nawet porównana do kampanii Ramzesa III przeciwko ludziom morza. Kiedy król Salomon zmarł w 930 p.n.e, jego syn Roboam rządził Judą, a Jeroboam I (pierwszy król plemienia Efraima, który rządził Izraelem) rządził Izraelem. Władcy ci byli w trakcie wojny domowej, kiedy Szeszonk postanowił udowodnić, że Egipt wciąż jest wielki. Armia egipska najpierw pomaszerowała do Judy i rozbiła obóz poza murami Jerozolimy, którą rządził król Roboam. Biblia podaje, że Szeszonk (Sziszak) został przekupiony dużą ilością złota i upragnioną Arką Przymierza, aby nie wszedł i nie splądrował miasta. Szeszonk kontynuował marsz do Izraela, aż dotarł do Megiddo, miejsca, w którym Totmes III stoczył swoją słynną bitwę (patrz rozdział 4). Szeszonk wzniósł w tym miejscu stelę, aby upamiętnić swoje zwycięstwo nad starożytnym Izraelem. Swoje zwycięstwa zanotował dalej w kamieniołomach Gebel Silsila i świątyni w Karnaku.

Chatbot z Pytonem : Stemming i lematyzacja

https://szkolazpieklarodem.pl/

Stemming to proces redukcji odmienionych słów do ich rdzenia, formy podstawowej. Algorytm wynikający redukuje słowa „mówiąc” do rdzenia „powiedzieć”, podczas gdy „prawdopodobnie” staje się domniemaniem. Jak widać, może to być w 100% poprawne, ale nie zawsze. Lematyzacja jest ściśle związana z rdzeniem, ale lematyzacja to algorytmiczny proces określania lematu słowa na podstawie jego zamierzonego znaczenia. Na przykład w języku angielskim czasownik „chodzić” może występować jako „chodzić”, „chodzić”, „chodzić” lub „chodzić”. Podstawowa forma „spaceru”, którą można znaleźć w słowniku, nazywa się lematem na to słowo. spaCy nie ma wbudowanego rdzenia, ponieważ lematyzacja jest uważana za bardziej poprawną i produktywną. Różnica między Stemmingiem a Lematyzacją

  • Stemming wykonuje tę pracę w prymitywny, heurystyczny sposób, odcinając końcówki słów, zakładając, że pozostałe słowo jest tym, czego faktycznie szukamy, ale często obejmuje to usuwanie afiksów derywacyjnych.
  • Lematyzacja próbuje wykonać to zadanie w bardziej elegancki sposób, wykorzystując słownictwo i analizę morfologiczną słów. Próbuje usunąć tylko końcówki fleksyjne i zwrócić słownikową formę słowa, znaną jako lemat.

Chociaż niewiele bibliotek udostępnia metody rdzeniowania i lematyzacji, zawsze najlepszą praktyką jest użycie lematyzacji w celu prawidłowego uzyskania rdzenia słowa. Spróbujmy zbadać lematyzację na kilku przykładach:

Przykład 1:

from spacy.lemmatizer import Lemmatizer

from spacy.lang.en import LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES

lemmatizer = Lemmatizer(LEMMA_INDEX, LEMMA_EXC, LEMMA_RULES)

lemmatizer(‘chuckles’, ‘NOUN’) # 2nd param is token’s part-of-speech tag

Wyjście :

[u’chuckle’]

Przykład 2:

lemmatizer(‘blazing’, ‘VERB’)

Wyjście:

[u’blaze’]

Przykład 3:

lemmatizer(‘fastest’, ‘ADJ’)

Wyjście:

[u’fast’]

Jeśli chcesz zobaczyć porównanie stemmera i lemmatizera, musisz zainstalować jedną z najpopularniejszych bibliotek dla Pythona: Natural Language Toolkit (NLTK). spaCy zyskało popularność niedawno, ale to NLTK sprawiło, że każdy entuzjasta NLP zanurzył się w oceanie NLP i jego technik. Sprawdź następujący przykład, w którym próbujemy użyć dwóch technik stemplowania dostarczonych przez NLTK. Najpierw staramy się uzyskać rdzeń słowa „najszybszy”, używając PorterStemmer, a następnie SnowBallStemmer. Obydwa dają ten sam wynik – to znaczy „najszybszy” – ale kiedy wykonujemy lematyzację za pomocą metody spaCy, otrzymujemy „szybki” jako rdzeń słowa „najszybszy”, co jest bardziej znaczące i poprawne.

from nltk.stem.porter import *

from nltk.stem.snowball import SnowballStemmer

porter_stemmer = PorterStemmer()

snowball_stemmer = SnowballStemmer(“english”)

print(porter_stemmer.stem(“fastest”))

print(snowball_stemmer.stem(“fastest”))

fastest

fastest

Uwaga: przed próbą uruchomienia tego kodu upewnij się, że zainstalowałeś pakiet nltk przy użyciu pip3.

Ponieważ jesteś prawie świadomy tego, co robi stemming lub lematyzacja w NLP, powinieneś być w stanie zrozumieć, że kiedykolwiek spotkasz się z sytuacją, w której potrzebujesz rdzenia słowa, musisz tam przeprowadzić lematyzację. Na przykład często jest używany do budowy wyszukiwarek. Pewnie zastanawiałeś się, w jaki sposób Google wyświetla w wynikach wyszukiwania artykuły, które chciałeś uzyskać, nawet jeśli wyszukiwany tekst nie został poprawnie sformułowany. W tym miejscu posługujemy się lematyzacją. Wyobraź sobie, że wyszukujesz tekst: „Kiedy zostanie wydany kolejny sezon Gry o tron?” Załóżmy teraz, że wyszukiwarka dokonuje prostego dopasowywania częstotliwości słów w dokumencie, aby uzyskać wyniki wyszukiwania. W tym przypadku powyższe zapytanie prawdopodobnie nie będzie pasować do artykułu z podpisem „Data premiery Gry o Tron w następnym sezonie”. Jeśli przeprowadzimy lematyzację pierwotnego pytania przed dopasowaniem danych wejściowych do dokumentów, możemy uzyskać lepsze wyniki. Spróbujemy przetestować tę teorię również w nadchodzących sekcjach.

Per-āa : Za dużo królów

https://szkolazpieklarodem.pl/

Problemy w Delcie doprowadziły w końcu do zmiany dynastycznej, podczas gdy siódmy król 22 dynastii, Szeszonk III, nadal rządził z Tanis. Trzech kolejnych królów rządziło przez następne 100 lat, aż do końca 22. dynastii, ale w międzyczasie w całej Delcie pojawiło się wielu innych władców. Wśród nich wyróżniał się Pedibast, lokalny wódz w Leontopolis, który przejął rządy w środkowej Delcie i podzielił rządy Egiptu na trzy części. Członkowie rodzin Pedibast i Szeszonka (wschód) udali się na południe, aby dołączyć do kapłaństwa Amona, zapewniając, że istniały królewskie powiązania z tą potężną frakcją. Pod koniec 23. dynastii wprowadzenie kolejnej dynastii królów spowodowało dalsze podziały:

Król Szeszonk III w Tanis (22. dynastia)

Król Iupet w Leontopolis (23. dynastia)

Król Peftjauabastet w Herakleopolis (23. dynastia)

Król Nimlot w Hermopolis (23. dynastia)

Król Tefnacht w Sais (24 dynastia)

Każdy z tych królów rządził tylko niewielkim obszarem, ale wszyscy wzięli pełny tytuł króla i zapisali swoje imiona w kartuszach. Wszyscy wydawali się zadowoleni z aranżacji i zostawili się w spokoju. Jednak pod koniec tego okresu (około 727 p.n.e.) pojawiło się znacznie większe zagrożenie, które powstrzymało rozwój dalszych podziałów – potęga Nubii. W rzeczywistości to nowe zagrożenie zachęciło królów do połączenia się i współpracy w harmonii.