From 066055e743ff1a796b3e109e2fff0672a83e0334 Mon Sep 17 00:00:00 2001 From: korzepadawid Date: Wed, 27 Mar 2024 18:11:49 +0100 Subject: [PATCH] eliza --- eliza/__init__.py | 0 eliza/chatbot.py | 305 ++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 1 + 3 files changed, 306 insertions(+) create mode 100644 eliza/__init__.py create mode 100644 eliza/chatbot.py diff --git a/eliza/__init__.py b/eliza/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/eliza/chatbot.py b/eliza/chatbot.py new file mode 100644 index 0000000..abddbe3 --- /dev/null +++ b/eliza/chatbot.py @@ -0,0 +1,305 @@ +from nltk.chat.util import Chat, reflections + +pairs = [ + ( + r"(Potrzebuję|potrzebowałbym) (.*)", + ( + "Dlaczego potrzebujesz %2?", + "Czy naprawdę pomogłoby ci zdobycie %2?", + "Jesteś pewien, że potrzebujesz %2?", + ), + ), + ( + r"(Dlaczego nie możesz|Dlaczego nie mogę) (.*)", + ( + "Czy naprawdę myślisz, że nie mogę %2?", + "Być może w końcu będę mogła %2.", + "Czy naprawdę chcesz, żebym %2?", + ), + ), + ( + r"(Nie mogę|nie mogę) (.*)", + ( + "Skąd wiesz, że nie możesz %2?", + "Może mógłbyś %2, gdybyś spróbował.", + "Co by się stało, gdybyś mógł %2?", + ), + ), + ( + r"(Jestem|jestem) (.*)", + ( + "Czy przyszedłeś do mnie, bo jesteś %2?", + "Jak długo już jesteś %2?", + "Jak się czujesz będąc %2?", + ), + ), + ( + r"(Jestem|jestem) (.*)", + ( + "Jakie to uczucie być %2?", + "Czy lubisz być %2?", + "Dlaczego mówisz mi, że jesteś %2?", + "Dlaczego sądzisz, że jesteś %2?", + ), + ), + ( + r"(Czy jesteś|czy jesteś) (.*)", + ( + "Czemu ważne jest, czy jestem %2?", + "Czy wolałbyś, żebym nie był %2?", + "Być może uważasz, że jestem %2.", + "Możliwe, że jestem %2 -- co myślisz?", + ), + ), + ( + r"(Co|co) (.*)", + ( + "Dlaczego pytasz?", + "Jak odpowiedź na to mogłaby ci pomóc?", + "Co myślisz?", + ), + ), + ( + r"(Jak|jak) (.*)", + ( + "Jak sobie wyobrażasz?", + "Może potrafisz odpowiedzieć na to pytanie sam.", + "O co naprawdę pytasz?", + ), + ), + ( + r"(Ponieważ|ponieważ) (.*)", + ( + "Czy to prawdziwy powód?", + "Jakie inne powody przychodzą ci do głowy?", + "Czy ten powód dotyczy jeszcze czegoś innego?", + "Jeśli %2, to co jeszcze musi być prawdziwe?", + ), + ), + ( + r"(.*) (przepraszam|przepraszam) (.*)", + ( + "Często nie trzeba przepraszania.", + "Jakie uczucia towarzyszą ci, gdy przepraszasz?", + ), + ), + ( + r"(Cześć|cześć)(.*)", + ( + "Cześć... Cieszę się, że dziś wpadłeś/łaś.", + "Hej... Jak się dzisiaj czujesz?", + "Witaj, jak się dziś czujesz?", + ), + ), + ( + r"(Myślę|myślę) (.*)", + ("Czy wątpisz w %2?", "Czy naprawdę tak myślisz?", "Ale nie jesteś pewien/a %2?"), + ), + ( + r"(.*) (przyjaciel|przyjacielka|przyjaciół|przyjaciółka) (.*)", + ( + "Opowiedz mi więcej o swoich przyjaciołach.", + "Kiedy myślisz o przyjacielu, co przychodzi ci do głowy?", + "Dlaczego nie opowiesz mi o przyjacielu z dzieciństwa?", + ), + ), + (r"Tak", ("Wyglądasz na pewnego/a siebie.", "OK, ale czy możesz rozwinąć?",)), + ( + r"(.*) (komputer|komputera|komputerze|komputerowi|komputerem|komputerze) (.*)", + ( + "Czy naprawdę mówisz o mnie?", + "Czy wydaje ci się dziwne rozmawianie z komputerem?", + "Jak czujesz się rozmawiając z komputerami?", + "Czy czujesz się zagrożony/a przez komputery?", + ), + ), + ( + r"(Czy to|czy to) (.*)", + ( + "Czy sądzisz, że to %2?", + "Być może to %2 -- co sądzisz?", + "Gdyby to było %2, co byś zrobił?", + "To mogłoby być %2.", + ), + ), + ( + r"(To|to) (.*)", + ( + "Wyglądasz na bardzo pewnego siebie.", + "Gdybym powiedział/a ci, że to prawdopodobnie nie %2, co byś czuł/a?", + ), + ), + ( + r"(Czy możesz|czy możesz) (.*)", + ( + "Co sprawia, że myślisz, że nie mogę %2?", + "Gdybym mógł/a %2, to co?", + "Dlaczego pytasz, czy mogę %2?", + ), + ), + ( + r"(Czy ja mogę|czy ja mogę) (.*)", + ( + "Być może nie chcesz %2.", + "Chcesz móc %2?", + "Gdybyś mógł/a %2, czy byś chciał/a?", + ), + ), + ( + r"(Jesteś|jesteś) (.*)", + ( + "Dlaczego sądzisz, że jestem %2?", + "Czy cieszy cię myśl, że jestem %2?", + "Być może chciałbyś/łabyś, żebym był/a %2.", + "Może naprawdę rozmawiasz o sobie?", + ), + ), + ( + r"(Jesteś|jesteś) (.*)", + ( + "Dlaczego mówisz, że jestem %2?", + "Dlaczego sądzisz, że jestem %2?", + "Czy rozmawiamy o tobie czy o mnie?", + ), + ), + ( + r"(Nie mogę|nie mogę) (.*)", + ("Czy naprawdę nie możesz %2?", "Dlaczego nie %2?", "Czy chcesz %2?"), + ), + ( + r"(Czuję|czuję) (.*)", + ( + "Dobrze, opowiedz mi więcej o tych uczuciach.", + "Często czujesz %2?", + "Kiedy zazwyczaj czujesz %2?", + "Kiedy czujesz %2, co robisz?", + ), + ), + ( + r"(Mam|mam) (.*)", + ( + "Dlaczego mówisz mi, że masz %2?", + "Czy naprawdę masz %2?", + "Teraz, gdy masz %2, co zrobisz dalej?", + ), + ), + ( + r"(Chciałbym|chciałbym) (.*)", + ( + "Czy mógłbyś wyjaśnić, dlaczego chciałbyś %2?", + "Dlaczego chciałbyś %2?", + "Kto jeszcze wie, że chciałbyś %2?", + ), + ), + ( + r"(Czy jest|czy jest) (.*)", + ( + "Czy myślisz, że jest %2?", + "Prawdopodobnie jest %2.", + "Chciałbyś, żeby było %2?", + ), + ), + ( + r"(Mój|mój) (.*)", + ( + "Rozumiem, twój %2.", + "Dlaczego mówisz, że twój %2?", + "Kiedy twój %2, jak się czujesz?", + ), + ), + ( + r"(Ty|ty) (.*)", + ( + "Powinniśmy rozmawiać o tobie, nie o mnie.", + "Dlaczego mówisz tak o mnie?", + "Dlaczego ci zależy, czy ja %2?", + ), + ), + (r"Dlaczego (.*)", ("Dlaczego nie powiesz mi powodu, dlaczego %1?", "Dlaczego myślisz, że %1?")), + ( + r"(Chcę|chcę) (.*)", + ( + "Co by dla ciebie oznaczało, gdybyś zdobył %2?", + "Dlaczego chcesz %2?", + "Co byś zrobił, gdybyś zdobył %2?", + "Gdybyś zdobył %2, co byś zrobił?", + ), + ), + ( + r"(.*) (matka|matkę|mamę|mamie|matką) (.*)", + ( + "Opowiedz mi więcej o swojej matce.", + "Jaka była twoja relacja z twoją matką?", + "Jak się czujesz w stosunku do swojej matki?", + "Jak to się ma do twoich dzisiejszych uczuć?", + "Dobre relacje rodzinne są ważne.", + ), + ), + ( + r"(.*) (ojciec|ojca|tata|tatę|tacie) (.*)", + ( + "Opowiedz mi więcej o swoim ojcu.", + "Jak twój ojciec sprawiał, że się czułeś?", + "Jak się czujesz w stosunku do swojego ojca?", + "Czy twoja relacja z ojcem ma związek z twoimi dzisiejszymi uczuciami?", + "Czy masz trudności w okazywaniu uczuć rodzinie?", + ), + ), + ( + r"(.*) (dziecko|dziecka|dzieciństwo) (.*)", + ( + "Czy miałeś bliskich przyjaciół jako dziecko?", + "Jaki jest twój ulubiony wspomniany z dzieciństwa?", + "Pamiętasz jakieś sny lub koszmary z dzieciństwa?", + "Czy inni dzieci czasami się z ciebie naśmiewały?", + "Jak myślisz, jak doświadczenia z dzieciństwa wpływają na twoje dzisiejsze uczucia?", + ), + ), + ( + r"(.*)\?", + ( + "Dlaczego pytasz?", + "Rozważ, czy możesz odpowiedzieć na to pytanie sam.", + "Być może odpowiedź tkwi w tobie?", + "Dlaczego mi tego nie powiesz?", + ), + ), + ( + r"koniec|stop", + ( + "Dziękuję za rozmowę.", + "Do widzenia.", + "Dziękuję, to będzie 150 zł. Miłego dnia!", + ), + ), + ( + r"(.*)", + ( + "Proszę, opowiedz mi więcej.", + "Zmieńmy temat... Opowiedz mi o swojej rodzinie.", + "Czy możesz to rozwinąć?", + "Dlaczego mówisz, że %1?", + "Rozumiem.", + "Bardzo interesujące.", + "%1.", + "Rozumiem. A co to ci mówi?", + "Jak się przy tym czujesz?", + ), + ), +] + +eliza_chatbot = Chat(pairs, reflections) + + +def main(): + print("Terapeuta\n---------") + print("Rozmawiaj z programem, pisząc po polsku, używając normalnych liter") + print("i interpunkcji. Wpisz 'koniec', gdy skończysz.") + print("=" * 72) + print("Cześć. Jak się dziś czujesz?") + + eliza_chatbot.converse() + + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt index e69de29..9236aaf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1 @@ +nltk~=3.8.1 \ No newline at end of file