Restart + "clean" console command after user is finished
This commit is contained in:
parent
6598a84e48
commit
7a5064f19e
@ -49,11 +49,11 @@ class Model:
|
|||||||
|
|
||||||
r = self.nlu(msg)
|
r = self.nlu(msg)
|
||||||
slots = r['slots']
|
slots = r['slots']
|
||||||
#print(r)
|
# print(r)
|
||||||
r = self.dst(r)
|
r = self.dst(r)
|
||||||
#print(r)
|
# print(r)
|
||||||
r = self.dp()
|
r = self.dp()
|
||||||
#print(r)
|
# print(r)
|
||||||
r = self.nlg(r, slots)
|
r = self.nlg(r, slots)
|
||||||
if debug:
|
if debug:
|
||||||
print(r)
|
print(r)
|
||||||
@ -193,7 +193,7 @@ class NLG():
|
|||||||
def __init__(self, state):
|
def __init__(self, state):
|
||||||
self.model = AutoModelForSeq2SeqLM.from_pretrained("filnow/nlg-umt5-pol")
|
self.model = AutoModelForSeq2SeqLM.from_pretrained("filnow/nlg-umt5-pol")
|
||||||
self.tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
|
self.tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
|
||||||
self.nlg_pipeline = pipeline('summarization', model=self.model, tokenizer=self.tokenizer)
|
self.nlg_pipeline = pipeline('summarization', model=self.model, tokenizer=self.tokenizer)
|
||||||
|
|
||||||
self.messages = {
|
self.messages = {
|
||||||
"welcomemsg": [
|
"welcomemsg": [
|
||||||
@ -231,31 +231,32 @@ class NLG():
|
|||||||
def __call__(self, act: str, slots: List[Tuple[str, str]]) -> str:
|
def __call__(self, act: str, slots: List[Tuple[str, str]]) -> str:
|
||||||
if act == 'welcomemsg':
|
if act == 'welcomemsg':
|
||||||
return random.choice(self.messages["welcomemsg"])
|
return random.choice(self.messages["welcomemsg"])
|
||||||
|
|
||||||
elif act in ["inform", "request", "select"]:
|
elif act in ["inform", "request", "select"]:
|
||||||
if slots == []:
|
if slots == []:
|
||||||
return "Przepraszam nie rozumiem. Podaj więcej informacji."
|
return "Przepraszam nie rozumiem. Podaj więcej informacji."
|
||||||
else:
|
else:
|
||||||
text = [f"{slot[0]}[{slot[1]}]" for slot in slots if slot[1] is not None]
|
text = [f"{slot[0]}[{slot[1]}]" for slot in slots if slot[1] is not None]
|
||||||
return self.nlg_pipeline(f'generate text: {", ".join(text)}')[0]['summary_text']
|
return self.nlg_pipeline(f'generate text: {", ".join(text)}')[0]['summary_text']
|
||||||
|
|
||||||
elif act == "canthelp.missing_slot_value" or act == "canthelp":
|
elif act == "canthelp.missing_slot_value" or act == "canthelp":
|
||||||
return random.choice(self.messages["canthelp"])
|
return random.choice(self.messages["canthelp"])
|
||||||
|
|
||||||
elif act == "bye":
|
elif act == "bye":
|
||||||
return random.choice(self.messages["bye"])
|
return random.choice(self.messages["bye"])
|
||||||
|
|
||||||
elif act == 'affirm':
|
elif act == 'affirm':
|
||||||
return random.choice(self.messages["affirm"])
|
return random.choice(self.messages["affirm"])
|
||||||
|
|
||||||
elif act == "repeat":
|
elif act == "repeat":
|
||||||
return random.choice(self.messages["repeat"])
|
return random.choice(self.messages["repeat"])
|
||||||
|
|
||||||
elif act == "reqmore":
|
elif act == "reqmore":
|
||||||
return random.choice(self.messages["reqmore"])
|
return random.choice(self.messages["reqmore"])
|
||||||
|
|
||||||
elif act == "offer":
|
elif act == "offer":
|
||||||
return "Proszę oto menu zeskanuj kod QR aby je zobaczyć."
|
return "Proszę oto menu zeskanuj kod QR aby je zobaczyć."
|
||||||
|
|
||||||
|
|
||||||
def dialogue_test():
|
def dialogue_test():
|
||||||
model = Model()
|
model = Model()
|
||||||
@ -285,12 +286,12 @@ def dialogue_test():
|
|||||||
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
||||||
print()
|
print()
|
||||||
# jezeli sprobuje dokonac zamowienia bez podania potrzebnych informacji prosimy o nie
|
# jezeli sprobuje dokonac zamowienia bez podania potrzebnych informacji prosimy o nie
|
||||||
#response = model("Dobrze, nie mogę się już doczekać.")
|
# response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
response = model("Super, to zatem wszystko!")
|
response = model("Super, to zatem wszystko!")
|
||||||
print()
|
print()
|
||||||
# jezeli wybierze rodzaj platnosci to zapisz wybor i poinformuj o nim
|
# jezeli wybierze rodzaj platnosci to zapisz wybor i poinformuj o nim
|
||||||
# response = model("karta")
|
# response = model("karta")
|
||||||
#response = model("Poproszę blikiem z góry")
|
# response = model("Poproszę blikiem z góry")
|
||||||
response = model("Zapłacę kartą przy odbiorze")
|
response = model("Zapłacę kartą przy odbiorze")
|
||||||
print()
|
print()
|
||||||
# jezeli potwiedzi zamowienie to zakoncz zamawianie sukcesem i wypisz calosc
|
# jezeli potwiedzi zamowienie to zakoncz zamawianie sukcesem i wypisz calosc
|
||||||
@ -325,10 +326,17 @@ def dialogue_test():
|
|||||||
response = model("Dobrze, nie mogę się już doczekać.")
|
response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
print()
|
print()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
model = Model()
|
model = Model()
|
||||||
print("Chatbot Jarvis\n--------------")
|
print("Chatbot Jarvis\n--------------")
|
||||||
while True:
|
while True:
|
||||||
print("\nUżytkownik: ")
|
print("\nUżytkownik: ")
|
||||||
user_input = input()
|
user_input = input()
|
||||||
response = model(user_input, debug=False)
|
while user_input == "SYSTEM_FINISH":
|
||||||
|
print("\n\n\n\n\n\n\n\n\n\n\n\n")
|
||||||
|
model = Model()
|
||||||
|
print("Chatbot Jarvis\n--------------")
|
||||||
|
print("\nUżytkownik: ")
|
||||||
|
user_input = input()
|
||||||
|
response = model(user_input, debug=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user