zaktualizowano requirements-analyis.md

This commit is contained in:
domzal 2022-03-23 10:14:51 +01:00
parent 12b4cde4ab
commit 5525cd0ce6
4 changed files with 151 additions and 426 deletions

View File

View File

@ -1,19 +0,0 @@
import re
import random
#default_answers = [0: "Powiedz mi więcej.", 1: "Zmieńmy temat - opowiedz mi o swojej rodzinie.", 2: "Rozumiem.", 3: "Czemu tak uważasz?", 4: "Interesujące...", 5: "Mhm.", 6: "Jak się z tym czujesz?"]
#answer_patterns = #lista list zczytana z pliku; struktura listy np. lista[0] - regex, lista[n] - odpowiedzi
print("Witaj. Jak się dzisiaj czujesz?")
while True:
match_found = False
user_input = input()
for answer_pattern in answer_patterns:
if re.match(answer_pattern[0], user_input):
match_found = True
answer_number = random.randint(1, len(answer_pattern))
print(answer_pattern[answer_number])
break
if not match_found:
answer_number = random.randint(0, len(default_answers))
print(default_answers[answer_number])

View File

@ -1,384 +0,0 @@
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 Ci przyjemność 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 (.*)",
(
"Często 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ę, że (.*)",
(
"Masz wątpliwości, że %1?",
"Naprawdę tak myślisz?",
"Ale nie jesteś pewny, że %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 chciałbyś, ż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 (.*)",
(
"Powinniśmy 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 Ci to 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ś",
"będę": "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()

View File

@ -4,53 +4,181 @@ Tytuł Projektu: System sprzedaży biletów kinowych
Zadanie 1: Rezerwacja biletu Zadanie 1: Rezerwacja biletu
-------------------------------- --------------------------------
*system:* ... *system:* Witam w systemie sprzedaży biletów kinowych. Jak mogę Ci pomóc?
*user:* Chciałbym dokonać rezerwacji biletów.
*system:* Świetnie! Na kogo będą rezerwowane bilety? Proszę podaj imię, nazwisko oraz adres e-mail.
*user:* Jan Kowalski jankowalski@poczta.pl.
*system:* Oczywiście. Na jaki film chcesz zarezerwować bilety?
*user:* Na film Batman.
*system:* Jaki dzień i godzina Cię interesują?
*user:* 1 kwietnia o 20:00.
*system:* Podaj proszę liczbę i rodzaj biletów, które chcesz zakupić.
*user:* 2 normalne.
*system:* Dobrze. Jakie miejsca Cię interesują?
*user:* W ostatnim rzędzie.
*system:* W ostatnim rzędzie dostępne są miejsca od numeru 3 do numeru 13. Które chcesz wybrać?
*user:* Chcę miejsca 4 i 5.
*system:* Rozumiem. Podałeś poprawne dane rezerwacji. Pozwól, że je powtórzę: 2 bilety normalne na pokaz filmu Batman 1 kwietnia o godzinie 20:00, miejsca o numerach 4 i 5 w ostatnim rzędzie na nazwisko Kowalski. Czy mogę zatwierdzić rezerwację dla tych danych czy chcesz coś jeszcze poprawić?
*user:* Nie, dane się zgadzają.
*system:* W takim razie zatwierdzam dokonanie rezerwacji. Kod twojej rezerwacji to 123456. Potwierdzenie zostało wysłane do Ciebie e-mailem. Bilety możesz odebrać w kinie 30 minut przed seansem. Dziękuję za rozmowę i życzę dobrej zabawy :)
*user:* ...
*system:* ...
Zadanie 2: Anulowanie rezerwacji biletu Zadanie 2: Anulowanie rezerwacji biletu
-------------------------- --------------------------------
*system:* ... *system:* Witam w systemie sprzedaży biletów kinowych. Jak mogę Ci pomóc?
*user:* Chciałbym anulować rezerwację biletów.
*system:* W porządku. Będę potrzebować kodu twojej rezerwacji, który został do Ciebie wysłany e-mailem. Czy posiadasz taki kod? Jeśli tak, podaj go proszę.
*user:* 123456.
*system:* Kod jest poprawny. Czy na pewno chcesz anulować rezerwację?
*user:* Tak, chcę.
*system:* Oczywiście. Rezerwacja została anulowana. Zapraszamy na film w innym terminie. Dziękuję za rozmowę i życzę miłego dnia :)
*user:* ...
*system:* ...
Zadanie 3: Zakup biletu Zadanie 3: Zakup biletu
-------------------------- --------------------------------
*system:* ... *system:* Witam w systemie sprzedaży biletów. Jak mogę Ci pomóc?
*user:* Chciałbym zakupić bilet na film Batman.
*system:* Świetnie! Na kogo będą rezerwowane bilety? Proszę podaj imię, nazwisko oraz adres e-mail.
*user:* Jan kowalski i JanKowlski@wp.pl.
*system:* Dobrze na jaki dzień i godzinę?
*user:* 15.03 na 18:30.
*system:* Dobrze jakie miejsca ciebie interesują?
*user:* Bliżej środka.
*system:* Dostępne jest miejsce w 5 rzędzie od 6:8, 10:13 w 6 rzędzie 7:11 a w 7 rzędzie od 6:13.
*user:* Chciałbym zakupić w 6 rzędzie 8 miejsce.
*system:* Dobrze chcesz zapłacić teraz czy na miejscu.
*user:* Zapłace na miejscu
*system:* Rozumiem. Podałeś poprawne dane rezerwacji. Pozwól, że je powtórzę: 1 bilety normalne na pokaz filmu Batman 15 marca o godzinie 18:30, miejsca o numerach 8 w szóstym rzędzie na nazwisko Kowalski. Czy mogę zatwierdzić rezerwację dla tych danych czy chcesz coś jeszcze poprawić?
*user:* Nie, dane się zgadzają.
*system:* W takim razie zatwierdzam dokonanie rezerwacji. Kod twojej rezerwacji to 123456. Potwierdzenie zostało wysłane do Ciebie e-mailem. Bilety możesz odebrać w kinie 30 minut przed seansem. Dziękuję za rozmowę i życzę dobrej zabawy
*user:* ...
*system:* ...
Zadanie 4: Anulowanie zakupu biletu Zadanie 4: Anulowanie zakupu biletu
-------------------------- --------------------------------
*system:* ... *system:* Witam w systemie sprzedaży biletów. Jak mogę Ci pomóc?
*user:* Chciałbym anulować zakup biletu
*system:* W porządku. Będę potrzebować kodu twojej rezerwacji, który został do Ciebie wysłany e-mailem. Czy posiadasz taki kod? Jeśli tak, podaj go proszę.
*user:* 123456.
*system:* Kod jest poprawny. Z racji na to że dokonał pan już opłaty biletu Czy na pewno chcesz anulować zakup?
*user:* Tak, chcę.
*system:* Oczywiście. Zakup została anulowana. Na jakie konto przelać ponownie pieniądze?
*user:* Poproszę na to samo z którego płaciłem.
*system:* Dobrze fundusze zostaną przelane w ciągu 3 dni roboczych. Zapraszamy na film w innym terminie. Dziękuję za rozmowę i życzę miłego dnia.
*user:* ...
*system:* ...
Zadanie 5: Sprawdzenie dostępności miejsc Zadanie 5: Sprawdzenie dostępności miejsc
-------------------------- --------------------------------
*system:* ... *system:* Witam w systemie sprzedaży biletów kinowych. Jak mogę Ci pomóc?
*user:* Chciałbym dowiedzieć się czy są dostępne 2 miejsca na film TYTUŁ?
*system:* Jaki dzień i godzina Cię interesują?
*user:* wtorek o 18:30
*system:* Niestety wszystkie miejsca na ten seans zostały już zarezerwowane. Czy chcesz sprawdzić dostępność miejsc na inny seans?
*user:* Tak
*system:* Jaki inny seans Cię interesuje?
*user:* wtorek o 20:00
*system:* Na wtorkowy seans o 20:00 dostępne jest 15 miejsc.
*user:* Czy są dostępne miejsca w tylnych rzędach?
*system:* Tak, 3 miejsca w rzędzie K i 2 miejsca w rzędzie J. Czy mogę Ci jeszcze w czymś pomóc?
*user:* Nie, dziękuję, to wszystko.
*system:* Dziękuję za rozmowę i życzę miłego dnia.
*user:* ...
*system:* ...
Zadanie 6: Sprawdzenie repertuaru kina Zadanie 6: Sprawdzenie repertuaru kina
-------------------------- --------------------------------
*system:* ... *system:* Witam w systemie sprzedaży biletów kinowych. Jak mogę Ci pomóc?
*user:* ... *user:* Dzień dobry, chciałbym dowiedzieć się jakie filmy są wyświetlane w tym tygodniu?
*system:* ... *system:* W tym tygodniu gramy TYTUŁ1, TYTUŁ2, TYTUŁ3 …
*user:* Czy TYTUŁ7 to komedia?
*system:* Nie, TYTUŁ7 to horror.
*user:* Czy któryś z tych filmów jest odpowiedni dla 8-letniego dziecka?
*system:* Tak, TYTUŁ2 i TYTUŁ5 nie mają ograniczeń wiekowych, a TYTUŁ3 jest odpowiedni dla widzów powyżej 7 roku życia.
*user:* To są filmy z lektorem czy z dubbingiem?
*system:* Wszystkie trzy filmy są z dubbingiem.
*user:* Kto gra w TYTUŁ4? / Kto jest reżyserem filmu TYTUŁ 8? / O czym jest TYTUŁ2?
*system:* Imiona Nazwiska aktorów / Imie Nazwisko reżysera / Krótki opis filmu
*user:* Czy TYTUŁ7 to komedia?
*system:* Nie, TYTUŁ7 to horror.
*user:* Jak długi jest TYTUŁ3?
*system:* TYTUŁ3 trwa 107 minut. Czy chciałbyś sprawdzić dostępność miejsc bądź zarezerwować bilet?
*user:* Nie, na razie dziękuję. Do usłyszenia.
*system:* Dziękuję za rozmowę i życzę miłego dnia.