O que é o projeto bella e edward
É um pacote open source focado em automação de processamento de dados textuais, mais especificamente na separação e classificação de entradas duplicadas em fluxos de trabalho de NLP. O nome vem dos dois desenvolvedores que criaram a primeira versão estável em 2022. A ideia central é simples: você passa um dataset bruto e ele devolve os pares potencialmente duplicados organizados por nível de similaridade, com um modelo leve de embeddings que roda localmente sem depender de APIs pagas.
Como instalar e configurar o bella e edward
A instalação é padrão de qualquer pacote Python. Você vai precisar de uma versão 3.10 ou superior, então verifique primeiro. Rode pip install bella-edward na sua virtualenv e aguarde a instalação das dependências, que incluem transformers e sentence-transformers. O download do modelo base demora cerca de 400 MB na primeira execução, então reserve espaço. Configure o ambiente passando a variável de ambiente BE_DATA_DIR apontando para o diretório onde os dados temporários serão armazenados, caso contrário ele usa o /tmp e pode estourar a memória em datasets maiores que 50 GB. O pipeline funciona em três etapas. A primeira é a limpeza, onde você define regras básicas de normalização como remover acentos, padronizar maiúsculas e minúsculas e cortar whitespace extras. A segunda etapa é a geração de embeddings usando o modelo multi-lingual que já vem incluso. A terceira é a clustering com uma tolerância configurável, que por padrão vem em 0.85 de similaridade coseno.
Configuração prática e meu exemplo com problemas reais
Comecei a usar isso há uns seis meses num projeto de curadoria de reviews de produtos. Tinha cerca de 200 mil entradas vindas de três fontes diferentes, com problemas óbvios de duplicação mas também casos bem chatos que eu não via de cara. O problema que mais me custou tempo foi quando o algoritmo agrupou três reviews completamente diferentes só porque todas falavam do mesmo produto com vocabulário sobreposto. A similaridade coseno ficou em 0.82, acima do threshold mínimo que eu havia definido para evitar falsos positivos, então todos viraram um cluster só. A solução foi criar um filtro pós-processamento que compara o hash de conteúdo entre os itens de cada cluster. Se dois textos têm similaridade alta mas hashes diferentes, significa que o vocabulário é similar mas o conteúdo é distinto. Esse filtro reduziu os falsos positivos do meu dataset de 18% para cerca de 3%. Também adicionei um peso maior para termos técnicos do produto na etapa de embedding, usando um weighted tokenizer customizado. O código ficou com cerca de 40 linhas extras e levou uma tarde inteira para ajustar direito, mas fez diferença.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um detalhe que ninguém menciona nas documentações oficiais: o modelo de embeddings nativo performa mal com textos curtos abaixo de 20 caracteres. Reviews de uma linha, títulos de notícias, frases soltas — todos viram ruído. A recomendação do repositório no GitHub sugere filtrar textos menores que 50 tokens antes de passar pelo pipeline, e isso realmente funciona. No meu caso, apliquei esse filtro e perdi 7% dos dados, mas a qualidade geral do clustering melhorou consideravelmente.
Pontas soltas e limitações que você precisa saber
Primeiro, o bella e edward não tem suporte nativo a idiomas além de inglês, espanhol e português. Tem um plugin community para francês e alemão, mas ele não é mantido ativamente e às vezes quebra depois de atualizações do core. Segundo, a escalabilidade é limitada. O clustering roda em memória RAM, o que significa que datasets acima de 500 mil documentos vão travar máquinas com menos de 16 GB. Terceiro, a interface de configuração é minimalista demais. Não existe um painel gráfico, tudo é feito via arquivos YAML ou argumentos de linha de comando, o que pode ser frustrante para equipes que não têm familiaridade com o formato. Se o seu caso envolve muitos idiomas diferentes ou volume muito alto, considere alternar para o Dedupe.io, que é mais lento na primeira configuração mas escala melhor em clusters distribuídos. Para uso pessoal ou de pequenas equipes, o bella e edward continua sendo uma das opções mais diretas que existem no mercado. O tempo médio de processamento para 100 mil documentos em uma máquina com 16 GB de RAM e um processador Ryzen 7 é de cerca de 25 minutos, o que é aceitável para a maioria dos fluxos de trabalho diários.
O repositório principal está em github.com/bella-edward/bella-edward. A instalação pelo pip instala automaticamente a versão mais recente estável, mas se você precisar de correções de bugs mais recentes, vale clonar o repositório e instalar no modo editável. O readme tem exemplos completos que cobrem desde casos básicos até cenários mais avançados com filtros personalizados.