Guia para Iniciantes na Alocação de Dirichlet Latente(LDA)

Modelagem Tópica é um método para classificação não supervisionada de documentos, semelhante ao agrupamento em dados numéricos, que encontra alguns grupos naturais de itens (tópicos), mesmo quando não temos certeza do que estamos procurando.

Um documento pode ser parte de múltiplos tópicos, como no fuzzy clustering(clustering suave) no qual cada ponto de dados pertence a mais de um cluster.

Por que modelagem de tópicos?

A modelagem óptica fornece métodos para organizar, compreender, pesquisar e resumir automaticamente grandes arquivos eletrônicos.
Pode ajudar com o seguinte:

  • descobrir os temas escondidos na colecção.
  • classificar os documentos nos temas descobertos.
  • utilizar a classificação para organizar/summarizar/escavar os documentos.

Por exemplo, digamos que um documento pertence aos tópicos alimentação, cães e saúde. Então, se um usuário consulta “comida para cães”, ele pode achar o documento acima mencionado relevante porque ele cobre esses tópicos (entre outros tópicos). Podemos descobrir a sua relevância em relação à consulta sem sequer percorrer todo o documento.

Por isso, anotando o documento, com base nos tópicos previstos pelo método de modelagem, somos capazes de optimizar o nosso processo de pesquisa.

LDA

É um dos métodos mais populares de modelagem de tópicos. Cada documento é composto por várias palavras, e cada tópico também tem várias palavras pertencentes a ele. O objectivo da LDA é encontrar tópicos a que um documento pertence, com base nas palavras que o compõem. Muito confuso? Aqui está um exemplo para o guiar através dele.

Definição do modelo

Each document is a collection of words.

We have 5 documents each containing the words listed in front of them( ordered by frequency of occurrence).

What we want to figure out are the words in different topics, as shown in the table below. Each row in the table represents a different topic and each column a different word in the corpus. Each cell contains the probability that the word(column) belongs to the topic(row).

Each topic contains a score for all the words in the corpus.

Finding Representative Words for a Topic

  • We can sort the words with respect to their probability score.
    As x palavras principais são escolhidas a partir de cada tópico para representar o tópico. Se x = 10, vamos ordenar todas as palavras do tópico1 com base na pontuação deles e pegar as 10 palavras principais para representar o tópico.
    Este passo pode não ser sempre necessário porque se o corpus for pequeno podemos guardar todas as palavras ordenadas pela sua pontuação.
  • Alternativamente, podemos definir um limite na pontuação. Todas as palavras em um tópico com uma pontuação acima do limite podem ser armazenadas como seu representante, em ordem de suas pontuações.

Foto por Anusha Barwa em Unsplash

p>P>Vamos dizer que temos 2 tópicos que podem ser classificados como CAT_related e DOG_related. Um tópico tem probabilidades para cada palavra, portanto palavras como leite, miau e gatinho, terão uma probabilidade maior no tópico relacionado a CAT_ do que no tópico relacionado a DOG_. O tópico relacionado a DOG_related, da mesma forma, terá probabilidades altas para palavras como cachorro, casca e osso.

Se tivermos um documento contendo as seguintes frases:

“Cães gostam de mastigar ossos e buscar paus”.
“Filhotes bebem leite”.
“Ambos gostam de latir”.

Podemos facilmente dizer que pertence ao tópico relacionado a DOG_ porque contém palavras como Cães, ossos, filhotes e casca. Mesmo contendo a palavra leite que pertence ao tópico CAT_related, o documento pertence ao tópico DOG_related pois mais palavras combinam com ele.

Assumptions:

  • Cada documento é apenas uma coleção de palavras ou um “saco de palavras”. Assim, a ordem das palavras e o papel gramatical das palavras (assunto, objeto, verbos, …) não são considerados no modelo.
  • Palavras como am/is/are/of/a/the/but/… não carregam nenhuma informação sobre os “tópicos” e, portanto, podem ser eliminados dos documentos como uma etapa de pré-processamento. Na verdade, podemos eliminar palavras que ocorrem em pelo menos %80 ~ %90 dos documentos, sem perder nenhuma informação.
    Por exemplo, se nosso corpus contém apenas documentos médicos, palavras como humano, corpo, saúde, etc podem estar presentes na maioria dos documentos e, portanto, podem ser removidas, pois não adicionam nenhuma informação específica que faria o documento se destacar.
  • Sabemos de antemão quantos tópicos queremos. O ‘k’ é pré-decidido.
  • Todas as atribuições de tópicos, exceto a palavra corrente em questão, estão corretas, e então atualizando a atribuição da palavra corrente usando nosso modelo de como os documentos são gerados

Como funciona o LDA?

Existem 2 partes no LDA:

  • As palavras que pertencem a um documento, que já conhecemos.
  • As palavras que pertencem a um tópico ou a probabilidade de palavras pertencentes a um tópico, que precisamos calcular.

O Algoritmo para encontrar o último

  • Vá através de cada documento e atribua aleatoriamente cada palavra do documento a um dos k tópicos (k é escolhido de antemão).
  • Para cada documento d, percorra cada palavra w e calcule :
  1. p(tópico t | documento d): a proporção de palavras no documento d que são atribuídas ao tópico t. Tenta capturar quantas palavras pertencem ao tópico t para um determinado documento d. Excluindo a palavra actual.
    Se muitas palavras de d pertencerem a t, é mais provável que a palavra w pertença a t.
    ( # palavras em d com t +alfa/ # palavras em d com qualquer tópico+ k*alfa)
  2. p(palavra w| tópico t): a proporção de atribuições ao tópico t sobre todos os documentos que vêm desta palavra w. Tenta capturar quantos documentos estão no tópico t por causa da palavra w.
    LDA representa documentos como uma mistura de tópicos. Da mesma forma, um tópico é uma mistura de palavras. If a word has high probability of being in a topic, all the documents having w will be more strongly associated with t as well. Similarly, if w is not very probable to be in t, the documents which contain the w will be having very low probability of being in t, because rest of the words in d will belong to some other topic and hence d will have a higher probability for those topic. So even if w gets added to t, it won’t be bringing many such documents to t.
  • Update the probability for the word w belonging to topic t, as
p(word w with topic t) = p(topic t | document d) * p(word w | topic t)

A layman’s example

Suppose you have various photographs(documents) with captions(words). You want to display them in a gallery so you decide to categorize the photographs on various themes(topics) based on which you will create different sections in your gallery.

Photo de Soragrit Wongsa em Unsplash

Você decide criar k=2 seções no seu álbum – natureza e cidade. Naturalmente, a classificação não é tão clara já que algumas fotografias com a cidade têm árvores e flores enquanto as da natureza podem ter alguns edifícios nela. Você, como um começo, decide atribuir as fotografias que só têm natureza ou elementos de cidade nas suas respectivas categorias, enquanto que as restantes são atribuídas aleatoriamente.

Você nota que muitas fotografias na natureza têm a palavra árvore nas suas legendas. Então você concluiu que a palavra árvore e a natureza do tópico devem estar intimamente relacionadas.

P>Próximo, você escolhe a palavra construção e verifica quantas fotografias estão na natureza porque eles têm a palavra construção em suas legendas. Você não encontra muitas e agora está menos seguro sobre a construção pertencente ao tópico natureza e associá-la mais fortemente com o tópico cidade.

Você então escolhe uma fotografia que tem a legenda “A árvore está na frente do prédio e atrás de um carro” e vê que ela está na categoria natureza atualmente.
Você então escolhe a palavra árvore, e calcula a primeira probabilidade p(tópico t | documento d): outras palavras na legenda são edifício e carro, a maioria das fotografias com legendas com edifício ou carro estão na cidade, então você obtém uma probabilidade baixa.
Agora a segunda probabilidade p(palavra w| tópico t): nós sabemos que muitas fotografias na natureza têm a palavra árvores nela. Então você obtém uma pontuação alta aqui.
Você atualiza a probabilidade de árvore pertencente à natureza multiplicando as duas. Você obtém um valor menor do que antes para árvore na natureza do tópico porque agora você já viu essa árvore e palavras como construção/carro no mesmo título, implicando que árvores também podem ser encontradas em cidades.
Pelo mesmo motivo, quando você atualizar a probabilidade de árvore pertencente ao tópico cidade, você notará que ela será maior do que era antes.

Após múltiplas iterações sobre todas as fotografias e para cada tópico, você terá pontuações precisas para cada palavra em relação a cada tópico. Seus palpites continuarão melhorando e melhorando porque você vai concluir pelo contexto que palavras como edifícios, calçada, metrô aparecem juntas e, portanto, devem pertencer ao mesmo tópico, que podemos facilmente adivinhar que é cidade.
Palavras como montanhas, campos, praia que podem não aparecer juntas em muitas legendas, mas aparecem muitas vezes sem palavras da cidade e, portanto, terão notas mais altas para a natureza.
Embora palavras como árvores, flores, cães, céu terão quase a mesma probabilidade de estar em qualquer um dos dois tópicos.

Como para a fotografia, você vê que ela tem 1 palavra (com probabilidade média) da categoria natureza e 2 palavras (com alta probabilidade) da cidade, você conclui, ela pertence à cidade mais fortemente do que à natureza e por isso você decide adicioná-la na cidade.

Nota lateral

As aplicações do LDA não precisam ser restritas ao Processamento de Linguagem Natural. Eu implementei recentemente um trabalho onde usamos LDA (juntamente com uma Rede Neural) para extrair o contexto específico do cenário de uma imagem. Se você estiver interessado em aprender mais sobre isso, por favor deixe um comentário ou uma mensagem.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *