systemy_dialogowe/elizaPL.py
2023-03-16 17:33:40 +01:00

47 lines
2.0 KiB
Python

import re
import random
patterns = {
r"(.*) mam (problem|problemy) z (.*)": ["Jak myślisz, dlaczego masz problemy z %s?",
"Czy myślisz, że problemy z %s wpływają na Twoje samopoczucie?"],
r"(.*) mnie (denerwuje|irytuje)": ["Czy możesz powiedzieć mi więcej o tym, co Cię denerwuje?",
"Czy czujesz się w stanie poradzić sobie z tym, co Cię irytuje?"],
r"(.*) (nienawidzę|nie cierpię) (.*)": ["Dlaczego nie lubisz %s?",
"Czy to uczucie niepokoju związane z %s jest dla Ciebie uciążliwe?"],
r"(.*) jak się czujesz (.*)": ["Czy pytasz, jak się czuję, czy raczej jak się czujesz Ty?",
"Czy uważasz, że mój stan emocjonalny jest dla Ciebie ważny?"],
r"(.*) co powiesz na (.*)": ["Czy powiedzenie %s sprawiłoby, że poczujesz się lepiej?",
"Jakie są Twoje obawy związane z %s?"],
r"(.*) (nie lubię|nie przepadam) za (.*)": ["Czy zdarza się, że musisz radzić sobie z czymś, co nie lubisz?",
"Czy uważasz, że masz w ogóle jakieś pozytywne uczucia związane z %s?"],
}
default_responses = ["Czy mógłbyś powiedzieć coś więcej na ten temat?",
"Czy mógłbyś bardziej szczegółowo opisać swoje uczucia?",
"Czy wiesz, co mogłoby pomóc Ci się poczuć lepiej?"]
def get_response(responses):
return random.choice(responses)
print("Jak się dzisiaj czujesz?")
while True:
user_input = input("> ")
if user_input.lower() in ["exit", "quit", "do widzenia"]:
print("Do widzenia!")
break
for pattern, responses in patterns.items():
match = re.match(pattern, user_input)
if match:
response = get_response(responses)
print(response % match.groups())
break
else:
print(get_response(default_responses))