from nltk.chat.util import Chat pairs_pl = ( ( r"Potrzebuję (.*)", ( "Dlaczego potrzebujesz %1?", "Czy poczułbyś się lepiej gdybyś miał %1?", "Jesteś pewny, że potrzebujesz %1?", ), ), ( r"Dlaczego nie mogę (.*)", ( "Myślisz, że powinieneś móc %1?", "Gdybyś mógł %1, co byś wtedy zrobił?", "Nie wiem -- dlaczego nie możesz %1?", "Czy kiedykolwiek tak naprawdę spróbowałeś?", ), ), ( r"Nie mogę (.*)", ( "Skąd wiesz, że nie możesz %1?", "Może mógłbyś %1 gdybyś spróbował.", "Co musiało by się wydarzyć, byś mógł %1?", ), ), ( r"Jestem (.*)", ( "Jak się czujesz z tym, że jesteś %1?", "Czy sprawia Ciprzyjemność bycie %1?", "Dlaczego chciałeś mi powiedzieć, że jesteś %1?", "Dlaczego myślisz, że jesteś %1?", "Czy przyszedłeś do mnie, bo jesteś %1?", "Od jak dawna jesteś %1?", "Czy dobrze się czujesz z tym, że jesteś %1?", ), ), ( r"Czy jesteś (.*)", ( "Czy to ma znaczenie czy jestem %1?", "Wolałbyś, żebym nie był %1?", "Być może wierzysz, że jestem %1.", "Mogę być %1 - a jak Tobie się wydaje?", ), ), ( r"Co (.*)\?", ( "Dlaczego pytasz?", "W jaki sposób miałaby Ci pomóc odpowiedź na to pytanie?", "A co Ty o tym myślisz?", ), ), ( r"Jak (.*)\?", ( "A jak Tobie się wydaje?", "Może sam spróbujesz odpowiedzieć na to pytanie.", "O co tak naprawdę pytasz?", ), ), ( r"(Dlatego,? że|Ponieważ)(.*)", ( "Czy to jest prawdziwy powód?", "Jakie inne powody przychodzą Ci na myśl?", "Czy może być inny powód, oprócz %2, ", ), ), ( r"(.*)przepraszam (.*)", ( "Czesto przeprosiny nie są wcale potrzebne.", "Jakie uczucia Ci towarzyszą, gdy przepraszasz?", "Uważasz, że powinieneś przepraszać?" ), ), ( r"(Cześć|Hej) (.*)", ( "Dzień dobry, cieszę się, że możemy się dziś spotkać.", "Dzień dobry, jak się dzisiaj czujesz?", "Dzień dobry, jak Ci minął dzień?", ), ), ( r"Wydaje mi się (.*)", ( "Masz wątpliwości %1?", "Naprawdę tak myślisz?", "Ale nie jesteś pewny %1?" ), ), ( r"(.*) przyjaci (.*)", ( "Opowiedz mi więcej o twoich przyjaciołach.", "Kiedy myślisz o przyjacielu, jakie towarzyszą Ci uczucia?", "Może opowiesz mi o twoich przyjaciołach z dzieciństwa?", ), ), ( r"Tak", ( "Wydajesz się tego pewny.", "Dobrze, czy mógłbyś powiedzieć mi coś więcej?" ) ), ( r"(.*) komputer (.*)", ( "Naprawdę mówisz o mnie?", "Czy rozmowa z komputerem wydaje Ci się czymś dziwnym?", "Czy komputery sprawiają, że czujesz się zagrożony?", "CZy odczuwasz zagrożenie ze strony komputerów?", ), ), ( r"Czy to jest (.*)", ( "Myślisz, że to jest %1?", "Być może to %1 -- jak Ty myślisz?", "Gdyby to było %1, co byś zrobił?", "To zdecydowanie może być %1.", ), ), ( r"To jest (.*)", ( "Wydajesz się tego bardzo pewny.", "Gdybym powiedział ci, że to prawdopodobnie nie jest %1, jak byś się wtedy czuł?", ), ), ( r"Czy (możesz|mógłbyś|mogłabyś)(.*)", ( "Dlaczego myślisz, że nie %1%2?", "Jeżeli %1, to co?", "Dlaczego pytasz czy %1%2?", ), ), ( r"Czy mogę (.*)", ( "Być może wcale nie chcesz %1.", "Czy chciałbyś móc %1?", "Gdybyś mógł %1, zrobiłbyś to?", ), ), ( r"(jesteś)(.*)", ( "Dlaczego mówisz, że %1%2?", "Dlaczego myślisz, że %1%2?", "Chcemy rozmawiać o mnie czy o tobie?", "Chciałbyś, żebym był%2?", "Być może tak naprawdę mówisz o sobie?", "Może chciabyś, żebym był%2" ), ), ( r"Nie chcę (.*)", ( "Naprawdę nie chcesz %1?", "Dlaczego nie chcesz %1?", ), ), ( r"Czuję(.*)", ( "Dobrze, powiedz mi więcej o tym jak się czujesz.", "Często czujesz %1?", "Kiedy zazwyczaj czujesz%1?", "Gdy czujesz %1, co zazwyczaj z tym robisz?", ), ), ( r"Mam (.*)", ( "Dlaczego mówisz, że masz %1?", "Czy naprawdę masz %1?", "Teraz gdy już masz %1, co planujesz zrobić?", ), ), ( r"Ja bym (.*)", ( "Mógłbyś dokładniej powiedzie co byś %1?", "Dlaczego %1?", "Czy ktoś wie, że Ty byś %1?", ), ), ( r"Czy jest (.*)", ( "Myślisz, że jest %1?", "Możliwe, że jest %1.", "Czy chciałbyś, żeby był %1?", ), ), ( r"(?=Mój|Moja)(.*)", ( "Rozumiem, %1.", "Dlaczego uważasz, że %1?", "Kiedy %1, jak się wtedy czujesz?", ), ), ( r"Ty (.*)", ( "Powinnismy mówić o tobie, nie o mnie.", "Dlaczego tak o mnie myślisz?", "Dlaczego to dla Ciebie ważne?", ), ), ( r"Dlaczego (.*)", ("Może sam spróbujesz odpowiedzieć to pytanie?", "Dlaczego myślisz, że %1?" ) ), ( r"(Chciałabym|chciałbym) (.*ć|.*c) (.*)", ( "Co by się zmieniło, gdybyś mógł %2 %3?", "Dlaczego %1 %2 %3?", "Co byś zrobił gdybyś mógł %2 %3?", "Gdybyś mógł %2 %3, co byś wtedy zrobił?", ), ), ( r"(Chciałabym|chciałbym) (.*)", ( "Co by się zmieniło, gdybyś miał %2?", "Dlaczego %1 %2?", "Co byś zrobił gdybyś miał %2?", "Gdybyś miał %2, co byś wtedy zrobił?", ), ), ( r"(mama|matka).*", ( "Opowiedz mi o twojej matce.", "Jak układają się twoje stosunki z matką?", "Co czujesz kiedy myślisz o twojej mamie?", "Myślisz, że to ma wpływ na to jak obecnie się czujesz?", "Dobre relacje rodzinne są ważne.", ), ), ( r"(tata|ojciec).*", ( "Opowiedz mi więcej o twoim ojcu.", "Jak układają się twoje stosunki z ojcem?", "Co czujesz kiedy myślisz o twoim ojcu?", "Myślisz, że to ma wpływ na to jak obecnie się czujesz?", "Czy masz problem z okazywaniem uczuć członkom twojej rodziny?", ), ), ( r"(.*)\?", ( "Dlaczego o to pytasz?", "Zastanów się czy jesteś w stanie sam odpowiedzieć na to pytanie.", "Być może odpowiedzi powinieneś szukać u siebie?", "Może chciałbyś powiedzieć mi o tym coś więcej?", ), ), ( r"wyjdź", ( "Dziękuję, że zechciałeś ze mną porozmawiać.", "Do zobaczenia.", "Dziękuję, to będzie 200zł. Miłego dnia!", ), ), ( r"(.* mieć dziec.*)", ( "Dlaczego %1?", "Czy twoje doświadczenia z dzieciństwa mają wpływ na tę decyzję?", "Dobrze wspominasz swoje dzieciństwo?", ), ), ( r"(.*) dziec(.*)", ( "Czy jako dziecko miałaś wielu przyjaciół?", "Jakie jest twoje ulubione wspomnienie z dzieciństwa?", "Pamiętasz jakieś koszmary czy sny z dzieciństwa?", "Czy inne dzieci Ci dokuczały?", "Myślisz, że twoje doświadczenia z dzieciństwa miały wpływ na to jak się dzisiaj czujesz?", ), ), ( r"(.*)", ( "Proszę, powiedz mi coś więcej.", "Proszę, powiedz mi dlaczego %1", "W takim razie zmieńmy temat... Opowiedz mi coś o twojej rodzinie.", "Chciałbyś rozwinąć tę myśl?", "Dlaczego uważasz, że %1?", "Rozumiem.", "Interesujące.", "%1.", "Rozumiem. I co Cito mówi?", "Jak się przez to czujesz?", "Co czujesz kiedy to mówisz?", ), ), ) reflections_pl = { "jestem": "jesteś", "byłem": "byłeś", "byłam": "byłaś", "bedę": "będziesz", "ja": "ty", "ty":"ja", "chciałbym": "chciałbyś", "chciałabym": "chciałabyś", "mam": "masz", "masz": "mam", "mój": "twój", "moja": "twoja", "moje": "twoje", "mojej": "twojej", "moi": "twoi", "jesteś": "jestem", "byłeś": "byłem", "byłaś": "byłam", "będziesz": "będę", "twój": "mój", "twoja": "moja", "twoje": "moje", "ciebie": "mnie", "ci": "mi", "tobie": "mi", "mnie": "ciebie", "mi": "tobie", "chciałem": "chciałeś", "chciałam": "chciałaś", "szukam": "szukasz", "obawiam": "obawiasz", "boję": "boisz", "ufam": "ufasz", "z tobą": "ze mną", "muszę": "musisz", "możesz": "mogę", "mógłbyś": "mogę", "mogłabyś": "mogę", "powinnam": "powinnaś", "powinienem":"powinieneś" } grazyna_chatbot = Chat(pairs_pl, reflections_pl) def grazyna_chat(): greeting = ['Rozmawiaj z programem pisząc proste zdania w języku polskim.', 'Aby zakończyć rozmowę napisz \033[1;31mwyjdź\033[0;0m.'] frame_width = len(max(greeting, key=len))+8 print("*" * frame_width+"\n*"+(frame_width-2)*" "+"*") print("*"+int((frame_width-len(greeting[0])-1)/2)*" "+greeting[0]+int((frame_width-len(greeting[0])-2)/2)*" "+"*") print("*"+int((frame_width-len(greeting[1])+13-1)/2)*" "+greeting[1]+int((frame_width-len(greeting[1])+13-2)/2)*" "+"*\n*"+(frame_width-2)*" "+"*") print("*" * frame_width) print("\nDzień dobry. Jak się dzisiaj czujesz?") grazyna_chatbot.converse(quit="wyjdź") def demo(): grazyna_chat() if __name__ == "__main__": demo()