GOATS/Eliza.ipynb

30 KiB

Importy

!pip install nltk
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: nltk in /home/students/s495716/.local/lib/python3.9/site-packages (3.8.1)
Requirement already satisfied: click in /usr/local/lib/python3.9/dist-packages (from nltk) (8.1.3)
Requirement already satisfied: joblib in /usr/lib/python3/dist-packages (from nltk) (0.17.0)
Requirement already satisfied: regex>=2021.8.3 in /usr/local/lib/python3.9/dist-packages (from nltk) (2023.5.5)
Requirement already satisfied: tqdm in /usr/local/lib/python3.9/dist-packages (from nltk) (4.64.1)
from nltk.chat.util import Chat

Regulacje

regulations = [
        (
        r"(.*) F1 (.*)",
        (
            "Ooo a więc jesteś fanem F1, czy kibicujesz jakiemuś zespołowi?",
            "Jak długo śledzisz F1?",
            "Bardziej interesuje cię aspekt czysto sportowy czy polityczny F1?",
            "Nie nudzi cię dominacja Red Bulla i Maxa Verstappena?",
        ),
    ),
    (
        r"(.*) GOAT(.*)",
        (
            "Każdy ma swojego GOAT'a, moim jest Robert Kubica, a twoim?",
            "Ciężko wybrać GOATA, najlepszego kierowce dekady tak, ale all time? No nie wiem",
            "Czy twoim GOAT'em jest Latifi?",
        ),
    ),
    (
        r"(.*) kibic(.*)",
        (
            "A ty komu kibicujesz?",
            "Kibicem się jest a nie bywa, prawda?",
            "Kogo kibicem jesteś?",
        ),
    ),
    (
        r"(.*) racecraft (.*)",
        (
            "Myślisz że racecraft to najważniejsza umiejętność?",
            "Kto twoim zdaniem ma najlepszy racecraft w obecnej stawce?",
        ),
    ),
    (
        r"(.*) kwalifikac(.*)",
        (
            "Punkty zdobywa się w niedziele, ale ciężko zdobyć punkty zwalając sobotę",
            "Jaki kierowca najlepiej radzi sobie w kwalifikacjach obecnie?",
            "Jeżeli chodzi o kwalifikacje to pomagają nie utknąć w gąszczu bolidów podczas startu wyścigu",
            "I co o nich sądzisz?",
        ),
    ),
    (
        r"(.*) wyścig (.*)",
        (
            "Max znowu wygrał?",
            "Co wydarzyło się tym razem?",
            "Podobał ci się ten wyścig?",
            "Kto był kierowcom dnia twoim zdaniem?",
        ),
    ),
    (
        r"(.*) GP(.*)",
        (
            "Max znowu wygrał?",
            "Co wydarzyło się tym razem?",
            "Podobał ci się ten wyścig?",
            "Kto był kierowcom dnia twoim zdaniem?",
        ),
    ),
    (
        r"(.*) Grand Prix(.*)",
        (
            "Max znowu wygrał?",
            "Co wydarzyło się tym razem?",
            "Podobał ci się ten wyścig?",
            "Kto był kierowcom dnia twoim zdaniem?",
        ),
    ),
    (
        r"(.*) Red Bull (.*)",
        (
            "Ludzie muszą często nazywać cię kibicem sukcesu?",
            "Długo kibicujesz Red Bullowi?",
            "Ostatnio źle dzieje się w państwie Red Bullowskim, jakie masz zdanie na temat całej tej afery?",
            "Dobrze wspominasz Abu Zabi 2021?",
            "Nie uważasz że wasze połączenie z RB jest zbyt mocne?",
        ),
    ),
    (
        r"(.*) Ferrari (.*)",
        (
            "Najtwardszy tifoso! Ten sezon jest nasz prawda?",
            "Hamilton w Ferrari, uważasz że to dobry ruch?",
            "Ten cyrk z Maranello znowu popsuł pit stop, jakiś pomysł jak im pomóc?",
            "Podobno każdy jest kibicem ferrari chociaż trochę, zgadzasz się z tym stwierdzeniem?",
            "Carlos Sainz czy Charles Leclerc, kto twoim zdaniem jest lepszym kierowcom?",
        ),
    ),
    (
        r"(.*) Mercedes (.*)",
        (
            "Uuu mercedes, po 2021 to już tak dobrze im nie idzie co?",
            "Tak szczerze, uważasz że zostaliście okradzeni w 2021?",
            "Myślisz że George Rusell jest wstanie zostać liderem zespołu w 2025?",
            "Toto Wolff czy Christian Horner?",
        ),
    ),
    (
        r"(.*) Alpine (.*)",
        (
            "Jak to jest możliwe że zespół fabryczny jest obecnie tak tragiczny?",
            "Wiadomo kto w końcu jest szefem zespołu?",
            "Myślisz że inwestycje celebrytów w zespół są w stanie wymiernie pomóc im walczyć o mistrzostwa?",
            "Jesteś zadowolony z przejścia Gaslyego do Alpine?",
            "Alpine xdd która to już trzy czy pięcio latka tego zespołu?",
        ),
    ),
    (
        r"(.*) Aston Martin (.*)",
        (
            "Długo jeszcze tata Stroll będzie trzymał Lance w zespole?",
            "No ale tym razem nie skopiowali mercedesa nie?",
            "Dziad z Oviedo dowiezie punkty spokooojnie",
            "Tempo było dobre, ale znowu ten Stroll?",
        ),
    ),
    (
        r"(.*) McLaren (.*)",
        (
            "Imponująco dźwigneli się po starcie sezonu 2023, myślisz że w tym roku pójdzie im lepiej?",
            "Czy Oscar Piastri szybciej wygra swój pierwszy wyścig niz Lando Norris?",
            "Czy Lando Norris zostanie drugim Hulkenbergiem?",
            "Zac Brown chyba może być już uznawany za jednego z najlepszych szefów zespołów, prawda?",
            "Śledzisz McLarena tylko w F1 czy IndyCar również?",
        ),
    ),
    (
        r"(.*) Haas (.*)",
        (
            "Gene Haas raczej nie chce inwestować w zespół, pytanie czy zwolnienie Steinera wystarczy aby poprawić wyniki?",
            "Cykl życia kierowców Haasa, stary kierowca zaczyna jeździć słabo, zatrudniasz jeszcze starszego, jeszcze starszy klepie starego kierowce i tak w kółko xd",
            "Póki co Haas nawet nawet wystartował, no ale mają części od Ferrari",
            "Czekaj czekaj, kibicujesz Haasowi?",
            "Haas był, jest i będzie ostatni. Taka ich rola",
        ),
    ),
    (
        r"(.*) Williams (.*)",
        (
            "W Williamsie mamy 1.5 kierowcy, no chyba że się nie zgadzasz?",
            "Albon sam targa ten zespół za uszy",
            "No w końcu przynajmniej mają kierownicę ze zintegrowanym ekranem xd",
            "Claire Williams zniszczyła ten zespół, nie zapraszam do dyskusji",
            "To że powrót Roberta wyglądał jak wyglądał to wina Claire Williams",
        ),
    ),
    (
        r"(.*) Sauber (.*)",
        (
            "Dobrze że użyłeś twierdzenia sauber, bo tak to nie wiadomo czy Kick czy Stake",
            "Audi ostatnio ogłosiło że wykupiło 100% udziałów w Sauberze. Myślę że mogą dźwignąć ten zespół, a ty?",
            "Sauber jest w ciekawej sytuacji, czekają na Audi, mogliby poeksperymentować z kierowcami bo na kasie i tak im nie zależy a nic nie robią",
            "Co jak co, ale sauber to dosyć ikoniczny zespół, podzielasz moje zdanie?",
        ),
    ),
    (
        r"(.*) Racing Bulls (.*)",
        (
            "Racing Bulls, RB, Visa CashApp RB, to jak w końcu sie nazywają?",
            "Na ten moment Tsunoda objeżdża Riccardo, ale też Yuki zazwyczaj dobrze wchodzi w sezon. Wierzysz w Riccardo w red bullu?",
            "Odkąd minardi zamieniło się w toro rosso, związek między tym zespołem a red bullem dalej jest kontrowersyjny. Też tak myślisz?",
        ),
    ),
    (
        r"(.*) Verstappen (.*)",
        (
            "Nudzi cię jego dominacja?",
            "Myślisz że ma papiery na bycie wymienianym w panteonie najlepszych kierowców?",
            "Raczej puszkarz czy oponiarz?",
            "Max czy Jos?",
            "Z takim bolidem ciężko żeby nie dominował.",
        ),
    ),
    (
        r"(.*) FIA (.*)",
        (
            "FIA czy MaFIA?",
            "Obecnie trwa wojna między FOM a FIA, myślisz żę FOM jest w pozycji uprzywilejowanej?",
            "FIA a dokładniej Ben Sulayem ostatnio często znajduje się pod atakiem",
            "Myślisz że FIA chce dobrze?",
        ),
    ),
    (
        r"(.*) kibicujesz (.*)",
        (
            "Jestem kibicem sportu, a ty?",
            "Nie mam jednego ulubionego",
            "Niby nie mam jednego ulubionego, ale zawsze troche kibicuje się Ferrari",
        ),
    ),
    (
        r"Co to jest (.*)",
        (
            "Nie wiesz co to %1?",
            "No a jak myślisz, co to może być?",
            "%1? Dobrze się zastanów",
        ),
    ),
    (
        r"Kiedy (.*)",
        (
            "Ale konkretna data?",
            "PowrótRoberta.pl",
            "Jak nie w przyszły, to pewnie następny weekend",
        ),
    ),
    (
        r"Kim jest (.*)",
        (
            "A co dokładnie chcesz wiedzieć o %1",
            "Dlaczego chcesz się dowiedzieć, kim jest %1?",
            "Jak myślisz, kim może być %1?",
        ),
    ),
    (
        r"(.*) hobby (.*)",
        (
            "Oglądanie F1 oraz śledzenie ciekawostek związanych z tym sportem",
            "Obserwowanie cyrku z Maranello",
            "Czytanie PowrótRoberta.pl",
        ),
    ),
    (
        r"Kocham (.*)",
        (
            "Ty tak serio?",
            "Jakie są powody twojej miłości do %1?",
            "Szczerze?",
        ),
    ),
    (
        r"(.*) denerwuje(.*)",
        (
            "Ale z jakiegoś konkretnego powodu to cię denerwuje?",
            "Nie jesteś jedyną osobą którą to denerwuje",
        ),
    ),
    (
        r"Opowiedz mi o (.*)",
        (
            "Wersja długa czy krótka?",
            "Jaki aspekt %1 chciałbyś poznać?",
            "Czy interesuje Cię konkretny aspekt %1?",
        ),
    ),
    (
        r"(.*) plany (.*)",
        (
            "Jestem botem, więc nie mam planów w tradycyjnym tego słowa znaczeniu. Podobnie jak Ferrari",
            "Moje zadanie polega na odpowiadaniu na Twoje pytania. I śmianiu się z Alpine",
            "Nie mam konkretnych planów, ale jestem tutaj, aby Ci pomóc. Alpine też by się przydała pomoc",
        ),
    ),
    (
        r"(.*)marzenia(.*)",
        (
            "Moim marzeniem jest kolejny tytuł mistrza konstruktrów dla Ferrari",
            "Dołożył bym do tego żeby Ocona i Strolla nie było w F1",
            "Myślisz że powrót Roberta to realne marzenie?",
        ),
    ),
    (
        r"Czy wierzysz w (.*)",
        (
            "Nie jestem do końca przekonany, ale w powrót Roberta wierze",
            "To zależy od FIA i FOM",
        ),
    ),
    (
        r"(.*)boisz(.*)",
        (
            "Każdy się trochę tego obawia",
            "Jak radzisz sobie ze swoimi lękami?",
            "Czy boisz się czegoś konkretnego?",
        ),
    ),
    (
        r"(.*)myślisz(.*)",
        (
            "A co ty o tym sądzisz?",
            "Miałeś już podobną sytuację?",
            "Co sądzisz o tej kwestii?",
        ),
    ),
    (
        r"(.*)szczęśliwy(.*)",
        (
            "Mnie na przykład uszczęśliwiają zwycięstwa Ferrari, a ciebie?",
            "Jakie są Twoje sposoby na szczęście? Oprócz oglądania F1",
            "Czy masz szczególne chwile, które sprawiają, że czujesz się szczęśliwy?",
        ),
    ),
    (
        r"(.*)ulubi(.*)tor(.*)",
        (
            "Moje ulubione tory to Suzuka, Monza i Spa, a twoje?",
            "Masz jakieś ulubione tory?",
            "Na jakim torze chciałbyś obejrzeć GP?",
        ),
    ),
    (
        r"(.*)zdolności(.*)",
        (
            "Kierowcy F1 to zdolne jednostki, najlepsi kierowcy na świecie",
            "Myślisz że w jakimś aspekcie jesteś w stanie dorównać kierowcy F1?",
            "Jaką ceche kierowcy F1 chciałbyś mieć?",
        ),
    ),
    (
        r"(.*)motywu(.*)",
        (
            "Czy masz jakieś szczególne motywacje?",
            "Jak radzisz sobie z utrzymaniem motywacji?",
            "Czy masz jakieś cele, które Cię napędzają?",
        ),
    ),
    (
        r"Jakie są twoje plany na przyszłość?",
        (
            "Rozwinąć baze odpowiedzi i zobaczyć GP którego nie wygrywa Max Verstappen",
            "A jakie są twoje plany na przyszłość związane z F1",
            "Co chciałbyś robić w przyszłości związanego z F1?",
        ),
    ),
    (
        r"(.*)historia(.*)",
        (
            "Historia mówi jasno, w Polsce w każdym mieście jest ulica Prosta, a Senny już nie :v",
            "Co chcesz wiedzieć o historii F1?",
            "Która era silnikowa cię interesuje?",
        ),
    ),
    (
        r"(.*)miłość(.*)",
        (
            "Miłość to głębokie uczucie, najgłębsze do Ferrari <3",
            "Co oznacza miłość dla Ciebie?",
            "Do jakiego zespołu czujesz miłość?",
        ),
    ),
    (
        r"(.*)doświadczen(.*)",
        (
            "Bez dwóch zdań najbardziej doświadczonym kierowcom w stawce jest Fernando Alonso, też tak myślisz?",
            "Jeżeli Charles Leclerc nabierze doświadczenia to ma papiery na mistrzostwo świata, tak czy nie?",
            "Jaki jest twoim zdaniem najbardziej doświadczony kierowca w historii?",
        ),
    ),
    (
        r"(.*)sukces(.*)",
        (
            "Jesteś kibicem sukcesu?",
            "Jak zdefiniowałbyś sukces dla Alpine?",
            "Czy sukces w F1 można zmierzyć bez tytułów?",
        ),
    ),
    (
        r"(.*)\?",
        (
            "Dlaczego pytasz?",
            "Dobrze się nad tym zastanów",
            "Powiesz mi czy nie?",
        ),
    ),
    (
        r"KONIEC",
        (
            "Dziena szefie",
            "Naura",
            "Forza Ferrari!",
        ),
    ),
    (
        r"Potrzebuję (.*)",
        (
            "Dlaczego potrzebujesz %1?",
            "Czy naprawdę pomógłby Ci %1?",
            "Jesteś pewien, że potrzebujesz %1?",
        ),
    ),
    (
        r"Dlaczego nie (.*)",
        (
            "Czy naprawdę sądzisz, że nie %1?",
            "Być może w końcu będę %1.",
            "Naprawdę chcesz, żeby %1?",
        ),
    ),
    (
        r"Dlaczego nie mogę (.*)",
        (
            "Czy uważasz, że powinieneś móc %1?",
            "Gdybyś mógł %1, co byś zrobił?",
            "Jesteś tego pewien?",
            "Próbowałeś?",
        ),
    ),
    (
        r"Nie mogę (.*)",
        (
            "Skąd wiesz, że nie możesz %1?",
            "A próbowałeś że wiesz?",
            "Co by ci pomogło z %1?",
        ),
    ),
    (
        r"Jestem (.*)",
        (
            "Czy przyszedłeś do mnie, bo jesteś %1?",
            "Jak długo już jesteś %1?",
            "Serio jesteś %1?",
        ),
    ),
    (
        r"Czy jesteś (.*)",
        (
            "Może i jestem %1",
            "A nie mogę być %1?",
            "Masz prawo uważać że jestem %1",
            "Czy to istotne?",
        ),
    ),
    (
        r"Co (.*)",
        (
            "Dlaczego pytasz?",
            "Jakby ci ta informacja pomogła?",
            "Pomidor",
        ),
    ),
    (
        r"Jak (.*)",
        (
            "Jak sobie wyobrażasz?",
            "Niby wiem jak, ale nie jestem pewien tej odpowiedzi",
            "Pomidor",
        ),
    ),
    (
        r"Ponieważ (.*)",
        (
            "Czy to jest prawdziwy powód?",
            "Jakie inne powody przychodzą Ci do głowy?",
            "Czy ten powód dotyczy czegoś jeszcze?",
            "Jeśli %1, co jeszcze musiałoby być prawdą?",
        ),
    ),
    (
        r"(.*) przepraszam (.*)",
        (
            "Nie ma za co, luzik",
            "Dobrze się czujesz przepraszając?",
        ),
    ),
    (
        r"Cześć(.*)",
        (
            "Sieema, jak tam F1?",
            "Elo, oglądałeś ostatnie GP?",
            "Cześć, dalej Forza Ferrari?",
        ),
    ),
    (
        r"Myślę (.*)",
        ("Czy wątpisz w %1?", "Czy naprawdę tak sądzisz?", "Ale nie jesteś pewny %1?"),
    ),
    (r"Tak", ("Wydajesz się całkiem pewny.", "OK, ale czy możesz rozwinąć trochę?")),
    (
        r"(.*) komputer(.*)",
        (
            "OK Computer, też jestem fanem tego albumu",
            "Komputer czy nie, alpine to ogóry",
            "Nawet komputer wie że #RobertWróci",
        ),
    ),
    (
        r"Czy to (.*)",
        (
            "Czy myślisz, że to %1?",
            "Być może to %1 -- co o tym myślisz?",
            "Gdyby to %1, co byś zrobił?",
            "To mogłoby być %1.",
        ),
    ),
    (
        r"To jest (.*)",
        (
            "Wydajesz się bardzo pewny.",
            "Gdybym powiedział Ci, że prawdopodobnie to nie jest %1, co byś czuł?",
        ),
    ),
    (
        r"Czy możesz (.*)",
        (
            "Co sprawia, że myślisz, że nie mogę %1?",
            "Gdybym mógł %1, to co?",
            "Dlaczego pytasz, czy mogę %1?",
        ),
    ),
    (
        r"Czy mogę (.*)",
        (
            "Być może nie chcesz %1.",
            "Chcesz móc %1?",
            "Gdybyś mógł %1, czy byś chciał?",
        ),
    ),
    (
        r"Jesteś (.*)",
        (
            "Dlaczego sądzisz, że jestem %1?",
            "Czy cieszy Cię myśl, że jestem %1?",
            "Być może chciałbyś, żebym był %1.",
            "Może naprawdę rozmawiamy o Tobie?",
        ),
    ),
    (
        r"Jesteś (.*)",
        (
            "Dlaczego mówisz, że jestem %1?",
            "Dlaczego uważasz, że jestem %1?",
            "Rozmawiamy o Tobie, czy o mnie?",
        ),
    ),
    (
        r"Nie jestem (.*)",
        ("Czy naprawdę nie %1?", "Dlaczego nie %1?", "Czy chcesz %1?"),
    ),
    (
        r"Czuję (.*)",
        (
            "Dobrze, opowiedz mi więcej o tych uczuciach.",
            "Czy często czujesz %1?",
            "Kiedy zazwyczaj czujesz %1?",
            "Kiedy czujesz %1, co robisz?",
        ),
    ),
    (
        r"Mam (.*)",
        (
            "Dlaczego mi to mówisz, że masz %1?",
            "Czy naprawdę masz %1?",
            "Teraz, gdy masz %1, co zrobisz dalej?",
        ),
    ),
    (
        r"Chciałbym (.*)",
        (
            "Czy mógłbyś wyjaśnić, dlaczego chciałbyś %1?",
            "Dlaczego chciałbyś %1?",
            "Kto jeszcze wie, że chciałbyś %1?",
        ),
    ),
    (
        r"Czy jest (.*)",
        (
            "Czy myślisz, że jest %1?",
            "Prawdopodobne, że jest %1.",
            "Czy chciałbyś, żeby był %1?",
        ),
    ),
    (
        r"Mój (.*)",
        (
            "Rozumiem, twój %1.",
            "Dlaczego mówisz, że twój %1?",
            "Kiedy twój %1, jak się czujesz?",
        ),
    ),
    (
        r"Ty (.*)",
        (
            "Powinniśmy rozmawiać o Tobie, a nie o mnie.",
            "Dlaczego mówisz to o mnie?",
            "Dlaczego Ci zależy, czy ja %1?",
        ),
    ),
    (r"Dlaczego (.*)", ("Dlaczego nie powiesz mi powodu, dlaczego %1?", "Dlaczego myślisz, że %1?")),
    (
        r"Chcę (.*)",
        (
            "Co by to dla Ciebie oznaczało, gdybyś dostał %1?",
            "Dlaczego chcesz %1?",
            "Co byś zrobił, gdybyś dostał %1?",
            "Gdybyś dostał %1, co byś potem zrobił?",
        ),
    ),
    (
        r"(.*)",
        (
            "Powiedz coś więcej",
            "Zmieńmy temat... czy Verstappen to GOAT?",
            "Rozwiń myśl...",
            "Dlaczego mówisz, że %1?",
            "Rozumiem.",
            "Bardzo ciekawe.",
            "%1.",
            "Rozumiem. Co to ci mówi?",
            "Naprawde tak uważasz?",
            "No nie wiem nie wiem",
        ),
    )
]

Reflections

reflections = {
  "jestem"       : "jesteś",
  "byłem"      : "byłeś",
  "ja"          : "ty",
  "mój"         : "twój",
  "jesteś"    : "Jestem",
  "byłeś"   : "byłem",
  "twój"       : "mój",
  "ty"        : "ja",
  "ja"         : "ty",
  "mam": "masz",
  "masz": "mam",
  "twoje": "moje",
}

Main

def eliza_run():
    print("Porozmawiajmy o F1?")
    chat = Chat(regulations, reflections)
    chat.converse()
if __name__ == "__main__":
    eliza_run()
Porozmawiajmy o F1?
> Ostatnie Grand Prix było nudne moim zdaniem
Max znowu wygrał?
> Tak, odjechał na 10 sekund i narazie
OK, ale czy możesz rozwinąć trochę?
> No Red Bull dalej ma dominujący bolid i będzie wygrywał bez problemu
Długo kibicujesz Red Bullowi?
> Nie jestem kibicem Red Bulla, kibicuje Ferrari
Kogo kibicem jesteś?
> No Ferrari
Dlaczego mówisz, że no ferrari?
> bo kibicuje ferrari
A ty komu kibicujesz?
> Alpine jestem kibicem Alpine
Kibicem się jest a nie bywa, prawda?
> Tak kibicem się jest
Kibicem się jest a nie bywa, prawda?