Chatbot z Pytonem : Kawałki Rzeczownika

https://szkolazpieklarodem.pl/

Kawałki rzeczownika lub NP-chunking to w zasadzie „podstawowe frazy rzeczownikowe”. Można powiedzieć, że są to wyrażenia płaskie, których głową jest rzeczownik. Kawałki rzeczownika można traktować jako rzeczownik ze słowami opisującymi rzeczownik.

Spróbujmy wziąć przykład i lepiej go zrozumieć.

Przykład 1:

doc = nlp(u”Boston Dynamics is gearing up to produce thousands of robot dogs”)

list(doc.noun_chunks)

Wyjście:

[Boston Dynamics, thousands, robot dogs]

Chociaż posiadanie kawałków rzeczownika w danym zdaniu bardzo pomaga, spaCy zapewnia inne atrybuty, które również mogą być pomocne. Spróbujmy zbadać niektóre z nich.

Przykład 2:

doc = nlp(u”Deep learning cracks the code of messenger RNAs and protein-coding

potential”)

for chunk in doc.noun_chunks:

print(chunk.text, chunk.root.text, chunk.root.dep_,

chunk.root.head.text)

Wyjście:

Jak widać z tej tabeli, otrzymujemy rzeczownik chunks i ich atrybuty. Poniższa tabela pomoże Ci zrozumieć każdą kolumnę.

Per-āa : Wracając do tradycji

https://szkolazpieklarodem.pl/

Przez mniej więcej 50 lat panowania Psamtika wprowadził w Egipcie szereg zmian. Starał się przywrócić Egipt do dawnych tradycji, pokazać ciągłość kultury. W tym celu przywrócił szereg elementów religijnych, artystycznych i rytualnych ze Starego i Średniego Królestwa. Jednak bycie prawdziwie tradycyjnym królem w tradycyjnym Egipcie oznaczało wolność od obcych wpływów. Wyeliminowanie wpływów zewnętrznych było trudne do osiągnięcia, ale to właśnie zrobiłem Psamtik. W 653 p.n.e., po tym jak szereg problemów wewnętrznych osłabił Asyryjczyków, Psamtik uwolnił się od Asyryjczyków i sam przejął kontrolę nad Egiptem. Ten rozdział sprawił, że Egipt ponownie stał się siłą napędową Bliskiego Wschodu.

Chatbot z Pytonem : Jaki jest pożytek z analizy zależności w chatbotach?

https://szkolazpieklarodem.pl/

Analiza zależności jest jedną z najważniejszych części podczas tworzenia chatbotów od podstaw. Staje się to o wiele ważniejsze, gdy chcesz zrozumieć znaczenie tekstu wprowadzanego przez użytkownika do chatbota. Może się zdarzyć, że nie przeszkoliłeś swoich chatbotów, a mimo to nie chcesz stracić klienta lub odpowiadać jak głupia maszyna. W takich przypadkach analiza zależności naprawdę pomaga znaleźć relację i wyjaśnić nieco więcej, o co może prosić użytkownik. Gdybyśmy mieli wymienić rzeczy, w których pomaga analiza zależności, niektóre z nich mogłyby wyglądać następująco:

  • Pomaga w znalezieniu powiązań między słowami lub gramatycznie poprawne zdania.
  • Można go używać do wykrywania granic zdania.
  • Bardzo przydatne jest sprawdzenie, czy użytkownik mówi jednocześnie o więcej niż jednym kontekście.

Pewnie się zastanawiasz, co się stanie, jeśli użytkownik bota powie jakieś niepoprawne gramatycznie zdanie lub użyje komunikatu SMS, przekazując informacje na jakiś temat? Jak omówiono w Rozdziale 1, należy zachować ostrożność w takich sytuacjach i odpowiednio sobie z nimi radzić, stosując techniki NLP. Musisz napisać własny, niestandardowy NLP, aby zrozumieć kontekst użytkownika lub chatbota i na tej podstawie zidentyfikować możliwe błędy gramatyczne, które może popełnić użytkownik. Podsumowując, musisz być przygotowany na takie scenariusze, w których użytkownik wprowadzi wartości śmieciowe lub zdania niepoprawne gramatycznie. Nie możesz obsłużyć wszystkich takich scenariuszy na raz, ale możesz stale udoskonalać swojego chatbota, dodając niestandardowy kod NLP lub ograniczając wprowadzanie danych przez użytkownika z założenia.

Per-āa : Okres saite: Psamtik I i inni

https://szkolazpieklarodem.pl/

Po 665 p.n.e. Asyryjczycy sprawowali władzę nad Egiptem – choć wybrali miejscową ludność do objęcia roli króla, oczywiście pod ich rządami. Egipt był teraz państwem wasalnym imperium asyryjskiego. Stolica znajdowała się w Sais w Delcie, a królowie okresu saitów utworzyli 26. dynastię. (Ponieważ nubijska 25. dynastia nadal sprawowała kontrolę, gdy Asyryjczycy zajęli północ, te dwie dynastie występowały jednocześnie). . Psamtik wysłał swoją córkę Nitokris do świątyni Amona w Karnaku, gdzie nadano jej kapłański tytuł żony Boga Amona, co stawiało ją dość wysoko w hierarchii kultowej. To połączenie władzy królewskiej i religijnej – a także bogactwa kultu – sprawiło, że północą i południem rządziła jedna osoba. Ten zjednoczony Egipt nie był jednak stabilny i Psamtik został zmuszony do zebrania armii, by rozprawić się z licznymi pomniejszymi wodzami, którzy powstali w Delcie. Wszyscy wodzowie chcieli kontrolować kawałek Egiptu, a Asyryjczycy chcieli jednego władcy, który byłby łatwiejszy do kontrolowania.

Chatbot z Pytonem : Interaktywna wizualizacja do analizy zależności

https://szkolazpieklarodem.pl/

Bardzo trudno jest zrozumieć koncepcję pełnej analizy zależności po raz pierwszy. spaCy zapewnia niezwykle łatwy i interaktywny sposób zrozumienia analizy zależności. spaCy v2.0+ posiada moduł wizualizacji, w którym możemy przekazać Doc lub listę obiektów Doc do displaCy i wywołać metodę serwowania displaCy w celu uruchomienia serwera WWW. Rysunek  pokazuje, jak interaktywna wizualizacja będzie wyglądać pod kątem analizy zależności.

Możesz także wygenerować wizualizację analizy zależności na rysunku 2-5. Aby utworzyć taką wizualizację, uruchom poniższy kod, a następnie przejdź do http://localhost:5000 w swojej przeglądarce. Spróbujmy zrobić wizualizację naszego przykładowego zadania i celu zadań.

from spacy import displacy

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

displacy.serve(doc, style=’dep’)

Uruchomienie tego kodu da wynik taki jak na rysunku . Jeśli otrzymasz coś podobnego, przejdź do innej karty przeglądarki i wpisz http://localhost:5000. Otrzymujemy wizualizację analizy zależności dla tego ciągu w kodzie

Weźmy jeszcze jeden przykład analizowania zależności, w którym zakładamy, że użytkownik zadaje następujące zdanie:

Jakie miejsca warto odwiedzić w Berlinie i zatrzymać się w Lubece?

Najpierw utworzymy obiekt dokumentu, jak pokazano tutaj:

doc = nlp(u”What are some places to visit in Berlin and stay in Lubeck”)

Teraz mamy miejsca, o których się mówi i działania, których chce użytkownik:

places = [doc[7], doc[11]] #[Berlin, Lubeck]

actions = [doc[5], doc[9]] #[visit, stay]

Ponieważ znasz już tagowanie POS i wyodrębnianie jednostek, możesz łatwo automatycznie uzyskać miejsca i działania. Teraz, gdy mamy już miejsca, przejrzyjmy każdego z jego przodków i sprawdźmy, czy w działaniach znaleziono jakichś przodków. Pierwszym rodzicem miejsca znajdującego się na liście akcji powinna być akcja dla danego miejsca.

for tok in place.ancestors:

if tok in actions:

print(“User is referring {} to {}”).format(place, tok)

break

Wyjście:

Użytkownik poleca: Berlin do odwiedzenia

Użytkownik poleca: Lubeka zostaje

Jak widać w tych przykładach, analiza zależności ułatwia zrozumienie, do czego odwołuje się użytkownik. Widzieliśmy, że również w przypadku dwóch różnych zadań możemy dość dokładnie określić oczekiwania i na tej podstawie sformułować kolejną odpowiedź.

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.