diff --git a/cheddar.py b/cheddar.py index 7e970ca..176e510 100644 --- a/cheddar.py +++ b/cheddar.py @@ -1,111 +1,134 @@ -from nltk.chat.util import Chat +import re +import random -# "cheddar" chatbot -reflections = { - "jestem": "jestes", - "bylem": "byles", - "bylam": "bylas", - "ja": "ty", - "jestem": "jestes", - "chcialbym": "chcialbys", - "chcialabym": "chcialabys", - "mam": "masz", - "bede": "bedziesz", - "moj": "twoj", - "twoja": "moja", - "moim": "twoim", - "mojego": "twojego", - "jestes": "jestem", - "byles": "bylem", - "masz": "mam", - "bedziesz": "bede", - "twoj": "moj", - "twoja": "moja", - "twoim": "moim", - "twojego": "mojego", - "ty": "ja", - "nasz": "wasz", - "moge": "mozesz" -} +class Elizabeth: + questions = ((r'Potrzebuję (.*)', + ('Czemu potrzebujesz %1?', + 'Naprawdę pomogłoby, gdybyś miał %1?', + 'Czy aby na pewno potrzebujesz %1?')), + (r'Jestem (.*)', + ('Czy przyszedłeś dziś do mnie, ponieważ jesteś %1?', + 'Jak długo jesteś %1?', + 'Jak czujesz się z byciem %1?')), + ('Jesteś (.*)', + ('Czemu to ważne, że jestem %1?', + 'Chciałbyś, abym nie był %1?', + 'Mozę to ty uważasz, że jestem %1.', + 'Mogę być %1, co o tym sądzisz?')), + (r'Co (.*)', + ('Czemu pytasz?', + 'W jaki sposób odpowiedź na to pytania by ci pomogą?', + 'A co ty myślisz?')), + (r'Jak (.*)', + ('A jak myślisz?', + 'Może sam odpowiedz sobie na to pytanie', + "Jakie jest twoje PRAWDZIWE pytanie")), + (r'Ponieważ (.*)', + ('Czy to na pewno prawdziwy powód?', + 'Jakie inne powody przychodzą ci na myśl?', + 'Skoro %1, to jakie inne powody są prawdziwe?')), + (r'(.*) przepraszam (.*)', + ('Nie masz za co przepraszać', + 'Jakie uczucia masz w sobie, gdy przepraszasz?')), + (r'Myślę, że (.*)', + ('Jesteś niepewny co do %1?', 'Naprawdę tak myślisz?', "Ale nie jesteś pewien czy %1?")), + (r'Dlaczego (.*)', + ("Czemu to ty nie powiesz mi dlaczego %1?", 'CZemu myślisz, że %1?')), + (r'Chcę (.*)', + ('Co to by dla ciebie oznaczało, gdybyś dostał %1?', + 'Czemu chcesz %1?', + 'Co byś zrobił, gdybyś dostał %1?', + 'Gdybyś dostał %1, to co byś zrobił?')), + (r'(.*)matka(.*)', + ('Powiedz mi więcej o swojej matce.', + 'Jak wyglądałą relacja z twoją matką?', + 'Jakie są twoje uczucia dziś?')), + (r'(.*) ojciec(.*)', + ('Powiedz mi więcej o swoim ojcu.', + 'Jak twój ojciec sprawia, że się czujesz?' + )), -pairs = ( - ( - r"Potrzebuje (.*)", - ( - "Dlaczego potrzebujesz %1?", - "Czy naprawdę pomogloby Ci zdobycie %1?", - "Czy jestes pewien, ze potrzebujesz %1?", - ), - ), - ( - r"Dlaczego nie moge (.*)", - ( - "Czy uwazasz, ze powinienes moc %1?", - "Gdybys mogl %1, co bys zrobil?", - "Nie wiem, dlaczego nie mozesz %1?", - "Czy naprawde probowales?", - ), - ), - ( - r"Nie moge (.*)", - ( - "Skad wiesz, ze nie mozesz %1?", - "Byc moze moglbys %1, gdybys sprobowal.", - "Co musialbys zrobic zeby %1?", - ), - ), - ( - r"Jestem (.*)", - ( - "Czy rozmawiasz ze mna poniewaz jestes %1?", - "Od jak dawna jestes %1?", - "Jak sie czujesz z tym, ze jestes %1?", - "Jak sie czujesz bedac %1?", - "Dlaczego mowisz mi, ze jestes %1?", - "Dlaczego uwazasz, ze jestes %1?", - ), - ), - ( - r"Czy jestes (.*)", - ( - "Dlaczego ma to znaczenie czy jestem %1?", - "Czy wolabys gdybym nie byl %1?", - "Byc moze uwazasz, ze jestem %1.", - "Byc moze jestem %1, co o tym sadzisz?", - ), - ), - ( - r"Co (.*)", - ( - "Dlaczego pytasz?", - "W jaki sposob pomoglaby ci odpowiedz na to pytanie?", - "Co o tym myslisz?", - ), - ), - ( - r"Jak (.*)", - ( - "Jak sadzisz?", - "Byc moze potrafisz odpowiedziec na swoje wlasne pytanie.", - "O co tak naprawde pytasz?", - ), - ), - ( - r"Poniewaz (.*)", - ( - "Czy to jest prawdziwy powod?", - "Jakie inne powody przychodza Ci na mysl?", - "Czy ten powod odnosi sie do czegos innego?", - "Jesli %1, to co jeszcze musi byc prawda?", - ), - ), -) + (r'(.*)\\?', + ('Być może odpowiedź jest w tobie?', + 'Czemu to TY nie powiesz MI?', + "Czemu o to pytasz?")), -cheddar = Chat(pairs, reflections) + (r'(.*)', + ('Proszę, powiedz mi więcej', + "Zmieńmy temat... opowiedz mi o swojej rodzinie.", + 'Możesz rozwinąć?', + 'Możesz powiedzieć mi więcej o %1?', + 'Rozumiem.', + 'To bardzo interesujące', + 'Rozumiem.. i co Ci to mówi?', + 'Jakie uczucia to w tobie wywołuje?', + 'Jak się czujesz, mówiąc to?')), -print("\nNapisz 'quit' aby zakonczyc.") -print("-" * 70) + ( + r"Nie moge (.*)", + ( + "Skad wiesz, ze nie mozesz %1?", + "Byc moze moglbys %1, gdybys sprobowal.", + "Co musialbys zrobic zeby %1?", + )), + ( + r"Jestem (.*)", + ( + "Czy rozmawiasz ze mna poniewaz jestes %1?", + "Od jak dawna jestes %1?", + "Jak sie czujesz z tym, ze jestes %1?", + "Jak sie czujesz bedac %1?", + "Dlaczego mowisz mi, ze jestes %1?", + "Dlaczego uwazasz, ze jestes %1?", + )), + ( + r"Czy jestes (.*)", + ( + "Dlaczego ma to znaczenie czy jestem %1?", + "Czy wolabys gdybym nie byl %1?", + "Byc moze uwazasz, ze jestem %1.", + "Byc moze jestem %1, co o tym sadzisz?", + )), + ( + r"Co (.*)", + ( + "Dlaczego pytasz?", + "W jaki sposob pomoglaby ci odpowiedz na to pytanie?", + "Co o tym myslisz?", + )), + ( + r"Jak (.*)", + ( + "Jak sadzisz?", + "Byc moze potrafisz odpowiedziec na swoje wlasne pytanie.", + "O co tak naprawde pytasz?", + )), + ( + r"Poniewaz (.*)", + ( + "Czy to jest prawdziwy powod?", + "Jakie inne powody przychodza Ci na mysl?", + "Czy ten powod odnosi sie do czegos innego?", + "Jesli %1, to co jeszcze musi byc prawda?", + )) + ) -print("Witaj. Jak sie dzisiaj czujesz?") -cheddar.converse() \ No newline at end of file + def ask(self, question): + question = question.lower() + for i in self.questions: + result = re.match(i[0], question) + if result: + print(random.choice(i[1])) + return + + +ela = Elizabeth() + +print("Cześć, o czym chcesz porozmawiać?") +while True: + question = input().lower() + if question == "cześć" or question == "do widzenia": + print("Do widzenia") + break + ela.ask(question)