Machine Learning · Insper · E3.4

Comparando os Modelos

Abordagem avançada

As armadilhas que pegam a maioria dos projetos de modelagem de tópicos

O caminho desta parte

  1. Stop wordspalavras-lixo e tópicos-lixo
  2. Outliersreatribuí-los é uma troca
  3. Granularidadeum degrau, não um botão giratório
  4. Reprodutibilidadeum milionésimo de ruído, 3 tópicos
  5. Línguaum modelo para a língua do corpus
Cada etapa responde a uma pergunta: que palavras não dão nome a nada? → o que fazer com documentos que não pertencem a lugar nenhum? → como o número de tópicos se mexe? → os tópicos voltam amanhã? → o modelo fala a língua do corpus?
Etapa 1 · que palavras não dão nome a nada?

Armadilha: stop words na representação

  • Sem lista, o BERTopic nomeia tópicos por the, of, to; mesmo com a lista do inglês, a LDA (alocação latente de Dirichlet) manteve don, think, like, just.
  • Uma lista na língua errada não ajuda: o tópico 6 aqui é van, het, een, de um punhado de posts em holandês.
  • Tópicos-lixo clássicos: assinaturas, rodapés de e-mail, modelos de listas de discussão: texto repetido palavra por palavra forma grupos muito densos.
As palavras que nomeiam um tópico dependem do vetorizador: corrija a lista e depois chame update_topics.
Etapa 2 · o que fazer com documentos que não pertencem a lugar nenhum?

Armadilha: outliers demais

431 posts (20%) no tópico −1. O reduce_outliers dá a cada um o tópico mais próximo, pelo c-TF-IDF (TF-IDF por grupo) ou pelo embedding.

Preveja. Medida em todos os posts, a homogeneidade fica em 0,927?
estratégiaoutliershomogeneidade, todos os posts
c-tf-idf00,822
embeddings00,882
Os outliers eram os posts ambíguos: forçá-los para dentro deixa os tópicos menos puros. Uma troca, não uma correção grátis; o threshold mantém de fora os menos parecidos.
Etapa 3 · como o número de tópicos se mexe?

Armadilha: a granularidade é um degrau, não um botão giratório

Preveja. min_cluster_size de 10 para 15: alguns tópicos a menos ou muitos?
min_cluster_sizetópicosoutliers
59628%
102420%
1550%
2530%

A regra de "excesso de massa" do HDBSCAN passa a preferir os grupos-pais grandes. Varra alguns valores e leia os tópicos; para fundir sem reagrupar, reduce_topics.

Etapa 4 · os tópicos voltam amanhã?

Armadilha: reprodutibilidade

Some aos embeddings um ruído de cerca de um milionésimo (o tamanho das diferenças entre CPU e GPU) e mantenha todas as sementes:

ruído, semente 024 tópicos, ARI com o original 0,908
ruído, semente 124 tópicos, ARI 0,910
ruído, semente 23 tópicos, ARI 0,514

ARI: índice de Rand ajustado (1 = mesma partição) · CPU, GPU: processadores central e gráfico.

min_cluster_size=10 está na beira do degrau. Fixar sementes torna uma rodada repetível, não verdadeira: relate tópicos que sobrevivem a sementes e a pequenas perturbações e salve o modelo ajustado.
Etapa 5 · o modelo fala a língua do corpus?

Armadilha: a língua do modelo de embeddings

  • O all-MiniLM-L6-v2 foi treinado em inglês.
  • Para corpora em português ou misturados: um modelo multilíngue como o paraphrase-multilingual-MiniLM-L12-v2 ou BERTopic(language='multilingual').
  • E uma lista de stop words em português no vetorizador: os nomes vêm dela, não dos embeddings.
Prática · para casa

Sua vez (avançado)

  • Um limiar para os outliers: reduce_outliers(..., threshold=0.3). Quantos continuam outliers?
  • O degrau, em passos menores: cada min_cluster_size de 10 a 15.
  • Longe do degrau: o experimento de ruído com min_cluster_size=15.

A seguir: o lab avançado na página de visão geral (passos 8 a 10).