Hi todos. Faz muito tempo que não escrevi meu último blog sobre os diferentes tipos de sistemas de recomendação. Desta vez, vou escrever sobre Topic Modelling.
Existem inúmeras fontes por aí onde você pode aprender o que é Topic Modelling, mas acho que a maioria delas são um pouco técnicas e requer um bom conhecimento de matemática e outras técnicas como Markov Chains. Neste artigo, vou tentar explicar a ideia por detrás da Modelação de Tópicos de uma forma muito intuitiva com um mínimo de matemática e tecnicidades. Vou escrever este artigo em duas partes. Na primeira parte, vou tentar explicar o que é modelagem temática e na segunda parte, vou fornecer um tutorial python de como fazer modelagem temática no conjunto de dados do mundo real.
Antes de começar, quero reconhecer que este artigo é fortemente inspirado pela palestra do meu professor de análise exploratória de dados. Edward McFowland, Coursera’s course on Natural Language Processing by Higher School of Economics and Jordan Boyd-Graber explanation of Gibbs sampling.
What is topic modeling?
Topic modeling is a branch of unsupervisioned natural language processing which is used to represent a text document with the help of several topics, that can best explain the underlying information in a particular document. Isto pode ser pensado em termos de clustering, mas com uma diferença. Agora, em vez de recursos numéricos, temos uma coleção de palavras que queremos agrupar de tal forma que cada grupo represente um tópico em um documento.
Por que precisamos de modelagem de tópicos?
Okay, então agora surge a questão: por que precisamos de modelagem de tópicos? Se olharmos à nossa volta, podemos ver uma enorme quantidade de dados textuais à nossa volta num formato não estruturado sob a forma de artigos noticiosos, artigos de pesquisa, posts nas redes sociais, etc. e precisamos de uma forma de compreender, organizar e rotular estes dados para tomar decisões informadas. A modelagem de tópicos é usada em várias aplicações como encontrar perguntas sobre o excesso de pilha que são semelhantes umas às outras, agregação e análise do fluxo de notícias, sistemas de recomendação, etc. Todos estes focam em encontrar a estrutura temática oculta no texto, pois acredita-se que cada texto que escrevemos seja um tweet, post ou um artigo de pesquisa é composto de temas como esportes, física, aeroespacial etc.
Como fazer modelagem de tópicos?
Currentemente, existem muitas maneiras de fazer modelagem de tópicos, mas neste post, estaremos discutindo uma abordagem de modelagem probabilística chamada Latent Dirichlet Allocation (LDA) desenvolvida pelo Prof. David M. Blei em 2003. Esta é uma extensão da Análise Semântica Latente Probabilística (PLSA) desenvolvida em 1999 por Thomas Hoffman com uma diferença muito pequena em termos de como eles tratam a distribuição por-documento. Então vamos saltar diretamente para como a LDA funciona.
Latent Dirichlet Allocation
Comecemos por entender o significado de cada palavra no título, pois acho que ela contém tudo o que precisamos saber para entender como a LDA funciona.
Latent: Isto refere-se a tudo o que não sabemos a priori e que está escondido nos dados. Aqui, os temas ou tópicos que compõem o documento são desconhecidos, mas acredita-se que estejam presentes à medida que o texto é gerado com base nesses tópicos.
Dirichlet: É uma ‘distribuição de distribuições’. Sim, você o leu corretamente. Mas o que isso significa? Vamos pensar nisto com a ajuda de um exemplo. Vamos supor que existe uma máquina que produz dados e podemos controlar se a máquina sempre produzirá um dado com o mesmo peso para todos os lados, ou se haverá algum viés para alguns lados. Portanto, a máquina que produz os dados é uma distribuição, pois está produzindo dados de diferentes tipos. Além disso, sabemos que os dados em si são uma distribuição, pois obtemos múltiplos valores quando lançamos um dado. Isto é o que significa ser uma distribuição de distribuições e isto é o que é o Dirichlet. Aqui, no contexto da modelagem de tópicos, o Dirichlet é a distribuição de tópicos em documentos e distribuição de palavras no tópico. Pode não estar muito claro neste ponto de tempo, mas está bem, já que vamos olhar para ele com mais detalhes daqui a pouco.
Allocation: Isto significa que assim que tivermos o Dirichlet, iremos alocar tópicos aos documentos e palavras do documento aos tópicos.
É isso. Isto é o que a LDA é em poucas palavras. Agora vamos entender como isso funciona na modelagem de tópicos.
Apenas para recapitular, o que a LDA diz é que cada palavra em cada documento vem de um tópico e o tópico é selecionado a partir de uma distribuição por-documento sobre tópicos. Então temos duas matrizes:
1. ϴtd = P(t|d) que é a distribuição de probabilidade de tópicos em documentos
2. Фwt = P(w|t) que é a distribuição de probabilidade de palavras em tópicos
E, podemos dizer que a probabilidade de uma palavra em um documento i.e. P(w|d) é igual a: