Machine Learning · Insper · E3

Modelagem de Tópicos & BERTopic

Abordagem avançada

Dá para confiar nos tópicos?

O caminho desta parte

  1. Por dentro da LDAtópicos conhecidos recuperados; palavras de menos
  2. Quantos tópicosperplexidade, coerência pela NPMI, a escolha do k
  3. Dar nome e renomearo c-TF-IDF dos posts; palavras ajustadas
  4. As armadilhasstop words, outliers, degraus, sementes, língua
  5. Usar e conferirbusca, posts novos, uma comparação justa, outliers
Cada etapa responde a uma pergunta: o ajuste encontra os tópicos verdadeiros? → quantos tópicos, e quem os julga? → de onde vêm os nomes? → que erros fazem um modelo de tópicos mentir? → quanto vale um modelo ajustado?

O que cada página acrescenta

E3.1 LDA (alocação latente de Dirichlet)

um corpus escrito pela própria história: os tópicos voltam com erro de 0,01; em 53 palavras, 1 semente em 20 os acha

E3.2 NMF (fatoração de matrizes não negativas)

a perplexidade só sobe com \(k\); coerência pela NPMI (informação mútua pontual normalizada), à mão; ler os tópicos

E3.3 BERTopic

os 24 nomes reproduzidos à mão; update_topics renomeia sem reagrupar

E3.4 Comparando

stop words, outliers, um degrau no min_cluster_size, um milionésimo de ruído, a língua

Etapa 5 · quanto vale um modelo ajustado?

Passo 8: um modelo de tópicos como ferramenta

  • find_topics('car engine'): busca os tópicos pelo significado, com o embedding da consulta.
  • get_representative_docs(t): alguns posts típicos de um tópico.
  • transform(new_docs): embeddings, redução e grupos para documentos novos com o modelo ajustado, sem reajuste.
Preveja. A parte de teste dos mesmos cinco fóruns, 1.729 posts que o modelo nunca viu: os tópicos concordam com os fóruns quase tão bem quanto nos posts de treino?

Passo 9: a comparação é justa?

ARI (índice de Rand ajustado) com os fóruns: 1 = a mesma partição, 0 = acaso.

LDA

5 tópicos, põe todo post em algum

NMF

5 tópicos, põe todo post em algum

BERTopic

7 tópicos, 59 outliers deixados de fora

Preveja. Pontue a LDA e a NMF só nos posts que o BERTopic manteve. Elas alcançam o BERTopic quando os posts difíceis saem?

Passo 10: o que fazer com os outliers

  • Os 59 outliers vêm sobretudo de medicina e do Oriente Médio: conversas publicadas em vários grupos, respostas discutindo respostas.
  • reduce_outliers(strategy='embeddings') dá a cada um o tópico do centroide mais próximo; update_topics recalcula as palavras.
Preveja. Com todo post num tópico, a concordância com os fóruns (ARI) sobe ou desce? E a pureza dos tópicos (homogeneidade)?
Lab avançado · cerca de 30 min, em duplas

Usar, comparar e limpar os tópicos: passos 8 a 10

  • O mesmo notebook, na mesma sessão: os passos usam docs, forum, E, topic_model dos passos 1 a 7.
  • Passo 8: busca, posts típicos, frases novas. Passo 9: os três modelos contra os fóruns; reduce_topics. Passo 10: os outliers.
  • Simulações: os posts da semana que vem (passo 8) e uma comparação justa (passo 9).

Ritmo: passo 8 e a primeira simulação em 12 min; passo 9 e a segunda simulação em 10 min; passo 10 em 8 min.