Machine Learning · Insper · E3

Modelagem de Tópicos & BERTopic

Abordagem fundamental

Dados milhares de documentos, do que eles tratam?

Uma pergunta que parece simples

  • Ninguém rotula os documentos nem lista os temas: é não supervisionado, o irmão textual do agrupamento.
  • Usos: um ano de avaliações ou de chamados de suporte, um arquivo de notícias, redes sociais, uma literatura científica.

LDA

alocação latente de Dirichlet (latent Dirichlet allocation): uma história probabilística de como as palavras são escritas

NMF

fatoração de matrizes não negativas (non-negative matrix factorization) da matriz TF-IDF (frequência do termo × frequência inversa nos documentos)

BERTopic

sentence embeddings + UMAP (uma projeção não linear) + HDBSCAN (agrupamento por densidade) + uma variante do TF-IDF

Dois corpora: 11 frases escritas à mão e 2.155 posts reais de quatro fóruns (o fórum fica escondido dos modelos, para conferi-los).

O caminho desta aula

  1. O que é um tópico?palavras que andam juntas ou documentos que andam juntos
  2. LDAalocação latente de Dirichlet: uma história de como as palavras são escritas
  3. NMFfatoração de matrizes não negativas: um documento como soma de partes
  4. BERTopicembeddings, redução, agrupamento, descrição
  5. Comparar e escolheros três lado a lado
Cada etapa responde a uma pergunta: o que procuramos nos documentos? → que história poderia ter escrito estas palavras? → uma fatoração de matriz encontra os mesmos tópicos? → e se um tópico for um grupo de documentos? → em qual modelo confiar e quando?
Etapa 1 · o que procuramos nos documentos?

O que é um tópico? Duas respostas

uma distribuição sobre palavras

"Esportes" dá probabilidade alta a team, game, goal e quase nenhuma a oven. Um documento é uma mistura: 80% esportes, 20% espaço.

LDA e também NMF, com pesos não negativos

um grupo de documentos

Cada documento pertence a um tópico ou a nenhum; as palavras do tópico são calculadas depois, para descrever o grupo.

BERTopic

O corpus escrito à mão, como contagens

docteamgamegoalrocketlaunchmoonbreadbake
011100000
300011000
600000011
911011000
1000000110

11 frases, 53 palavras mantidas, vocabulário de 33 (sem as stop words do inglês).

Três temas: esportes, espaço, culinária; as duas últimas frases os misturam.

Preveja. Um modelo de tópicos recebe só esta matriz, sem os comentários. Ele consegue achar os três temas?

Cinco páginas, duas abordagens cada

páginaum tópico éfundamentalavançada
E3.1 LDAuma distribuição sobre palavrasa história à mão, a priori, os poststópicos conhecidos recuperados; palavras de menos
E3.2 NMFuma linha de pesos ≥ 0\(X \approx WH\), contra a SVD (decomposição em valores singulares), os postsquantos tópicos: perplexidade, coerência
E3.3 BERTopicum grupo de documentostextos curtos; os quatro passos; uma chamadanomes à mão; ajustar as palavras
E3.4 Comparandoos três lado a ladoas armadilhas
O caminho passa pelos slides fundamentais da E3.1 à E3.4, em ordem, e volta aqui para o resumo e o lab.

Resumo

  1. Um tópico é uma distribuição sobre palavras (LDA, NMF) ou um grupo de documentos (BERTopic).
  2. LDA: cada posição de palavra sorteia um tópico e depois uma palavra: \(p(w \mid d) = \sum_k \theta_{d,k}\, \varphi_{k,w}\); \(\alpha\) diz quão misturado é um documento.
  3. NMF: \(X \approx WH\) sem nada negativo; cada tópico é um tema inteiro.
  4. BERTopic: embeddings → UMAP → HDBSCAN → c-TF-IDF (TF-IDF por grupo); o número de tópicos sai dos dados e os outliers são o tópico −1.
  5. Nenhum modelo vence sempre: meça contra algo que os modelos nunca viram e leia os tópicos.
o que você vêo que fazer
LDA e NMF perto do acaso em textos curtosgerar embeddings dos documentos (BERTopic)
tópicos nomeados por the, of, touma lista de stop words no vetorizador
Lab fundamental · cerca de 40 min, em duplas

Tópicos em cinco fóruns, de três jeitos: passos 1 a 7

  • Outros cinco fóruns do 20 Newsgroups: 2.613 posts, entre 495 e 551 por fórum; o fórum fica escondido dos modelos.
  • Passos 2–3: LDA e NMF. Passos 4–7: o BERTopic um passo por vez e depois em uma chamada.
  • Baixe o notebook do lab e abra no Jupyter ou no Colab; no Colab, rode antes !pip install bertopic.
  • Em cada passo, responda ao Preveja antes de rodar.
  • Simulações: mais tópicos para a NMF (passo 3) e os embeddings ou o HDBSCAN? (passo 6).

Ritmo: passos 1 a 3 e a primeira simulação em 15 min; passos 4 e 5 em 10 min; passos 6 e 7 e a segunda simulação em 15 min.