Machine Learning · Insper · E3.3

BERTopic

Abordagem fundamental

E se um tópico for um grupo de documentos?

O caminho desta parte

  1. Por que embeddingsdocumentos curtos compartilham poucas palavras
  2. Embeddings e redução384 números por post, depois UMAP para 5
  3. AgruparHDBSCAN; os outliers são o tópico −1
  4. Descreverc-TF-IDF, o grupo como documento
  5. Em uma chamadaa classe BERTopic, a mesma partição
Cada etapa responde a uma pergunta: por que contagens de palavras não bastam? → onde significado vira distância? → onde estão as regiões densas? → que palavras dão nome a uma região? → a biblioteca faz o mesmo?
Etapa 1 · por que contagens de palavras não bastam?

Documentos curtos: onde as contagens de palavras acabam

ARI contra o número de palavras mantidas por post: abaixo de umas 40 palavras, NMF e LDA ficam perto de zero

A LDA (alocação latente de Dirichlet) e a NMF (fatoração de matrizes não negativas) só veem contagens de palavras. Com as 20 primeiras palavras de cada post, ARI (índice de Rand ajustado) com os fóruns: NMF 0,12, LDA 0,03.

Preveja. "I want my money back" / "please process a refund": cosseno dos vetores TF-IDF?

Significado como distância

cosseno na TF-IDF

0,00
nenhuma palavra em comum

cosseno dos embeddings

0,60
um sentence embedding não precisa de palavras em comum

Nos posts de 20 palavras, um k-means simples nos embeddings chega a ARI 0,582, cinco vezes o da NMF.

A ideia do BERTopic: primeiro pôr os documentos onde significado é distância, depois procurar grupos.
Etapa 2 · onde significado vira distância?

BERTopic: quatro passos, cada um uma aula que você conhece

Passo 1 — embeddings

Cada post → 384 números com o all-MiniLM-L6-v2 (um sentence-transformer pequeno, em inglês, rápido numa CPU).

Preveja. Para cada post, tome os 10 posts mais próximos. Que fração vem do mesmo fórum, com TF-IDF e com embeddings?

TF-IDF

83,2%

embeddings

94,2%

Passo 2 — reduzir com UMAP

  • Em 384 dimensões as distâncias se concentram: o agrupamento por densidade sofre.
  • UMAP (uniform manifold approximation and projection) para 5 dimensões, não 2: o objetivo é agrupar, não desenhar.
  • min_dist=0.0 junta bem os pontos parecidos, o que um agrupador por densidade quer.
Vizinhos do mesmo fórum depois do UMAP: 95,4%. As vizinhanças sobreviveram. O UMAP é estocástico: fixe o random_state.
Etapa 3 · onde estão as regiões densas?

Passo 3 — agrupar com HDBSCAN

HDBSCAN (agrupamento hierárquico por densidade) acha regiões densas de qualquer forma; um botão principal, min_cluster_size=10.

Preveja. Ninguém fixa o número de grupos. Quantos haverá? Todo post vai ganhar um?

grupos

24
do min_cluster_size e da densidade

outliers (−1)

431
20% dos posts

puros

21 / 24
≥ 90% de um só fórum

Hóquei (516) e religião (554) viram um grupo grande cada; computação gráfica e espaço se partem em muitos pequenos (formatos de arquivo, placas de vídeo, a Lua…).

Simulador: min_cluster_size, um valor por vez

Preveja. Suba o min_cluster_size de 2 a 40: o número de tópicos cai aos poucos?

Etapa 4 · que palavras dão nome a uma região?

Passo 4 — descrever cada grupo com c-TF-IDF

Junte os documentos de um grupo num pseudodocumento e aplique um TF-IDF por classe (c-TF-IDF):

\[ \text{c-TF-IDF}(t, c) = \frac{n_{t,c}}{\sum_{t'} n_{t',c}} \times \log\!\Big(1 + \frac{A}{f_t}\Big) \]
  • \(n_{t,c}\): contagem da palavra \(t\) no grupo \(c\); o denominador: todas as palavras de \(c\)
  • \(f_t\): contagem de \(t\) em todos os grupos · \(A\): média de palavras por grupo
É o TF-IDF com o grupo no papel do documento: uma palavra pontua alto quando é frequente neste grupo e rara nos outros.

O c-TF-IDF à mão, passo a passo

As nove frases de tema único como três grupos. Preveja. team aparece 3 vezes e game 2, as duas só em esportes: qual ganha o peso maior, e qual a nota maior?

Etapa 5 · a biblioteca faz o mesmo?

Os quatro passos em uma chamada

Os mesmos objetos e os embeddings do passo 1 em BERTopic(...): a mesma partição (ARI 1,0), renumerada por tamanho.

tópicopostsName
−1431-1_space_jpeg_launch_image
05670_god_jesus_people_church
15201_team_game_hockey_play
2662_image_graphics_package_processing
3553_card_mode_vesa_vga
4524_moon_lunar_prize_money
5435_space_nasa_shuttle_astronaut
6416_van_het_orbit_een
A lista de stop words do inglês no vetorizador decide quais palavras podem dar nome a um tópico.

Resumo

  1. Documentos curtos compartilham poucas palavras; um sentence embedding põe perto os documentos de mesmo significado mesmo assim.
  2. Quatro passos independentes: embeddings → UMAP → HDBSCAN → c-TF-IDF.
  3. O HDBSCAN define o número de tópicos; os posts esparsos vão para o tópico −1.
  4. O c-TF-IDF dá nome a um grupo por palavras frequentes nele e raras nos outros.
Prática

Para fechar a parte fundamental

  • Por que o BERTopic reduz os embeddings para 5 dimensões e não para 2?
  • O que o tópico −1 guarda? Por que a LDA e a NMF não têm nada parecido?
  • Por que game tem peso maior que team e, mesmo assim, pontua menos em esportes?

No lab: os passos 4 a 7 e a simulação os embeddings ou o HDBSCAN? (página de visão geral). A seguir: os slides fundamentais da E3.4 Comparando os Modelos.