<jupyter_start><jupyter_text>iChef Backend 3 Hackthon iFood Carrega as Bibliotecas nescessarias<jupyter_code>import pandas as pd
import numpy as np
import json<jupyter_output><empty_output><jupyter_text>Criar o banco de dados:Banco de dados de receitas, titulo, igredientes e como fazerFonte de dados:https://www.kaggle.com/paultimothymooney/recipenlg<jupyter_code>recipes = pd.read_csv('RecipeNLG_dataset.csv', encoding='utf8')
recipes.sample(5)<jupyter_output><empty_output><jupyter_text>Segunda tabela do banco de dadosO objetivo deste codigo é criar uma lista de igredientes usados e um dicionarios com a relação Igrediente: [lista de ids de receitas que usam]<jupyter_code>dic_igredientes = {}
lista_igredientes = [list]
for i, row in recipes.iterrows():
    for ingrediente in row['NER'].split(','):
        ingrediente = ingrediente.replace('"',"").replace('[','').replace(']','')
        ingrediente = " ".join(ingrediente.split())
        lista_igredientes.append(ingrediente)
        try:
            dic_igredientes[ingrediente].append(i)
        except KeyError:
            dic_igredientes[ingrediente] = [i]<jupyter_output><empty_output><jupyter_text>APICodigo de API para retornar as 5 receitas que mais combinam com o cliente dado os igredientes que ele possui<jupyter_code>'''
Iteligencia artificial de aprendizado de reforço
-dado o dia da semana, o cluster do usuario, hora e a receita a ser comparada com o usuario
etorna o quanto o usuario vai gostar dessa receita

API np.random 
É uma tecnica importantissia baseada em varios dados como a semente aleatoria
e deve ser substituida o mais rapido possivel na proxima fase do projeto.

Quanto maior o valor, mais o cliente vai gostar da receita.


'''
def ml_reforcement(id_receita):
    week_day = 5
    user_cluster = 30
    time = 1930

    seed = week_day + user_cluster + time + id_receita

    np.random.seed(seed=seed)

    value = np.random.randint(0,100,1)

    return value
a = dic_igredientes['peanut butter']
b = dic_igredientes['graham cracker crumbs']
c = dic_igredientes['butter']
d = dic_igredientes['powdered sugar']
e = dic_igredientes['chocolate chips']
#f = dic_igredientes['vanilla']
#g = dic_igredientes['butter']

receitas_possiveis = set.intersection(*[set(list) for list in [a,b,c,d,e]])

receitas_finais = []
for receita in receitas_possiveis:
    if len(recipes['NER'][receita].replace('"',"").replace('[','').replace(']','').split(',')) == len([a,b,c,d,e]):
        receitas_finais.append(receita)


retorno = {}
indice = 0
for receita in receitas_finais:

    ml_points = ml_reforcement(receita)
    indice= indice + 1

    retorno[ml_points[0]]={
        'id_recipe': receita,
        'title':recipes['title'][receita],
        'love': ml_points[0],
        'directions':recipes['directions'][receita],
        'directions':recipes['ingredients'][receita]
    }


retorno = pd.DataFrame.from_dict(retorno, orient='index').sort_index(ascending=False)
result = retorno.head(5).to_json(orient="records")
result = json.loads(result)
result<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11912532637075718, 'fraction_numerical': 0.00685378590078329, 'mean_word_length': 4.963035019455253, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '22909', 'license': 'MIT', 'n_tokens_mistral': 1123, 'n_tokens_neox': 1099, 'n_words': 258, 'path': 'classification_recipe.ipynb', 'repo_name': 'iulihardt/iFood3hackthon', 'size': '3064'}