|
import gradio as gr |
|
from transformers import pipeline |
|
import re |
|
|
|
model_checkpoint = "erwanlc/t5-cocktails_recipe-base" |
|
tt_generator = pipeline("text2text-generation", model=model_checkpoint) |
|
|
|
def generate_text(ingredients): |
|
result = tt_generator(ingredients.lower(), min_length=20, max_length=1024, do_sample=True, temperature=1.0, top_p=1.0) |
|
result = result[0]["generated_text"] |
|
result_temp = result |
|
all_matches = re.findall(r"([A-z][.])", result) |
|
for matches in all_matches: |
|
result = result.replace(matches, f"{matches}\n") |
|
result = result.split("\n") |
|
all_matches = re.finditer(r"([0-9]*[.])?[0-9]+ ", result[-1]) |
|
all_matches = list(all_matches) |
|
all_matches = set([item.group() for item in all_matches]) |
|
for matches in all_matches: |
|
result[-1] = result[-1].replace(matches, f"\n{matches}") |
|
result = [item.strip() for item in result] |
|
result[-1] = f"\nIngredients:\n{result[-1]}" |
|
result[-1] = re.sub(" (?=[A-Z])", "\n", result[-1]) |
|
result = "\n".join(result) |
|
result = re.sub("(?<=[0-9].)\n(?=[0-9])", "", result) |
|
print(result_temp) |
|
return result |
|
|
|
title = "Create original cocktails based on your available ingredients" |
|
description = "Finetuned T5 on cocktails recipe. Write your ingredients separated by a comma to generate a cocktail. This work was inspired by Chef Transformer (https://huggingface.co/spaces/flax-community/chef-transformer)." |
|
examples = [ |
|
["rum,apricot liqueur,lime juice,sugar syrup"], |
|
["gin,honey,basil leaves,soda water"] |
|
] |
|
|
|
output_text = gr.outputs.Textbox() |
|
|
|
gr.Interface( |
|
fn=generate_text, |
|
inputs="textbox", |
|
outputs=output_text, |
|
title=title, |
|
description=description, |
|
examples=examples, |
|
theme="huggingface", |
|
).launch() |