Machine Learning · Insper · E3
Modelagem de Tópicos & BERTopic
Abordagem avançada
Dá para confiar nos tópicos?
O caminho desta parte
- Por dentro da LDAtópicos conhecidos recuperados; palavras de menos
- Quantos tópicosperplexidade, coerência pela NPMI, a escolha do k
- Dar nome e renomearo c-TF-IDF dos posts; palavras ajustadas
- As armadilhasstop words, outliers, degraus, sementes, língua
- 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.