📊 Análise Exploratória de Dados (EDA) & Métricas Avançadas
LeetCode Problems Dataset (Edição Bilíngue PT-BR / EN)
Disciplina: Inteligência Artificial II — Engenharia de Computação (IFNMG)
Professor: Aléssio Miranda Júnior
Dataset Base: trabalho/database/leetcode_problems_pt.json & leetcode_problems_pt.csv (2.830 problemas públicos traduzidos)
🎯 Objetivo deste Relatório
Este notebook apresenta um raio-X aprofundado do conjunto de dados bilíngue do LeetCode, revelando propriedades estatísticas, estruturais, linguísticas e algorítmicas que raramente são visíveis à primeira vista.
O relatório serve como bússola analítica para os alunos durante o desenvolvimento dos Trabalhos Práticos (TPs), guiando decisões de pré-processamento, engenharia de atributos (feature engineering), janelas de contexto para LLMs e modelagem preditiva.
1. Configuração do Ambiente e Importação de Bibliotecas
2. Carga dos Dados e Sanitização Estrutural
3. Distribuições Macroscópicas & Engajamento da Comunidade
4. Métricas de NLP, Tokenização e Expansão Textual (EN \(\leftrightarrow\) PT-BR)
Uma dimensão crítica para o uso de Modelos de Linguagem (LLMs) é o tamanho de contexto, densidade de código/tags e a taxa de expansão linguística ao traduzir de Inglês para Português.
5. Análise Comparativa de Soluções (Python vs Java vs C++)
Métricas de linhas de código (LOC - Lines of Code) e complexidade sintática entre linguagens para os mesmos algoritmos.
6. Taxonomia Algorítmica & Matriz de Coocorrência de Tópicos
Identificação de sinergias entre tópicos algorítmicos (ex.: quando Programação Dinâmica aparece junto com Árvores ou Arrays).
7. Síntese de Insights para os Trabalhos Práticos (TPs de IA II)
A partir da análise quantitativa do dataset, destacam-se diretrizes estratégicas para os projetos da disciplina:
| Dimensão Analisada | Fato Observado | Impacto & Decisão Pedagógica nos TPs |
|---|---|---|
| Balanceamento de Classes | Medium representa ~50% do dataset, enquanto Easy (~26,6%) e Hard (~23,4%) são minoritários. | Estratificação Obrigatória: Modelos preditivos de classificação (TP1) devem usar Stratified K-Fold e métricas ponderadas (Macro F1-Score ou Balanced Accuracy) em vez de acurácia simples. |
| Expansão Textual (PT vs EN) | Os enunciados em PT-BR são em média 15% a 20% mais longos em caracteres e tokens que o original em inglês. | Janela de Contexto de LLM (TP2): Prompts de few-shot ou chain-of-thought em português exigem atenção redobrada ao limite de tokens de entrada (max_tokens). |
| Preservação Estrutural de Código | 99% dos problemas possuem tags <code> e 97% possuem blocos <pre> com casos de teste. |
Extração de Features: A contagem de blocos <pre> e complexidade das restrições (<sup>) são fortes preditores não-textuais de dificuldade algorítmica. |
| Paradigmas Combinados | Dynamic Programming, Matrix, Heap e Binary Search possuem a maior proporção relativa de problemas Hard. | Modelagem Multirrótulo: A matriz de coocorrência mostra que tarefas de predição de tópicos se beneficiam fortemente de classificadores multi-label (ex: Binary Relevance, Classifier Chains). |
| Concisão de Linguagem | Códigos em Python são em média 38% mais curtos em linhas que Java e 41% mais curtos que C++. | Geração & RAG de Código (TP3): Modelos treinados ou avaliados em Python geram menos tokens de saída, reduzindo latência e custo computacional de inferência. |
Relatório gerado automaticamente para a disciplina de Inteligência Artificial II — IFNMG.