|
--- |
|
license: mit |
|
model-index: |
|
- name: chef-gpt-base |
|
results: [] |
|
language: |
|
- bg |
|
pipeline_tag: text-generation |
|
widget: |
|
- text: "[ING]4 бр. яйца[EOL]1 ч.ч. прясно мляко[EOL]1/4 ч.л. сода[REC]" |
|
--- |
|
|
|
# chef-gpt-base |
|
GPT-2 architecture trained to generate recipes based on ingredients. |
|
|
|
## Model description |
|
This is GPT-2 pretrained on a custom dataset of recipies in Bulgarian. |
|
You can find the dataset [here](https://www.kaggle.com/datasets/auhide/bulgarian-recipes-dataset). |
|
|
|
## Usage |
|
```python |
|
import re |
|
# Using this library to beautifully print the long recipe string. |
|
from pprint import pprint |
|
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
|
|
# Load the model and tokenizer: |
|
MODEL_ID = "auhide/chef-gpt-base" |
|
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) |
|
chef_gpt = AutoModelForCausalLM.from_pretrained(MODEL_ID) |
|
|
|
# Prepare the input: |
|
ingredients = [ |
|
"1 ч.ч. брашно", |
|
"4 яйца", |
|
"1 кофичка кисело мляко", |
|
"1/4 ч.л. сода", |
|
] |
|
input_text = f"[ING]{'[EOL]'.join(ingredients)}[REC]" |
|
input_ids = tokenizer(input_text, return_tensors="pt").input_ids |
|
|
|
# Generate text: |
|
output = chef_gpt.generate(input_ids, max_length=150) |
|
recipe = tokenizer.batch_decode(output)[0] |
|
# Get the generated recipe - it is up until the 1st [SEP] tag. |
|
recipe = re.findall(r"\[REC\](.+?)\[SEP\]", recipe)[0] |
|
|
|
print("Съставки/Ingredients:") |
|
pprint(ingredients) |
|
print("\nРецепта/Recipe:") |
|
pprint(recipe) |
|
``` |
|
```bash |
|
Съставки/Ingredients: |
|
['1 ч.ч. брашно', '4 яйца', '1 кофичка кисело мляко', '1/4 ч.л. сода'] |
|
|
|
Рецепта/Recipe: |
|
('В дълбока купа се разбиват яйцата. Добавя се киселото мляко, в което ' |
|
'предварително е сложена содата, и се разбива. Добавя се брашното и се омесва ' |
|
'тесто. Ако е много гъсто се добавя още малко брашно, ако е много гъсто се ' |
|
'добавя още малко брашно. Фурната се загрява предварително на 180С градуса. ' |
|
'Когато тестото е готово, се вади от фурната и се разделя на три части.') |
|
``` |
|
|
|
|
|
## Additional tokens |
|
- [ING] - ingredients token; denotes the begining of the tokens representing the ingredients |
|
- [EOL] - end-of-line token; equivalent to a newline |
|
- [REC] - recipe token; denotes the begining of the recipe |