telegram-bot-systemy-dialogowe/Przykadowe_odpowiedzi.ipynb

19 KiB

import random
#######################Hello#################################
def nlg(system_act):
    domain, intent, slot, value = system_act

    if intent == 'Hello':
        r = random.randint(1, 7)

        if r == 1:
            return 'Dzień dobry, witam w interaktywnej bibliotece'
        elif r == 2:
            return 'Witam w interaktywnej biblitece'
        elif r==3:
            return 'Dzień dobry, w czym mogę pomóc?'
        elif r==4:
            return 'Dzień dobry'
        
        elif r==5:
            return 'Cześć'
        elif r==6:
            return 'Witamy w interaktywnej bibliotece'
        else:
            return 'Witam w interaktywnej bibliotece książnicy płockiej, jak mogę pomóc?'


nlg(['', 'Hello', '', ''])
'Dzień dobry, w czym mogę pomóc?'
############################Inform#################################
def nlg(system_act):
    domain, intent, slot, value = system_act

    if domain == 'books' and intent == 'Inform' and slot == 'title':
        if value == 0:
            return f'Wybrana pozycja nie jest dostępna.'
        elif value == 1:
            return f'Wybrana pozycja jest dostępna.'
        else:
            return f'Wybrana pozycja nie jest obecnie dostępna'
        
    if domain == 'books' and intent == 'Inform' and slot == 'publisher':
        if value == 0:
            return f'Książka tego wydawcy jest dostępna'
        elif value == 1:
            return f'Książka tego wydawcy nie jest dostępna'
        else:
            return f'Nie znaleziono wydawcy o tej nazwie'
        
    if domain == 'books' and intent == 'Inform' and slot == 'author':
        if value == 0:
            return f'Książka tego autora nie jest dostępna'
        elif value == 1:
            return f'Książki tego autora są dostępne w bibliotece'
        else:
            return f'Nie znaleziono autora o tym imieniu i nazwisku'
        
        
    if domain == 'library' and intent == 'Inform' and slot == 'status':
        if value == 0:
            return f'Biblioteka jest zmaknięta.'
        elif value == test0:
            return f'Biblioteka jest otwarta.'
        else:
            return f'Biblioteka jest zamknięta do odwołania'
        
    if domain == 'library' and intent == 'Inform' and slot == 'location':
        if value == 0:
            return f'Biblioteka znajduje się na ul. Targowej 10.'
        else:
            return f'Biblioteka znajduje się na ul. Targowej 10.'
        
    if domain == 'library' and intent == 'Inform' and slot == 'days':
        if value == 0:
            return f'Biblioteka jest otwarta od poniedziałku do piątku.'
        else:
            return f'Biblioteka jest otwarta w dni robocze.'
        
    if domain == 'library' and intent == 'Inform' and slot == 'phone number':
        r = random.randint(1, 4)
        if r == 1:
            return '514 312 231'
        elif r == 2:
            return '123 987 231'
        elif r==3:
            return '432 112 453'
        else:
            return 'Telefony dostępne są na głównej stronie biblioteki'
    
    if domain == 'library' and intent == 'Inform' and slot == 'events':
        r = random.randint(1, 4)
        if r == 1:
            return 'Dzień młodego czytelnika.'
        elif r == 2:
            return 'Dzień fantastyki.'
        elif r==3:
            return 'Dzień promowania czytelnictwa.'
        else:
            return 'Obecnie nie ma żadnych wydarzeń.'
    
    if domain == 'card' and intent == 'Inform' and slot == 'lost':
        if value == 0:
            return f'W przypadku zgubienia karty należy zgłosić ten fakt dzwoniąc pod numer 513 231 211'
        else:
            return f'W przypadku zgubienia karty fakt ten można zgłosić w głównej filii biblioteki'
    
    if domain == 'card' and intent == 'Inform' and slot == 'destroyed':
        if value == 0:
            return f'W przypadku zniszczenia karty bibliotecznej konieczne jest dokonanie zgłoszenia pod numerem 513 231 211'
        else:
            return f'Zgłoszenie zniszczenia karty bibliotecznej może zostać dokonane w filii głównej biblioteki.'
        
    if domain == 'library' and intent == 'Inform' and slot == 'new':
        if value == 0:
            return f'Żeby wyrobić kartę konieczne jest wypełnienie formularza i akceptacja regulaminu'
        else:
            return f'Wyrobienie karty jest możliwe przez stronę internetową albo osobiście w głównej filii biblioteki'
    
        
print(nlg(['library', 'Inform', 'events', '']))
print(nlg(['card', 'Inform', 'lost', '']))
Dzień promowania czytelnictwa.
W przypadku zgubienia karty fakt ten można zgłosić w głównej filii biblioteki
#######################Confirm#############################
def nlg(system_act):
    domain, intent, slot, value = system_act
    test0 = "Bezsenność w Tokio"
    test1 = "Haruki Murakami"

    if domain == 'books' and intent == 'Confirm' and slot == 'title':
        if value == 0:
            return f'Nie znalazłem książki o tym tytule.'
        elif value == test0:
            return f'Czy ta książka to {value}?'
        else:
            return f'Książka o tym tytule nie została znaleziona. Proszę podać więcej informacji.'
        
    if domain == 'books' and intent == 'Confirm' and slot == 'author':
        if value == 0:
            return f'Nie znalazłem książki tego autora.'
        elif value == test1:
            return f'Czy autor to {value}?'
        else:
            return f'Ksiązka tego autora nie została znaleziona. Proszę podać więcej informacji.'
    
    if domain == 'reservation' and intent == 'Confirm':
        r = random.randint(1, 3)
        if r==1:
            return 'Książka została zarezerwowana i będzie do odbioru w następny dzień roboczy. Proszę pamiętać, że brak odbioru książki do 7 dni roboczych prowadzi do utraty rezerwacji.'
        elif r==2:
            return 'Możesz zarezerwować tę pozycję. Będzie czekać na Ciebie w naszej placówce przez następnych 5 dni roboczych.'
        elif r==3:
            return 'Książka została wypożyczona'
    
    if intent == 'Confirm' and domain == '' and slot == '':
        return 'Tak'
    
        
print(nlg(['books', 'Confirm', 'title', 'Bezsenność w Tokio']))
print(nlg(['books', 'Confirm', 'author', 'Haruki Murakami']))
Czy ta książka to Bezsenność w Tokio?
Czy autor to Haruki Murakami?
#########################Affirm###############################
def nlg(system_act):
    domain, intent, slot, value = system_act

    if domain=='books' and intent == 'Affirm':
        r = random.randint(1, 6)

        if r == 1:
            return 'Zgadza się'
        elif r == 2:
            return 'Książka została wypożczyona'
        elif r==3:
            return 'Tak, zgadza się - książka została dodana do konta'
        elif r==4:
            return 'Tak, to będzie wszystko'
        elif r==5:
            return 'Tak, książka została wypożyczona poprawnie'
        else:
            return 'Tak'
    
    if domain=='card' and intent == 'Affirm':
        r = random.randint(1, 4)

        if r == 1:
            return 'Po spełnieniu warunków karta zostanie założona'
        elif r == 2:
            return 'Tak, to wszystko w zakresie założenia karty'
        elif r==3:
            return 'Tak, to będzie wszystko'
        else:
            return 'Tak, to wszystko'
        
    if intent=='Affirm' and domain=='create_an_account':
        return 'Tak, poproszę'
    
    if intent=='Affirm':
        r = random.randint(1, 4)
        if r==1:
            return 'Zgadza się'
        if r==2:
            return 'Tak'
        

print(nlg(['books', 'Affirm', '', '']))
print(nlg(['card', 'Affirm','','']))
Tak, to będzie wszystko
Tak, to wszystko
#######################Bye#################################
def nlg(system_act):
    domain, intent, slot, value = system_act

    if intent == 'Bye':
        r = random.randint(1, 4)

        if r == 1:
            return 'Do zobaczenia'
        elif r == 2:
            return 'Do napisania'
        elif r==3:
            return 'Do widzenia'
        else:
            return 'Dziękuję i życzę miłej lektury'


nlg(['Books', 'Bye', '', ''])
'Dziękuję i życzę miłej lektury'
#######################Thankyou#################################
def nlg(system_act):
    domain, intent, slot, value = system_act

    if intent == 'Thankyou':
        r = random.randint(1, 10)

        if r == 1:
            return 'Dziękuję'
        elif r == 2:
            return 'Dziękuję, to wszystko'
        elif r==3:
            return 'Ok, dziękuję'
        elif r==4:
            return 'Dziękuję, to będzie wszystko'
        elif r==5:
            return 'Dobrze. Dziękuję za rozmowę'
        elif r==6:
            return 'Dziękuję za informację'
        elif r==7:
            return 'To by było wszystko'
        elif r==8:
            return 'Bardzo dziękuję za informację. Wszystko już wiem'
        elif r==9:
            return 'Dziękuję za pomoc'
        elif r==10:
            return 'Dobrze, dziękuję za rozmowę'
        else:
            return 'Dziękuję bardzo'


nlg(['', 'Thankyou', '', ''])
'Bardzo dziękuję za informację. Wszystko już wiem'
#######################Request#############################
def nlg(system_act):
    domain, intent, slot, value = system_act
    
    if intent == 'Request':

        if domain == 'card':
            return 'Chciałbym założyć kartę biblioteczną'
        
        if domain=='card_number':
            r = random.randint(1,2)
            if r==1:
                return 'Proszę o podanie numeru karty bibliotecznej'
            elif r==2:
                return 'Proszę podać numer karty bibliotecznej'
            
        if domain == 'new_card':
            return 'Chciałbym założyć kartę biblioteczną, jak to zrobić?'
        
        if domain == 'signature':
            return 'Proszę podać sygnaturę ksiązki'
        
        if domain == 'penalty_cost':
            return 'Jaka jest kara za przekroczenie terminu zwrotu?'

        if domain == 'status':
            r = random.randint(1,5)
            if r==1:
                return 'Chciałbym sprawdzić wypożyczone książki'
            elif r==2:
                return 'Czy czytelnia funkcjonuje podczas pandemii?'
            elif r==3:
                return 'Chciałbym sprawdzić czy mam jakieś książki do oddania'
            elif r==4:
                return 'Chciałbym sprawdzić najbliższy termin zwrotu'
            elif r==5:
                return 'Chciałabym sprawdzić, czy mam jakieś wypożyczone książki'

        if domain == 'books':
            return f'Czy książka {value}, znajduje się w bibliotece w formie ebooka?'

        if domain == 'book':
            r = random.randint(1,5)
            if r==1:
                return f'Chciałabym wypożyczyć książkę {value}'
            elif r==2:
                return 'Proszę podać tytuł i autora pozycji'
            elif r==3:
                return f'Czy posiadacie książke {value}?'
            elif r==4:
                return 'Proszę podać tytuł i autora wybranej pozycji'
            elif r==5:
                return 'Proszę podać tytuł i autora wybranej książki'

        if domain == 'time':
            r = random.randint(1,3)
            if r==1:
                return 'W jakich godzinach jest otwarta biblioteka?'
            elif r==2:
                return 'W jakich godzinach macie otwarte?'
            elif r==3:
                return 'Skąd będę wiedział kiedy moge to odebrać?'
                
        if domain == 'location':
            return 'Można odebrać ją w innej filli biblioteki?'

        if domain == 'return':
            return f'Chciałabym zwrócić książkę {value}'

        if domain == 'reservation':
            r = random.randint(1,2)
            if slot=='cancel':
                return 'Chciałbym anulować rezerwację książki'
            if r==1:
                return f'Chciałbym zarezerwować książkę {value}'
            elif r==2:
                return 'Chciałbym wypożyczyć książkę'

        if domain == 'overdue_books':
            return 'Mam jakieś książki które mają przekroczony termin oddania?'

        if domain == 'soon_overdue':
            return f'Czy zbliża mi się termin oddania książki?'

        if domain == 'online_library':
            return 'Jak mogę uzyskać dostęp do zasobów online?'

        if domain == 'events':
            return 'Jakie wydarzenia odbywają się w najbliższym czasie w bibliotece?'
        
        if domain=='action':
            if slot=='wypozyczenie':
                return 'Chciałbym wypożyczyć jeden egzemplarz'
            elif slot=='reservation':
                return 'Chciałbym zarezerwować wszystkie części tego cyklu'
            elif slot == 'status':
                return 'Chciałbym sprawdzić listę obecnie wypożyczonych książek'

    
        
print(nlg(['card', 'Request', '', '']))
print(nlg(['books', 'Request', '', 'Owoce wiśni Osamu Dazai']))
print(nlg(['return', 'Request', '', 'Kafka Haruki Murakami']))
print(nlg(['reservation', 'Request', '', 'Kafka Haruki Murakami']))
print(nlg(['reservation', 'Request', 'cancel', '']))
Chciałbym założyć kartę biblioteczną
Czy książka Owoce wiśni Osamu Dazai, znajduje się w bibliotece w formie ebooka?
Chciałabym zwrócić książkę Kafka Haruki Murakami
Chciałbym wypożyczyć książkę
Chciałbym anulować rezerwację książki