Generic_DialogSystem/template_nlg.ipynb
2023-06-01 13:28:39 +02:00

6.7 KiB

import random


def nlg(system_act):
    domain, intent, slot, value = system_act

    if intent == 'Affirm':
        r = random.randint(1, 3)

        if r == 1:
            return 'Tak'
        elif r == 2:
            return 'Zgadza się'
        else:
            return 'Potwierdzam'
    
    if intent == 'Deny':
        r = random.randint(1, 3)

        if r == 1:
            return 'Nie'
        elif r == 2:
            return 'Nie zgadza się'
        else:
            return 'Nie potwierdzam'
        
    if intent == 'Canthelp':
        r = random.randint(1, 3)

        if r == 1:
            return 'Przepraszam, ale obawiam się, że nie mogę tego zrobić'
        elif r == 2:
            return 'Wystąpił błąd, proszę się skontaktować z obsługą'
        else:
            return 'ERR://23¤Y%/'
        
    if intent == 'Hellomsg':
        r = random.randint(1, 3)

        if r == 1:
            return 'Witaj'
        elif r == 2:
            return 'Cześć'
        else:
            return 'Dzień dobry'
        
    if intent == 'Bye':
        r = random.randint(1, 3)

        if r == 1:
            return 'Do zobaczenia'
        elif r == 2:
            return 'Żegnaj'
        else:
            return 'Buk zapłać'
        
        

    if domain == 'Product':
        if intent == 'Inform':
            if slot == 'Quantity':
                if value == 0:
                    return f'Nie znalazłem produktów spełniających podane kryteria.'
                elif value == 1:
                    return f'Znalazłem jeden produkt spełniającą podane kryteria.'
                elif value <= 4:
                    return f'Znalazłem {value} produkty spełniające podane kryteria.'
                elif value <= 9:
                    return f'Znalazłem {value} produktów spełniających podane kryteria.'
                else:
                    return f'Znalazłem wiele produktów spełniających podane kryteria.'
            elif slot == 'Quality':
                return f'Znalazłem produkt(y) jakości {value}'
            elif slot == 'Price_range':
                return f'Znalazłem produkt(y) w przedziale cenowym {value}'
            elif slot == 'Type':
                return f'Znalazłem produkt(y) typu {value}'
            elif slot == 'Brand':
                return f'Znalazłem produkt(y) marki {value}'
            elif slot == 'Price':
                return f'Znalazlem produkt(y) w cenie {value}'
        if intent == 'Request':
            if slot == 'CreditCardNo':
                return 'Podaj nuber karty płatniczej'
            if slot == 'Quantity':
                return 'Podaj liczbę artykułów'
            #if slot == 'Quality':
            #    return 'Podaj jakość produktów'
            if slot == 'Type':
                return 'Podaj typ produktu'
        if intent == 'Recommend':
            if slot == "Name":
                r = random.randint(1, 3)

                if r == 1:
                    return f'Kochany użytkowniku, z całego serduszka polecam Ci {value}'
                elif r == 2:
                    return f'Polecam {value}'
                else:
                    return f'Mogę polecić {value}'

                
nlg(['', 'Hellomsg', '', ''])
'Witaj'
nlg(['Product', 'Inform', 'Brand', 'RedBull'])
'Znalazłem produkt(y) marki RedBull'
nlg(['Product', 'Recommend', 'Name', 'RedBull'])
'Polecam RedBull'
nlg(['Product', 'Request', 'Quantity', '?'])
'Podaj liczbę artykułów'
nlg(['', 'Canthelp', '', ''])
'Przepraszam, ale obawiam się, że nie mogę tego zrobić'
nlg(['', 'Bye', '', ''])
'Do zobaczenia'