Chatbot simples desenvolvido com Cadeias de Markov para o workshop de Inteligência Artificial da UnB.
shatshum/
├── shatshum.html # Estrutura HTML (simples e semântica)
├── shatshum.css # Estilos visuais (design moderno)
├── shatshum.js # Lógica do chatbot (Cadeias de Markov)
└── README.md # Documentação
- ✅ Inclui
shatshum.csseshatshum.js - ✅ Chama
treinar_ia()ao carregar - ✅ Campo de entrada para digitar texto
- ✅ Botão de envio + suporte para Ctrl+Enter
- ✅ Área de mensagens com DIVs dinâmicos
- ✅ Envio adiciona texto como "mensagem do usuário"
- ✅ Chama
processar_texto_e_responder()ao enviar - ✅ Resposta da IA é adicionada como "mensagem do bot"
- ✅ Design simples e limpo
- ✅ Interface bonita e moderna
- ✅ Animações suaves
- ✅ Responsivo (mobile-friendly)
- ✅ Tema verde UnB
- ✅ Função
treinar_ia()- treina o modelo com dados padrão - ✅ Função
processar_texto_e_responder()- gera respostas usando Markov - ✅ Algoritmo de Cadeias de Markov funcional
- ✅ Mínimo de JavaScript no HTML (separação de responsabilidades)
- ✅ Botão "Reset" - limpa chat e retreina IA
- ✅ Botão "Treinar" - permite upload de arquivo .txt para treinar
- ✅ Botão "Sobre" - modal com informações do desenvolvedor
- ✅ Botões de ação rápida (exemplos de perguntas)
- ✅ Indicador de "digitando..." animado
Simplesmente abra o arquivo shatshum.html no seu navegador.
- Digite sua mensagem no campo de texto
- Pressione Enter ou clique no botão ➤ para enviar
- Use Ctrl+Enter como atalho alternativo
- Clique no botão 📂 Treinar
- Selecione um arquivo
.txtcom frases (uma por linha ou separadas por pontos) - A IA será retreinada com as novas frases
Clique em 🔄 Reset para limpar o chat e resetar a IA aos dados padrão.
Uma Cadeia de Markov é um modelo probabilístico que prevê a próxima palavra baseada na palavra atual.
Dados de treinamento:
- "A UnB é linda"
- "A UnB é moderna"
- "A universidade é grande"
Cadeia construída:
"a" → ["unb", "universidade"]
"unb" → ["é", "é"]
"é" → ["linda", "moderna", "grande"]
"universidade" → ["é"]
Geração de resposta:
- Começa com palavra da entrada do usuário (ou aleatória)
- Escolhe próxima palavra aleatoriamente das opções disponíveis
- Repete até atingir comprimento máximo
- Formata e retorna a resposta
Usuário digita "conte sobre UnB"
↓
processar_texto_e_responder()
↓
gerarRespostaMarkov()
↓
Encontra "unb" na cadeia → ["é", "é"]
Escolhe "é" → ["linda", "moderna", "grande"]
Escolhe "moderna" → ...
↓
Retorna: "Unb é moderna e tem laboratórios modernos."
Edite shatshum.css para personalizar cores, fontes, animações, etc.
Edite a variável trainingData em shatshum.js (linha ~14) ou use o botão "Treinar" para adicionar frases de um arquivo.
Ajuste os parâmetros em shatshum.js:
maxPalavras(linha ~130): comprimento máximo das respostas- Delays dos timeouts: velocidade de resposta simulada
- HTML: ~120 linhas (estrutura semântica)
- CSS: ~400 linhas (design completo)
- JavaScript: ~300 linhas (lógica + Markov)
- Total: JavaScript mínimo no HTML (apenas 20 linhas de inicialização)
- Navegador moderno (Chrome, Firefox, Edge, Safari)
- Suporte a ES6+ JavaScript
- Nenhuma dependência externa necessária
Arquivo: shatshum.js
Funções principais:
treinar_ia()- linha 14processar_texto_e_responder()- linha 44construirCadeiaMarkov()- linha 59gerarRespostaMarkov()- linha 93
- Iniciante: Adicionar mais frases ao
trainingData - Intermediário: Implementar bigramas (pares de palavras) em vez de palavras únicas
- Avançado: Adicionar análise de sentimento ou contexto de conversa
Projeto educacional desenvolvido para o Workshop de IA da UnB.
Desenvolvido com ❤️ para a comunidade UnB