# Dataset Infix→Prefix Convertido ✅ **Data**: 2026-02-09 **Status**: COMPLETO --- ## 📊 Estatísticas da Conversão - **Total de Exemplos**: 12,221 - **Taxa de Sucesso**: 100.00% (12,221/12,221) - **Tempo de Conversão**: ~15 segundos - **Tamanho do Dataset**: 7 MB --- ## 📁 Localização **Dataset Convertido**: `./1_data/processed/700K_prefix_converted/` **Arquivos**: - `data-00000-of-00001.arrow` (7 MB) - `dataset_info.json` - `state.json` --- ## 🔧 Colunas do Dataset ### Colunas Originais - `infix_expr_n`: Expressão infix com números - `infix_expr_c`: Expressão infix com constante C - `expression_objects`: Objeto Expression serializado - `prefix_expr_c`: Expressão prefix original (diferente!) - `prefix_expr_n`: Expressão prefix original com números - `i_prompt_n`: **Prompt infix original** (usado para conversão) - `p_prompt_n`: Prompt prefix original (expressão diferente!) - `skeleton`: Esqueleto da expressão ### Colunas Adicionadas ✨ - **`p_prompt_n_converted`**: Prompt prefix CONVERTIDO do i_prompt_n (mesma expressão!) - **`conversion_success`**: Boolean indicando sucesso da conversão (todos True) --- ## 🎯 Diferença Crítica ### ANTES (Problema) ``` i_prompt_n: "expr: x_1 + x_2" (5 variáveis) p_prompt_n: "expr: * x_3 x_4" (10 variáveis, EXPRESSÃO DIFERENTE!) ``` ❌ Não são a mesma expressão! ### AGORA (Solução) ``` i_prompt_n: "expr: x_1 + x_2" p_prompt_n_converted: "expr: + x_1 x_2" (MESMA expressão em prefix!) ``` ✅ Mesma expressão, notações diferentes! --- ## 📝 Exemplos de Conversão ### Exemplo 1 **INFIX**: ``` vars: x_1, x_2, x_3, x_4, x_5 oper: *, +, -, /, abs, asin, cos, exp, log, sin, sqrt, tan cons: C expr: x_2 - (x_5 - C)*(x_4 + exp(C*x_2) + C) ``` **CONVERTIDO PARA PREFIX**: ``` vars: x_1, x_2, x_3, x_4, x_5 oper: *, +, -, /, abs, asin, cos, exp, log, sin, sqrt, tan cons: C expr: - x_2 * - x_5 C + + x_4 exp * C x_2 C ``` ### Exemplo 2 **INFIX**: ``` vars: x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10 oper: **, +, -, /, cos, exp, sin, sqrt cons: C expr: x_2 - x_1 + sin(exp(x_9)) ``` **CONVERTIDO PARA PREFIX**: ``` vars: x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10 oper: **, +, -, /, cos, exp, sin, sqrt cons: C expr: + + x_2 * -1 x_1 sin exp x_9 ``` ### Exemplo 3 **INFIX**: ``` vars: x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10 oper: *, +, /, asin, sin, tan cons: C expr: (tan(x_7) + C)*(asin(x_5) + C) ``` **CONVERTIDO PARA PREFIX**: ``` vars: x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10 oper: *, +, /, asin, sin, tan cons: C expr: * + tan x_7 C + asin x_5 C ``` --- ## 🚀 Próximos Passos ### Opção 1: Upload para HuggingFace Hub (Recomendado) ```bash python scripts/data/convert_infix_to_prefix.py \ --split test \ --output_path ./1_data/processed/700K_prefix_converted \ --upload \ --repo_id augustocsc/sintetico_natural_prefix_converted ``` **Vantagens**: - Facilita compartilhamento - Pode usar em qualquer lugar - Scripts de treinamento já funcionam com HF datasets **Requisitos**: - Permissão de escrita no repo HuggingFace - Login: `huggingface-cli login` --- ### Opção 2: Treinar Localmente #### A. Usando Dataset Local com Scripts Existentes **Problema**: Os scripts atuais (`2_training/supervised/train.py`) carregam direto do HuggingFace Hub. **Solução**: Adaptar o script ou criar um novo. #### B. Carregar Dataset Local no Python ```python from datasets import load_from_disk # Carregar dataset convertido ds = load_from_disk('./1_data/processed/700K_prefix_converted') # Usar coluna p_prompt_n_converted para treinar # (adaptar script de treinamento) ``` --- ### Opção 3: Criar Script de Treinamento Adaptado Criar `2_training/supervised/train_local_prefix.py` que: 1. Carrega dataset de `./1_data/processed/700K_prefix_converted` 2. Usa coluna `p_prompt_n_converted` 3. Treina com formato prefix --- ## 📋 Checklist de Validação - [x] Dataset convertido (12,221 exemplos) - [x] Taxa de sucesso 100% - [x] Dataset salvo localmente - [x] Documentação criada - [ ] Upload para HuggingFace Hub - [ ] Treinamento de modelo teste - [ ] Comparação infix vs prefix --- ## 🔍 Como Verificar o Dataset ```bash # Testar o dataset cd /c/Users/madeinweb/seriguela python -c " from datasets import load_from_disk ds = load_from_disk('./1_data/processed/700K_prefix_converted') print(f'Total: {len(ds)} exemplos') print(f'Colunas: {ds.column_names}') print(f'Sucesso: {sum(ds[\"conversion_success\"])/len(ds)*100:.1f}%') print() print('Exemplo 1:') print('INFIX:', ds[0]['i_prompt_n']) print() print('PREFIX:', ds[0]['p_prompt_n_converted']) " ``` --- ## 📚 Arquivos Relacionados - `scripts/data/convert_infix_to_prefix.py` - Script de conversão - `1_data/processed/PREFIX_CONVERSION_README.md` - Documentação detalhada - `classes/expression.py` - Classe com `parse_prefix()` para validação --- ## ✅ Qualidade da Conversão ### Verificação Automática Todas as 12,221 expressões foram: 1. ✅ Parseadas com sucesso usando SymPy 2. ✅ Convertidas para notação prefix 3. ✅ Mantendo mesmas variáveis e operadores 4. ✅ Salvas com sucesso ### Validação Manual 3 exemplos verificados manualmente mostraram conversão correta. --- **Próxima Ação Recomendada**: 1. Fazer upload para HuggingFace Hub (mais fácil para usar) 2. OU adaptar script de treinamento para carregar dataset local **Você prefere qual opção?**