Inteligência artificial, sem ruído.
Tutoriais6 min

Classificação de texto multilíngue com Scikit-LLM e embeddings multilíngues

Classifique texto em vários idiomas com um único modelo: embeddings multilíngues BGE-M3 + regressão logística via Scikit-LLM.

Classificação de texto multilíngue com Scikit-LLM e embeddings multilíngues

Construir modelos de aprendizado de máquina para um público global — como classificadores de texto baseados em dados multilíngues — tradicionalmente exigia treinar um modelo separado para cada idioma. O processo se tornava rapidamente ingerenciável. O avanço dos modelos de linguagem mudou esse cenário: com embeddings multilíngues, textos em diferentes idiomas são mapeados para um espaço vetorial comum, e basta treinar um classificador leve por cima.

O que são embeddings multilíngues e por que eliminam modelos por idioma

Embeddings são representações numéricas de texto. Um modelo de embeddings multilíngue mapeia textos de idiomas diferentes para o mesmo espaço vetorial, de modo que frases com significado semelhante ficam próximas, independentemente do idioma. Com esses embeddings “sem barreiras”, você treina um único classificador que funciona para todos os idiomas do seu conjunto de dados — em vez de manter um pipeline por idioma.

Prós e contras

  • ✅ Um modelo para vários idiomas: elimina a manutenção de N classificadores separados.
  • ✅ Setup gratuito e local: Ollama + BGE-M3 rodam na sua máquina, sem chamadas a APIs pagas.
  • ✅ Classificador leve: regressão logística sobre embeddings é rápida de treinar e barata em produção.
  • ✅ Transferência entre idiomas: o espaço vetorial comum permite generalizar para idiomas vistos nos embeddings.
  • ⚠️ Qualidade depende do modelo de embeddings: idiomas com pouca representação no treino do BGE-M3 terão pior desempenho.
  • ⚠️ Necessita de infraestrutura local: rodar o modelo de embeddings exige uma máquina razoável ou o Ollama rodando.
  • ⚠️ Não é o estado da arte absoluto: um fine-tune de um modelo maior por idioma pode superar em casos específicos.

Requisitos

ComponenteMínimoRecomendadoIdeal
Hardware8 GB de RAM16 GB de RAM, CPU modernaGPU para gerar embeddings mais rápido
SoftwarePython 3.10+Ollama + Scikit-LLM + scikit-learnAmbiente isolado + datasets
Modelo de embeddingsBGE-M3 via OllamaBGE-M3 (multilíngue)Versão quantizada para velocidade
Conhecimento prévioPython básicoNoções de ML supervisionadoFamiliaridade com scikit-learn
Tempo estimado45 minutos1–2 horasMeio dia para um pipeline completo
Requisitos para classificação de texto multilíngue.

Passo a passo

1. Instale as dependências Python

O primeiro passo é instalar o Scikit-LLM, que integra modelos de linguagem ao ecossistema do scikit-learn, e o pacote datasets para carregar um conjunto de dados real de avaliações. A instalação é feita com pip; a versão do datasets é fixada para garantir reprodutibilidade:

pip install scikit-llm "datasets==2.19.1" -q

2. Prepare o ambiente (Colab e dependências de sistema)

Se você estiver no Google Colab, é comum precisar instalar uma dependência de sistema antes. O comando abaixo resolve a ausência do utilitário zstd, necessário para alguns formatos compactados de datasets:

apt-get update -qq && apt-get install -y -qq zstd

3. Instale o Ollama para rodar o modelo localmente

O Ollama é a ferramenta que serve modelos de linguagem localmente. O BGE-M3 — um modelo de embeddings multilíngue de código aberto — é executado por meio dele, permitindo gerar embeddings sem depender de APIs externas:

curl -fsSL https://ollama.com/install.sh | sh

Após a instalação, você baixa e serve o modelo BGE-M3 com o Ollama para que o Scikit-LLM consiga acessá-lo como um gerador de embeddings.

4. Gere embeddings multilíngues

Com o BGE-M3 ativo, você transforma cada texto do conjunto de dados em um vetor. O ponto crucial é que textos em português, inglês, espanhol ou qualquer outro idioma suportado são projetados no mesmo espaço vetorial — por isso um único classificador serve para todos.

5. Treine um classificador leve

Sobre os embeddings, treina-se uma regressão logística com o scikit-learn. Como os embeddings já capturam a semântica do texto, um classificador simples é suficiente para obter bons resultados, sem a necessidade de treinar uma rede neural do zero para cada idioma.

6. Avalie e valide

Para confirmar que o pipeline funcionou, divida o conjunto em treino e teste e meça métricas como acurácia e F1-score por idioma. Isso revela se o modelo tem desempenho consistente entre os idiomas ou se algum idioma específico está piorando a média.

Casos de uso reais

  • Análise de avaliações de produtos: classificar avaliações de e-commerce em vários idiomas com um único modelo.
  • Triagem de tickets de suporte: rotear solicitações por categoria sem separar por idioma do cliente.
  • Moderação de conteúdo: detectar conteúdo inadequado em plataformas multilíngues.
  • Classificação de notícias: agrupar manchetes internacionais por tema sem traduzir.

Troubleshooting: erros comuns

  • ❌ Ollama não encontrado após instalar → Causa: PATH não atualizado na sessão atual. Solução: abra um novo terminal ou adicione o diretório de instalação ao PATH.
  • ❌ Erro ao carregar o dataset → Causa: ausência de zstd. Solução: instale o utilitário (etapa 2) e recarregue.
  • ❌ Geração de embeddings muito lenta → Causa: execução apenas em CPU. Solução: use uma máquina com GPU ou reduza o tamanho do lote.
  • ❌ F1-score baixo em um idioma específico → Causa: sub-representação desse idioma no modelo de embeddings. Solução: avalie o BGE-M3 para o seu par de idiomas ou considere um modelo alternativo.
  • ❌ Erro de conexão com o Ollama → Causa: servidor do Ollama não está rodando. Solução: inicie o serviço antes de gerar embeddings.

Perguntas frequentes

Preciso de GPU? Não. O BGE-M3 roda em CPU, mas uma GPU acelera consideravelmente a geração de embeddings.

Posso usar outro modelo de embeddings? Sim. O padrão funciona com qualquer modelo de embeddings multilíngue; o BGE-M3 é a escolha do guia por ser aberto e forte em múltiplos idiomas.

Por que regressão logística e não uma rede neural? Porque os embeddings já destilam a semântica; um classificador linear é simples, rápido e suficiente na maioria dos casos.

Isso funciona para idiomas que o BGE-M3 não conhece bem? Com qualidade reduzida. Idiomas fora do treino do modelo terão embeddings piores e, consequentemente, pior classificação.

É necessário treinar um modelo por idioma? Não — essa é exatamente a vantagem da abordagem: um único classificador serve para todos os idiomas do conjunto.

O que vem pela frente

À medida que os modelos de embeddings multilíngues evoluem e o custo de inferência local cai, o padrão “embeddings + classificador leve” tende a se tornar o default para tarefas de classificação em escala global. A barreira de idioma, que historicamente multiplicava o esforço de ML, está se dissolvendo em um único espaço vetorial — e o Scikit-LLM coloca essa capacidade ao alcance de quem já conhece scikit-learn.



Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.