update data and get function to print acts

This commit is contained in:
Karol Cyganik 2024-05-09 23:34:11 +02:00
parent 6090d5d923
commit 48b0371578
12 changed files with 84 additions and 45 deletions

View File

@ -10,5 +10,5 @@ user Jestem wysoce niepocieszony z powodu braku trunków siarczystych, ale jako
system Tak oczywiśćie nasza restauracja serwuje doskonałe tiramisu. Czy to wszystko? inform(dessert=tiramisu),reqmore()
user Jeszcze pytanie czy w waszym obiekcie znajduje się toaleta, pytam ponieważ na google można znaleźć opinie, że trzeba korzystać z latryny? request(restroom)
system Tak w naszym obiekcie znaduje się darmowa toaleta. Opinie na platformie goolge są w błędzie. inform(restroom=available)
user Dobrze w takim razie dziękuję za informację i będę o tej 19. thankyou,inform(time=19:00)
user Dobrze w takim razie dziękuję za informację i będę o tej 19. thankyou&inform(time=19:00)
system Doskonale, w takim razie potwierdzam Pana rezerwację stolika na dziś wieczorem o godzinie 19:00. Życzę Panu miłego wieczoru w naszej restauracji. Do zobaczenia o 19:00! affirm(),bye()

1 user Cześć hello()
10 system Tak oczywiśćie nasza restauracja serwuje doskonałe tiramisu. Czy to wszystko? inform(dessert=tiramisu),reqmore()
11 user Jeszcze pytanie czy w waszym obiekcie znajduje się toaleta, pytam ponieważ na google można znaleźć opinie, że trzeba korzystać z latryny? request(restroom)
12 system Tak w naszym obiekcie znaduje się darmowa toaleta. Opinie na platformie goolge są w błędzie. inform(restroom=available)
13 user Dobrze w takim razie dziękuję za informację i będę o tej 19. thankyou,inform(time=19:00) thankyou&inform(time=19:00)
14 system Doskonale, w takim razie potwierdzam Pana rezerwację stolika na dziś wieczorem o godzinie 19:00. Życzę Panu miłego wieczoru w naszej restauracji. Do zobaczenia o 19:00! affirm(),bye()

View File

@ -74,7 +74,7 @@ system Przykro mi, ale nie wspieramy tej opcji płatności canthelp
user Czy opakowanie na wynos są dodatkowo płatne? request(topic=”packaging”, value=”price”)
system Nie, opakowania są wliczone w cenę potrawy. inform
user Super to zatem wszystko ack&bye
system W celu realizacji zamówienia proszę o podanie adresu dostawy oraz formy płatności. canthelp:missingslotvalue(type=”delivery”)&canthelp:missingslotvalue(type=”payment”)
system W celu realizacji zamówienia proszę o podanie adresu dostawy oraz formy płatności. canthelp()&canthelp()
user "Uniwersytetu Poznańskiego 4, 61-614 Poznań
Sala D-3,
płatność za pomocą kryptowalut" inform(delivery=”Uniwersytetu Poznańskiego 4, 61-614 Poznań Sala D-3”)&inform(payment=”kryptowalut”)

1 user Hej, w czym mozesz mi pomoc? hello
74
75
76
77
78
79
80

View File

@ -11,7 +11,7 @@ system Sałatka warzywna zawiera następujące składniki: ziemniaki, marchew, p
system Jeśli chcesz, mogę zamówić wersję potrawy bez danego składnika. inform(topic=”alternative”)
user chciałbym sałatke, która nie ma majonezy i jest swieza reqalts(include=”sałatka warzywna”, exclude=”majonez”, exclude=“nieświeża”)
system Nasze potrawy zawsze są świeże, nasza restauracja i jej pracownicy spełniają wszystkie normy sanepidu. Dodałem do zamówienia sałatkę warzywną (bez majonezu). inform(topic=”świeżość”)
user chciałbym bez sałatki jednak, a w miejscu tego kiszonke. Czy maci kiszonki w restauracji reqaltsinclude=”kiszonka”)
user chciałbym bez sałatki jednak, a w miejscu tego kiszonke. Czy maci kiszonki w restauracji reqalts(include=”kiszonka”)
system Usunąłem potrawę Sałatka warzywna z zamówienia. Przykro mi, w ofercie nie posiadamy potrawy kiszonka. canthelp
user chodziło mi o kiszonki czyli ogorek kiszony, kimchi, kapusta kiszona itd reqalts(include=”ogorek kiszony, kimchi, kapusta kiszona”)
system Mamy w ofercie kimchi. Czy dodać je do zamówienia? offer(value=”kimchi”)&expl-conf

1 user witam hello
11 system Jeśli chcesz, mogę zamówić wersję potrawy bez danego składnika. inform(topic=”alternative”)
12 user chciałbym sałatke, która nie ma majonezy i jest swieza reqalts(include=”sałatka warzywna”, exclude=”majonez”, exclude=“nieświeża”)
13 system Nasze potrawy zawsze są świeże, nasza restauracja i jej pracownicy spełniają wszystkie normy sanepidu. Dodałem do zamówienia sałatkę warzywną (bez majonezu). inform(topic=”świeżość”)
14 user chciałbym bez sałatki jednak, a w miejscu tego kiszonke. Czy maci kiszonki w restauracji reqaltsinclude=”kiszonka”) reqalts(include=”kiszonka”)
15 system Usunąłem potrawę Sałatka warzywna z zamówienia. Przykro mi, w ofercie nie posiadamy potrawy kiszonka. canthelp
16 user chodziło mi o kiszonki czyli ogorek kiszony, kimchi, kapusta kiszona itd reqalts(include=”ogorek kiszony, kimchi, kapusta kiszona”)
17 system Mamy w ofercie kimchi. Czy dodać je do zamówienia? offer(value=”kimchi”)&expl-conf

View File

@ -1,5 +1,5 @@
user Dzień dobry hello()
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
user Chciałbym zjeść 3-daniowy obiad z kuchni włoskiej. inform()
user Chciałbym zjeść 3-daniowy obiad z kuchni włoskiej. inform(value="3-daniowy obiad z kuchni włoskiej")
system Proponuję "Sałatka caprese", "Lasagne", "Tiramisu" select()
user Mógłbyś mi napisać z jakich składników składa się sałatka? reqmore()
Can't render this file because it contains an unexpected character in line 4 and column 21.

View File

@ -4,7 +4,7 @@ user Moge doradzic ci w wyborze odpowiedniej pozycji z menu. help()
user W czym moge ci pomoc? help()
user Jakie macie menu na dzisiaj? help()
system "przystawki":"Tatar wołowy", "Carpaccio z buraka","Sałatka caprese","zupy":"Krem z dyni","Rosół z makaronem","Zupa grzybowa","dania_glowne":"Stek z polędwicy wołowej","Pieczona kaczka z jabłkami","Lasagne","Ryba z grilla","Risotto z kurczakiem i grzybami","Pierogi ruskie","Placki ziemniaczane","desery":"Tiramisu""Szarlotka","Lody waniliowe" offer()
user Jestem na diecie keto, jakie posiłi moge zjeść z tego menu? reqmore()
user Jestem na diecie keto, jakie posiłi moge zjeść z tego menu? reqmore(value="dieta keto")
system Co to znaczy dieta keto? repeat()
user spożywanie tłuszczy i wyeliminowanie węglowodanów, a ponadto znaczne ograniczenie posiłków zawierających cukier, a więc owoców i warzyw null()
system "Tatar wołowy" "Zupa grzybowa", Stek z polędwicy wołowej offer()
@ -12,7 +12,7 @@ user Dobrze a czy po takich potrawach nie będzie mi śmierdziało z buzi na ran
system Kwestia tego co lubi dziewczyna reqmore()
user Zaszło nieporozumienie, ide na randke z moim chłopakiem, czy mógłbyś nie opierać się na stereotypach? Było to dla mnie bardzo krzywdzące reqmore()
system Przepraszam, moje dane uczące pochodzą ze stereotypowego źródła. W takim razie to zależy od tego, czy twój chłopak lubi smak mięsa wołowego i grzybów reqmore()
user Okej a macie coś dopicia? request()
user Okej a macie coś dopicia? request(value="napoje")
system colę, wodę i lemoniadę offer()
user a jest piwo? reqmore()
system tak, żubr i kuflowe mocne offer()
@ -22,14 +22,14 @@ user Tak ack()
system gratuluję. Czy w takim razie chcesz zamówić piwo? offer()
user Tak ack()
system jakie? reqmore()
user kuflowe mocne inform()
user kuflowe mocne inform(value="kuflowe mocne")
system czy w takim razie twoje zmówienie to:"Tatar wołowy" "Zupa grzybowaStek z polędwicy wołowej mocne inform()
user Tak, ale jeszcze to nie koniec null()
user Czy macie w ofercie wódkę? request()
user Czy macie w ofercie wódkę? request(value="wódka")
system Niestety nie negate()
user a czy możecie zapakować dania na wynoc? help()
user a czy możecie zapakować dania na wynoc? help(value="pakowanie na wynos")
system Tak affirm()
user a ile wyjdzie za wszystko? request()
user a ile wyjdzie za wszystko? request(value="cena")
system 103zł inform()
user podaj cene za poszczególne składniki zamowienia reqmore()
system 22 28 zupa 45zł stek kuflowe inform()

Can't render this file because it contains an unexpected character in line 6 and column 19.

View File

@ -1,13 +1,13 @@
user Dzień dobry hello()
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
user Czy oferujecie burgery? request()
user Czy oferujecie burgery? request(value="burger")
system Nie, z dan głównych oferujemy: "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne", "Ryba z grilla", "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane" select()
user czy do pierogow ruskich dodajecie skwarki? reqmore()
user czy do pierogow ruskich dodajecie skwarki? reqmore(value="Pierogi ruskie")
system tak affirm()
user Czy moglibyscie przygotowac 20 porcji na okreslona godzine na wynos? request()
user Czy moglibyscie przygotowac 20 porcji na okreslona godzine na wynos? request(value="Pierogi ruskie", value="20", value="15:00", value="pojutrze")
system jak najbardziej affirm()
user to poprosze affirm()
system Pierogi ruskie 20 razy, tak? Na którą godzinę? inform()&request()
user na 15:00 na pojutrze select()
user na 15:00 na pojutrze select(value="15:00", value="pojutrze")
system przyjmujemy tylko zamówienia na ten sam dzień. Wróc do nas pojutrze negate()
user ok, dziekuje za pomoc bye()
Can't render this file because it contains an unexpected character in line 4 and column 41.

View File

@ -1,24 +1,24 @@
user Siema, w czym możesz mi pomóc? hello()&help()
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji.Moge doradzic ci w wyborze odpowiedniej pozycji z menu.W czym moge ci pomoc? welcomemsg()
user Chciałbym zamówić coś dietetycznego na obiad, co polecasz? help()
user Chciałbym zamówić coś dietetycznego na obiad, co polecasz? help(value="dietetyczne", category="obiad")
system "Sałatka caprese" z przystawek i "Ryba z grilla" na danie główne offer()
user A jaka to ryba? reqmore()
user A jaka to ryba? reqmore(value="ryba")
system Łosoś offer()
user Czy dało by się ją zamienić na inną, skoro nie lubię łososia? reqalts()
user Czy dało by się ją zamienić na inną, skoro nie lubię łososia? reqalts(value="ryba")
system Nie negate()
user Dobrze w takim razie zaproponuj coś innego. reqalts()
user Dobrze w takim razie zaproponuj coś innego. reqalts(value="cokolwiek")
system "Pierogi ruskie", offer()
user Okej brzmi dobrze. Chciałbym jeszcze zamówić cos do picia. affirm()&help()
user Okej brzmi dobrze. Chciałbym jeszcze zamówić cos do picia. affirm()&help(value="napoje")
system Polecam colę albo wodę offer()
user Wezmę colę, ile wynosi całkowity koszt zamówienia? inform()&help()
user Wezmę colę, ile wynosi całkowity koszt zamówienia? inform(value="cola")&help(value="cena")
system 51zł offer()
user Trochę drogo, nie ma zniżki dla studentów? reqmore()
user Trochę drogo, nie ma zniżki dla studentów? reqmore(value="zniżka")
system nie ma, przepraszam negate()
user Okej, w takim razie dziekuję za pomoc, pójdę do innej restauracji. bye()
system Na pewno nie będzie tam tak smacznie jak u nas negate()
user Skąd to wiesz jako system? reqmore()
system Bo nikt nie jest od nas lepszy inform()
user No dobrze przekonałeś mnie, złożę u was zamówienie, czy przyjmujecie płatność kartą? request()
user Skąd to wiesz jako system? reqmore(value="wiadomość")
system Nikt nie jest od nas lepszy inform()
user No dobrze przekonałeś mnie, złożę u was zamówienie, czy przyjmujecie płatność kartą? request(value="płatność")
system Tak! affirm()
user Świetnie, dziękuję za pomoc. thankyou()
system Pierogi ruskie i cola, płatność kartą. Czy to wszystko? inform()

Can't render this file because it contains an unexpected character in line 4 and column 25.

View File

@ -1,9 +1,9 @@
user Hej, czym się zajmujesz? hello()&help()
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? offer()
user Pokaż menu help()
user Pokaż menu help(value="menu")
system "przystawki": "Tatar wołowy", "Carpaccio z buraka", "Sałatka caprese", "zupy": "Krem z dyni", "Rosół z makaronem", "Zupa grzybowa","dania_glowne": "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne", "Ryba z grilla", "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane","desery": "Tiramisu" "Szarlotka", "Lody waniliowe", offer()
user Chciałbym zjeść tatara, zupe grzybowa, stek i tiramisu inform()
user Czy mogę zjeść tatara bez cebuli? reqmore()
user Chciałbym zjeść tatara, zupe grzybowa, stek i tiramisu inform(value="Tatar wołowy", value="Zupa grzybowa", value="Stek z polędwicy wołowej", value="Tiramisu")
user Czy mogę zjeść tatara bez cebuli? reqmore(value="Tatar wołowy bez cebuli")
system Tak, możemy przygotować tatara bez cebuli. affirm()
user Pełen profesjonalizm null()
user To będzie moje całe zamówienie thankyou()

Can't render this file because it contains an unexpected character in line 4 and column 19.

View File

@ -1,14 +0,0 @@
user czy macie jeszcze jakies ciasta dostepne ?
system tak, tiramisu i szarlotke
user prosiłbym szarlatke z lodami wanilowymi
system zrozumiałem
user Podsumowanie zamówienia: dwie porcje plackow ziemniaczanych z sosem smietanowym. szarlatka z lodami wanilowymi user: potwierdzam czy jeszcze musze coś wykonac system: nie. proszę czekać, zamówienie będzie gotowe do odbioru za 35min
user dziekuje
user witam
system Znowu?
system Czesc znowu w takim wypadku, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? user: chciałbym zjesc ramen. Czy u panstwa moge go zamowic system: Nie. Oto całe manu "przystawki": "Tatar wołowy", "Carpaccio z buraka", "Sałatka caprese", "zupy": "Krem z dyni", "Rosół z makaronem", "Zupa grzybowa", "dania_glowne": "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne", "Ryba z grilla", "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane", "desery": "Tiramisu" "Szarlotka", "Lody waniliowe"
user a co klienci najczesciej zamawiaja ?
system "Tatar wołowy", "Krem z dyni", "Stek z polędwicy wołowej", "Tiramisu"
user chciałbym to razy 8 jaka to bedzie cena
system 860zł
user okej w takim razie dziekuje
Can't render this file because it contains an unexpected character in line 9 and column 268.

View File

@ -14,16 +14,17 @@ recognized = 0
unrecognized = 0
for df in data_files:
if len(df.columns)==3:
if len(df.columns) == 3:
df.columns = ["agent", "message", "act"]
elif len(df.columns)==2:
elif len(df.columns) == 2:
df.columns = ["agent", "message"]
else:
continue
user_speech_rows = df[df['agent'] == "user"]
user_speeches = user_speech_rows["message"]
entries_count = len(user_speeches)
parsed = user_speeches.apply(lambda x: bool(grammar.find_matching_rules(x)))
parsed = user_speeches.apply(
lambda x: bool(grammar.find_matching_rules(x)))
true_count = parsed.sum()
false_count = len(parsed) - true_count
recognized += true_count
@ -31,4 +32,4 @@ for df in data_files:
print(f"Recognized user utterances: {recognized}")
print(f"Unrecognized user utterances: {unrecognized}")
print(f"Accuracy: {recognized/(recognized+unrecognized)}")
print(f"Accuracy: {recognized/(recognized+unrecognized)}")

52
get_acts.py Normal file
View File

@ -0,0 +1,52 @@
import os
import pandas as pd
from collections import defaultdict
def get_act_name_and_slots(act="request(cuisine)"):
acts = [act]
if "&" in act:
acts = act.split("&")
for act in acts:
if "(" not in act:
return act, []
act_name = act.split("(")[0]
try:
slots = act.split("(")[1].split(")")[0].split(",")
except IndexError:
slots = []
print(f"Error parsing act: {act}")
return act_name, slots
data_files = []
for filename in os.listdir("data"):
f = os.path.join("data", filename)
if os.path.isfile(f):
data_files.append(pd.read_csv(f, sep='\t', header=None))
acts = defaultdict(lambda: {"msg": [], "slots": []})
for df in data_files:
if len(df.columns) == 3:
df.columns = ["agent", "message", "act"]
else:
continue
current_acts = df['act']
user_speech_rows = df[df['agent'] == "user"]["message"]
for act, speech in zip(current_acts, user_speech_rows):
act_name, slots = get_act_name_and_slots(act)
acts[act_name]["slots"] += slots
acts[act_name]["msg"].append(speech)
print("Acts:")
for act in acts:
if act in ["hello", "welcomemsg", "ack", "rezerwuj"]:
continue
print(f"{act}: {len(acts[act]['msg'])} examples")
for sentence in acts[act]["msg"]:
print(f"\t{sentence}")
print("\n\n")
print()

0
out.spacy Normal file
View File