JARVIS/nlg_data_generator.py

112 lines
5.6 KiB
Python

import pandas as pd
import random
addresses = ["ulica Zielona 15", "ulica Czerwona 20", "ulica Niebieska 30", "ulica Biala 5", "ulica Czarna 10", "ulica Fioletowa 25", "ulica Pomaranczowa 35", "ulica Zolta 40", "ulica Różowa 45", "ulica Szara 50", "ulica Brązowa 55", "ulica Srebrna 60", "ulica Złota 65", "ulica Platynowa 70", "ulica Miedziana 75", "ulica Niklowa 80", "ulica Aluminium 85", "ulica Stalowa 90", "ulica Żelazna 95", "ulica Miedziana 100"]
payment_methods = ["karta kredytowa", "gotowka", "blik", "przelew", "google pay"]
dishes = ["spaghetti", "pierogi", "schabowy", "pizza", "burger", "tatar", "poledwica", "tiramisu", "zrazy", "pyzy", "placki", "makaron", "zupa", "ryba", "cole", "tiramisu", "zupa grzybowa", "stek", "soki", "napoj"]
times = ["8:00", "12:00", "18:00", "20:00", "10:00", "dziesiata", "dziewiata", "osma", "siodma", "szosta", "czwarta", "trzecia", "druga", "pierwsza", "poludnie", "polnoc", "wschod", "zachod", "poludniowy wschod", "poludniowy zachod", "polnocny wschod", "polnocny zachod", "rano", "wieczor", "noc", "popoludnie", "przedpoludnie", "po poludniu", "po polnocy", "przed polnoca", "przed poludniem"]
portion_sizes = ["mała", "średnia", "duża", "gigantyczna", "mini"]
price = ["10", "50", "100", "150", "tanio", "drogo"]
ingredient = ["mięso", "mleko", "jajka", "mąka", "cukier", "sól", "pieprz", "oliwa", "masło", "ser", "warzywa", "owoce", "ryż", "makaron", "zupa", "ryba", "sos", "przyprawy", "soki", "napoje", "alkohol", "kawa", "herbata", "deser", "ciasto", "chleb", "pasta", "sos", "danie", "potrawa", "zupa", "sałatka", "kanapka", "tost", "jajecznica", "omlet", "placki", "pierogi", "schabowy", "kotlet", "kotlet schabowy", "kotlet mielony", "kotlet z kurczaka", "kotlet z indyka", "kotlet z ryby", "kotlet z warzyw", "kotlet ziemniaczany", "kotlet z kaszy", "kotlet z makaronu", "kotlet z ziemniaków", "kotlet z ryżu"]
allergy = ["gluten", "laktoza", "jajka", "orzechy", "soja", "ryby", "skorupiaki", "mleko", "seler", "gorczyca", "sezam", "siarczyny", "łubin", "migdały", "orzechy laskowe", "orzechy włoskie", "orzechy nerkowca", "orzechy ziemne", "orzechy brazylijskie", "orzechy makadamia", "orzechy pecan", "orzechy pistacjowe", "orzechy kasztanowe", "orzechy pinii", "orzechy arachidowe", "orzechy ziemne", "orzechy brazylijskie", "orzechy makadamia", "orzechy pecan", "orzechy pistacjowe", "orzechy kasztanowe", "orzechy pinii", "orzechy arachidowe", "orzechy ziemne", "orzechy brazylijskie", "orzechy makadamia", "orzechy pecan", "orzechy pistacjowe"]
def create_ref(slot, value):
ref_templates = {
"address": [
f"Zamówienie zostanie dostarczone na {value}.",
f"Niestety nie dostarczamy na {value}.",
f"Oczywiście, dostarczymy na {value}.",
f"Dostawa możliwa na {value}.",
f"Nie dostarczamy na {value}."
],
"payment_method": [
f"Akceptujemy płatność {value}.",
f"Nie akceptujemy płatności {value}.",
f"Możesz płacić {value}.",
f"Płatność {value} jest możliwa.",
f"Nie obsługujemy płatności {value}."
],
"dish": [
f"Specjalnością jest {value}.",
f"Nie mamy w ofercie {value}.",
f"Zapraszamy na {value}.",
f"{value} jest dostępne.",
f"Nie mamy {value} w menu."
],
"time": [
f"Godzina otwarcia to {value}.",
f"Nieczynne o {value}.",
f"Zapraszamy o {value}.",
f"Otwarte od {value}.",
f"Zamknięte o {value}."
],
"portion_size": [
f"Dostępne porcje: {value}.",
f"Brak porcji {value}.",
f"Dostępne porcje: {value}.",
f"Porcja {value} jest dostępna.",
f"Nie mamy porcji {value}."
],
"price": [
f"Cena to {value}.",
f"Nie mamy ceny {value}.",
f"Możesz kupić za {value}.",
f"Cena wynosi {value}.",
],
"ingredient": [
f"Składnik to {value}.",
f"Nie mamy składnika {value}.",
f"Zawiera {value}.",
f"Składnik {value} jest dostępny.",
],
"allergy": [
f"Zawiera alergen {value}.",
f"Nie zawiera alergenu {value}.",
f"Ostrzeżenie: alergen {value}.",
f"Produkt wolny od alergenu {value}.",
f"Nie mamy informacji o alergenie {value}."
]
}
return ref_templates[slot]
slots_data = {
"address": addresses,
"payment_method": payment_methods,
"dish": dishes,
"time": times,
"portion_size": portion_sizes,
"price": price,
"ingredient": ingredient,
"allergy": allergy
}
data = []
def remove_duplicates(list_of_dicts):
list_of_tuples = [tuple(sorted(d.items())) for d in list_of_dicts]
unique_tuples = set(list_of_tuples)
unique_dicts = [dict(t) for t in unique_tuples]
return unique_dicts
def generate_sample(num_slots):
selected_slots = random.sample(slots_data.keys(), num_slots)
mr_list = []
ref_list = []
for slot in selected_slots:
value = random.choice(slots_data[slot])
mr_list.append(f"{slot}[{value}]")
ref_list.append(random.choice(create_ref(slot, value)))
if len(mr_list) == 1:
return {"mr": repr(mr_list[0]), "ref": " ".join(ref_list)}
else:
return {"mr": ", ".join(mr_list), "ref": " ".join(ref_list)}
for num_slots in range(0, 6):
for _ in range(5000):
data.append(generate_sample(num_slots))
df = pd.DataFrame(remove_duplicates(data))
df.to_csv('abc.csv', index=False)