Desenvolvido por Pablo Murad
Algoritmo avançado de detecção de similaridade de conteúdo que combina análise multi-dimensional para identificar documentos relacionados com alta precisão.
O AlgoSim é um algoritmo proprietário desenvolvido por Pablo Murad para detectar similaridade entre documentos de texto, especialmente útil para consolidação de conteúdo duplicado ou relacionado. O algoritmo combina análise de palavras-chave, temas, estrutura e tamanho para calcular uma pontuação de similaridade precisa e confiável.
A similaridade de palavras-chave utiliza a métrica de Jaccard com um bonus para palavras raras:
J(A,B) = |A ∩ B| / |A ∪ B|
Onde:
AeBsão conjuntos de palavras-chave dos documentos|A ∩ B|é a interseção (palavras em comum)|A ∪ B|é a união (todas as palavras únicas)
Bonus de Raridade:
R_bonus = Σ(min(len(kw), 10) / 10) para kw ∈ (A ∩ B)
Similaridade Final:
S_keywords = min(J(A,B) + R_bonus, 1.0)
A similaridade de temas utiliza a similaridade de cosseno entre vetores de temas:
cos(θ) = (A · B) / (||A|| × ||B||)
Onde:
A · Bé o produto escalar dos vetores de temas||A||e||B||são as normas dos vetores
Implementação:
dot_product = Σ(A[i] × B[i])
norm_A = √(Σ(A[i]²))
norm_B = √(Σ(B[i]²))
S_themes = dot_product / (norm_A × norm_B)
A similaridade estrutural compara elementos de formatação:
S_structure = 1 - (Σ|diff_i| / |elements|)
Onde:
diff_i = |count_i_A - count_i_B| / max(count_i_A, count_i_B, 1)elementsinclui: headers, listas, links, imagens, blocos de código, etc.
A similaridade de tamanho considera a proporção entre documentos:
size_ratio = min(len_A, len_B) / max(len_A, len_B)
S_size = size_ratio^0.5
O algoritmo combina todas as métricas com pesos específicos:
S_final = (S_keywords × 0.4) + (S_themes × 0.6) + (S_structure × 0.15) + (S_size × 0.05)
Penalização por Poucas Palavras-chave:
if S_final > 0.7 and |A ∩ B| < 3:
S_final *= 0.5
Penalização por Diferença de Tamanho:
if size_ratio < 0.3:
S_final *= 0.6
- Limpeza de cabeçalhos: Remove elementos comuns que podem causar falsos positivos
- Normalização: Converte texto para análise consistente
- Tokenização: Divide o conteúdo em palavras e frases relevantes
- Identifica termos técnicos e específicos do domínio (50+ palavras)
- Calcula sobreposição de vocabulário entre documentos
- Pondera palavras raras mais do que palavras comuns
- Detecta 10 categorias temáticas: adult, sports, games, music, books, news, education, technology, business, health
- Compara distribuição de temas entre documentos
- Aplica thresholds específicos por categoria
- Compara organização do conteúdo (títulos, seções, listas)
- Identifica padrões de formatação similares
- Detecta estrutura de documentos
similarity = (keyword_similarity * 0.4) + (theme_similarity * 0.6) +
(structure_similarity * 0.15) + (size_similarity * 0.05)- 🎯 Multi-dimensional: Combina múltiplas métricas de similaridade
- 🔧 Adaptativo: Ajusta thresholds baseado no tipo de conteúdo
- 🛡️ Robusto: Resistente a falsos positivos através de penalizações
- ⚡ Escalável: Eficiente para grandes volumes de documentos
- 🌐 Multi-linguagem: Implementado em Python, PHP e Node.js
- 📚 Consolidação de Documentação: Mesclar versões similares de guias
- 🔍 Detecção de Duplicatas: Identificar conteúdo repetido
- 📂 Categorização Automática: Agrupar documentos por tema
- 🌍 Tradução Inteligente: Consolidar documentos em diferentes idiomas
- 📁 Arquivo Digital: Organizar grandes coleções de documentos
- Python - Implementação completa e robusta
- PHP - Versão otimizada para web
- Node.js - Implementação assíncrona para APIs
- 🟢 Alta similaridade: > 0.8 (consolidação automática)
- 🟡 Similaridade média: 0.5 - 0.8 (revisão manual)
- 🔴 Baixa similaridade: < 0.5 (manter separado)
- Use cache para documentos já processados
- Implemente processamento em lote para grandes volumes
- Ajuste thresholds baseado no domínio específico
- Monitore falsos positivos e negativos
- Algoritmo O(n²) para comparação completa
- Use indexação para otimizar buscas
- Implemente paralelização para grandes datasets
- Considere sampling para análise inicial
- Requer pré-definição de palavras-chave e temas
- Sensível à qualidade do pré-processamento
- Pode ter dificuldade com documentos muito curtos
- Performance degrada com muitos documentos
- 🤖 Machine Learning: Detecção automática de temas
- 🌐 Multi-idioma: Suporte a múltiplos idiomas simultâneos
- 🧠 Análise Semântica: Usando embeddings
- 🖥️ Interface Web: Configuração interativa
Pablo Murad
Desenvolvedor e pesquisador em algoritmos de similaridade de conteúdo.
- GitHub: @runawaydevil
- LinkedIn: Pablo Murad
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Contribuições são bem-vindas! Por favor, abra uma issue ou pull request para melhorias.