{"id":29022980,"url":"https://github.com/leonardobora/misoginy-analysis-ml","last_synced_at":"2026-03-11T09:03:55.300Z","repository":{"id":299428623,"uuid":"1002209629","full_name":"leonardobora/misoginy-analysis-ml","owner":"leonardobora","description":"APS 2 MACHINE LEARNING - 7P ENGENHARIA DE SOFTWARE UNIBRASIL ","archived":false,"fork":false,"pushed_at":"2025-06-17T19:51:34.000Z","size":81987,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-20T20:50:44.974Z","etag":null,"topics":["cnn","machinelearning","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leonardobora.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-15T00:34:25.000Z","updated_at":"2025-06-17T20:00:48.000Z","dependencies_parsed_at":"2025-06-17T20:25:47.615Z","dependency_job_id":null,"html_url":"https://github.com/leonardobora/misoginy-analysis-ml","commit_stats":null,"previous_names":["leonardobora/musico-analisa-sensivel","leonardobora/misoginy-analysis-ml"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/leonardobora/misoginy-analysis-ml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardobora%2Fmisoginy-analysis-ml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardobora%2Fmisoginy-analysis-ml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardobora%2Fmisoginy-analysis-ml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardobora%2Fmisoginy-analysis-ml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leonardobora","download_url":"https://codeload.github.com/leonardobora/misoginy-analysis-ml/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardobora%2Fmisoginy-analysis-ml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30376784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cnn","machinelearning","tensorflow"],"created_at":"2025-06-26T03:04:35.907Z","updated_at":"2026-03-11T09:03:55.282Z","avatar_url":"https://github.com/leonardobora.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎵 Sistema de Classificação Musical - Execução 100% Local\n\n\u003e Sistema automatizado para classificação de misoginia em letras musicais usando CNN ultra-compacta. **Totalmente offline - sem dependências de serviços externos.**\n\n## 📋 Sobre o Projeto\n\nSistema desenvolvido para a **Atividade Discente Supervisionada 2 (ADS2)** da disciplina de **Aprendizado de Máquina**, sob orientação do **Prof. Mozart Hasse**. O projeto implementa uma **Rede Neural Convolucional (CNN)** para detectar conteúdo misógino em letras de música do dataset \"Top 100 Songs \u0026 Lyrics By Year (1959–2023)\".\n\n### 🎯 Objetivo\n\nCriar um modelo de classificação automática que analisa letras de músicas e atribui uma **pontuação de intensidade de conteúdo misógino** na escala de 0 a 1, onde:\n- **0**: música sem conteúdo inapropriado\n- **1**: letra com conteúdo flagrantemente misógino\n\n## 🏫 Instituição de Ensino\n\n**UniBrasil Centro Universitário**\n\n## 👥 Equipe de Desenvolvimento\n\n**Curso:** Engenharia de Software - 7º Período - Turma B\n\n| Nome | Papel | Responsabilidades |\n|------|-------|-------------------|\n| **Leonardo Bora** | Desenvolvedor Full-Stack | Arquitetura do sistema, modelagem CNN |\n| **Letícia Campos** | Especialista em ML | Treinamento de modelos, análise de dados |\n| **Carlos Krueger** | Desenvolvedor Frontend | Interface do usuário, visualizações |\n| **Luan constâncio** | Desenvolvedor Backend | APIs, integração de dados |\n| **Nathan Correia** | Analista de Dados | Rotulagem manual, pré-processamento |\n\n## 🚀 Tecnologias Utilizadas - **EXECUÇÃO 100% LOCAL**\n\n- **Frontend**: React 18 + TypeScript + Vite\n- **UI Components**: Shadcn/UI + TailwindCSS  \n- **Machine Learning**: TensorFlow.js (execução no navegador)\n- **Banco de Dados**: IndexedDB (armazenamento local do navegador)\n- **Dataset**: CSV incluído no projeto (6.000+ músicas)\n- **Dependências**: Zero dependências online após instalação\n\n## 🏗️ Arquitetura do Sistema\n\n### Componentes Principais\n\n1. **Interface Web Responsiva**\n   - Dashboard analítico\n   - Classificador em tempo real\n   - Sistema de rotulagem manual\n   - Gerenciamento de dados\n\n2. **Modelo CNN Local**\n   - Arquitetura personalizada para texto\n   - Treinamento 100% local\n   - Predição em tempo real\n   - Armazenamento persistente\n\n3. **Pipeline de Dados**\n   - Pré-processamento de texto\n   - Tokenização e vetorização\n   - Validação e limpeza\n\n## 💻 Instalação e Configuração Local\n\n### Pré-requisitos\n\n#### Windows\n- **Node.js 18+**: [Download](https://nodejs.org/)\n- **Git**: [Download](https://git-scm.com/download/win)\n- **VSCode** (recomendado): [Download](https://code.visualstudio.com/)\n\n#### Linux (Ubuntu/Debian)\n```bash\n# Atualizar repositórios\nsudo apt update\n\n# Instalar Node.js 18+\ncurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -\nsudo apt-get install -y nodejs\n\n# Instalar Git\nsudo apt install git\n\n# Verificar instalações\nnode --version\nnpm --version\ngit --version\n```\n\n#### Linux (CentOS/RHEL/Fedora)\n```bash\n# Instalar Node.js 18+\ncurl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -\nsudo yum install -y nodejs\n\n# Instalar Git\nsudo yum install git\n```\n\n### Instalação do Projeto\n\n#### 1. Clone o Repositório\n```bash\n# Clone o projeto\n# Substitua pelo nome correto do repositório\n git clone https://github.com/leonardobora/musico-analisa-sensivel.git\ncd musico-analisa-sensivel\n```\n\n#### 2. Instale as Dependências\n```bash\nnpm install\n```\n\n#### 3. Execute o Projeto\n```bash\nnpm run dev\n```\n\nAcesse: `http://localhost:8080`\n\n**Observação:** Não é necessário configurar variáveis de ambiente ou Supabase. Todo o armazenamento é local (IndexedDB).\n\n## 🎵 Dataset\n\n**Fonte:** [Top 100 Songs \u0026 Lyrics By Year (1959–2023)](https://www.kaggle.com/datasets/brianblakely/top-100-songs-and-lyrics-from-1959-to2019)\n\n- **Volume:** ~6.500 músicas com letras completas\n- **Período:** 1959-2023 (64 anos de música popular)\n- **Formato:** CSV com colunas: ano, artista, música, letra, posição no ranking\n\n## 🤖 Metodologia de ML\n\n### Abordagem CNN para Texto\n\n1. **Pré-processamento:**\n   - Tokenização de texto\n   - Remoção de stopwords\n   - Normalização e limpeza\n   - Vetorização com embeddings\n\n2. **Arquitetura CNN:**\n   - Camadas convolucionais 1D\n   - Max pooling temporal\n   - Dropout para regularização\n   - Camada densa final para classificação\n\n3. **Treinamento:**\n   - Dataset rotulado manualmente (30+ músicas)\n   - Validação cruzada\n   - Métricas: Acurácia, Precisão, Recall, F1-Score\n\n### Critérios de Rotulagem\n\nBaseado em literatura acadêmica sobre detecção de misoginia:\n\n- **Baixo (0.0-0.3):** Conteúdo neutro ou positivo\n- **Médio (0.3-0.7):** Linguagem questionável, objetificação sutil\n- **Alto (0.7-1.0):** Conteúdo explicitamente misógino\n\n## 🔧 Como Usar\n\n### 1. Rotulagem Manual\n- Acesse a aba \"Rotulagem\"\n- Selecione músicas do dataset\n- Atribua pontuações de 0 a 1\n- Salve as classificações\n- **Exportação:** Use o botão de exportar para baixar um arquivo `.json` com seus rótulos\n- **Importação:** Use o botão de importar para carregar rótulos previamente salvos (útil para colaboração ou entrega)\n\n#### Formato do arquivo de rótulos (`labels.json`):\n```json\n[\n  {\n    \"id\": \"unique_song_id_1\",\n    \"title\": \"Nome da Música 1\",\n    \"artist\": \"Nome do Artista 1\",\n    \"year\": 2020,\n    \"lyrics\": \"Letra da música aqui...\",\n    \"label\": \"misogynistic\"\n  }\n]\n```\n\n### 2. Treinamento do Modelo\n- Vá para \"Treinamento\"\n- Configure hiperparâmetros\n- Inicie o treinamento local\n- Monitore métricas em tempo real\n\n### 3. Classificação Automática\n- Use a aba \"Classificador\"\n- Cole letras de música\n- Obtenha pontuação automática\n- Visualize análise detalhada\n\n### 4. Dashboard Analítico\n- Veja estatísticas gerais\n- Analise tendências temporais\n- Compare resultados\n\n## 📊 Funcionalidades\n\n- ✅ **Classificação em tempo real** com CNN local\n- ✅ **Interface web responsiva** e intuitiva\n- ✅ **Sistema de rotulagem manual** para treinamento\n- ✅ **Dashboard analítico** com visualizações\n- ✅ **Gerenciamento de dataset** completo\n- ✅ **Treinamento local** sem dependências externas\n- ✅ **Métricas de performance** detalhadas\n- ✅ **Armazenamento persistente** de modelos\n\n## 🎯 Requisitos Acadêmicos Atendidos\n\n### Técnicos\n- [x] Algoritmo de redes neurais artificiais (CNN)\n- [x] Execução 100% local (sem serviços externos)\n- [x] Análise exploratória do dataset\n- [x] Rotulagem manual de 30+ músicas\n- [x] Pontuação contínua entre 0 e 1\n- [x] Interface funcional para demonstração\n\n### Documentação\n- [x] Relatório técnico detalhado\n- [x] Justificativas metodológicas com referências\n- [x] Análise de limitações éticas e técnicas\n- [x] Ranking de músicas classificadas\n- [x] Código organizado e comentado\n- [x] Apresentação final\n\n## 🚨 Limitações e Considerações Éticas\n\n### Limitações Técnicas\n- **Contexto:** Modelo não interpreta contexto complexo ou ironia\n- **Tamanho:** Dataset limitado para treinamento robusto\n- **Idioma:** Focado apenas em letras em inglês\n- **Subjetividade:** Misoginia pode ser interpretada diferentemente\n\n### Limitações Éticas\n- **Viés:** Possível viés nos dados de treinamento\n- **Interpretação:** Modelo não considera intenção artística\n- **Contexto Cultural:** Não considera diferenças culturais/temporais\n- **Responsabilidade:** Ferramenta auxiliar, não substitui análise humana\n\n## 📈 Estrutura do Projeto\n\n```\nsrc/\n├── components/           # Componentes React\n│   ├── ui/              # Componentes de interface\n│   ├── ContentClassifier.tsx\n│   ├── ModelTraining.tsx\n│   ├── ManualLabeling.tsx\n│   └── DashboardOverview.tsx\n├── services/            # Serviços de ML e dados\n│   ├── MisogynyCNNModel.ts\n│   ├── TextPreprocessor.ts\n│   ├── ModelTrainer.ts\n│   └── ModelStorage.ts\n├── types/               # Definições TypeScript\n└── pages/               # Páginas da aplicação\n```\n\n## 🧪 Testes\n\n```bash\n# Executar testes unitários\nnpm run test\n\n# Executar testes de integração\nnpm run test:integration\n\n# Cobertura de testes\nnpm run test:coverage\n```\n\n## 📚 Referências Acadêmicas\n\n1. Zhang, X., Zhao, J., \u0026 LeCun, Y. (2015). Character-level convolutional networks for text classification.\n2. Waseem, Z., \u0026 Hovy, D. (2016). Hateful symbols or hateful people? Predictive features for hate speech detection on Twitter.\n3. Badjatiya, P., et al. (2017). Deep learning for hate speech detection in tweets.\n4. Davidson, T., et al. (2017). Hate speech detection with a computational approach.\n\n## 📝 Licença\n\nEste projeto foi desenvolvido para fins acadêmicos como parte da disciplina de Aprendizado de Máquina.\n\n## 🤝 Contribuição\n\nEste é um projeto acadêmico fechado. Para dúvidas ou sugestões, entre em contato com a equipe.\n\n---\n\n**Desenvolvido com ❤️ pela equipe de Engenharia de Software - UniBrasil Centro Universitário 2025**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleonardobora%2Fmisoginy-analysis-ml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleonardobora%2Fmisoginy-analysis-ml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleonardobora%2Fmisoginy-analysis-ml/lists"}