systemy_dialogowe/main.py

77 lines
2.6 KiB
Python
Raw Normal View History

2023-03-16 14:53:36 +01:00
import re
import random
2023-03-16 14:00:56 +01:00
2023-03-16 14:53:36 +01:00
dictionary = {
"cześć": ["Witaj. Jak mogę Ci pomóc?",
"Cześć. Co Ciebie dzisiaj sprowadza?",
"Hej, tu Eliza. O czym chcesz porozmawiać?"],
"tak": ["Dobrze, a powiedz coś więcej."],
"nie": ["Dlaczego nie?", "Co skłania Cię do tej odpowiedzi?"],
r'czuję się (.*)': [
2023-03-16 14:00:56 +01:00
'Dlaczego czujesz się %1?',
2023-03-16 15:00:48 +01:00
'Czy to zawsze tak jest, kiedy czujesz się %1?',
2023-03-16 14:00:56 +01:00
'Co zazwyczaj robisz, kiedy się tak czujesz %1?'
],
r'.*lubię (.*)': [
'Co najbardziej lubisz w %1?',
'Dlaczego lubisz %1?',
'Czy jest coś jeszcze, co lubisz poza %1?'
],
r'.*nie lubię (.*)': [
'Co najmniej lubisz w %1?',
'Dlaczego nie lubisz %1?',
'Czy jest coś jeszcze, czego nie lubisz oprócz %1?'
],
r'.*dlaczego (.*)': [
'Czy naprawdę potrzebujesz znać powód?',
2023-03-16 15:00:48 +01:00
'Czy to jest ważne dla ciebie?',
2023-03-16 14:00:56 +01:00
'Dlaczego %1 jest ważne dla ciebie?'
],
r'.*jak (.*)': [
'Jak myślisz, jak %1 wpłynie na twoje życie?',
'Czy myślisz, że warto wiedzieć, jak %1?',
'Czy wiedza, jak %1? jest w stanie ci pomóc?'
2023-03-16 15:33:17 +01:00
],
2023-03-16 15:14:24 +01:00
r'.*moje hobby to (.*)': [
'Jak długo już się interesujesz %1?',
'Co Cię przyciąga w %1?',
'Czy %1 jest dla Ciebie sposobem na odprężenie?',
],
r'.*nienawidzę (.*)': [
'Czemu tak bardzo nie lubisz %1?',
'Czy istnieje możliwość, że twoje uczucia wobec %1 się zmienią?',
'Czy chcesz porozmawiać o tym, co powoduje twoje nienawiść wobec %1?'
]
2023-03-16 14:00:56 +01:00
}
# funkcja zwracająca odpowiedź na zadane pytanie
2023-03-16 14:53:36 +01:00
def elisa_response(input_text):
2023-03-16 15:14:24 +01:00
if not input_text:
2023-03-16 15:33:17 +01:00
return "Nie napisałeś nic"
2023-03-16 14:53:36 +01:00
for pattern, response_list in dictionary.items():
matches = re.match(pattern, input_text.lower())
2023-03-16 14:40:46 +01:00
if matches:
2023-03-16 14:53:36 +01:00
chosen_response = random.choice(response_list)
return chosen_response.format(*matches.groups())
return "Nie rozumiem."
2023-03-16 14:00:56 +01:00
# pętla główna programu
def main():
print('Cześć, jestem Eliza. Jak się czujesz dzisiaj?')
while True:
2023-03-16 14:56:17 +01:00
insert = input('Ty: ')
2023-03-16 14:00:56 +01:00
if insert.lower() in ['do widzenia', 'do zobaczenia', 'na razie'
2023-03-16 14:53:36 +01:00
'pa', 'żegnam', 'do usłyszenia',
2023-03-16 14:00:56 +01:00
'zakończ', 'koniec', 'elo', 'żegnaj'
'do usłyszenia', 'pa pa', 'do następnego razu']:
2023-03-16 14:56:17 +01:00
print('Eliza: Do widzenia!')
2023-03-16 14:00:56 +01:00
break
2023-03-16 14:57:18 +01:00
print("Eliza: " + elisa_response(insert))
2023-03-16 14:00:56 +01:00
2023-03-16 15:00:48 +01:00
main()