Como usar LDA para classificar documentos em tópicos predefinidos

Oct 17 2020

O LDA não é supervisionado e classifica os documentos em tópicos. Mas existe uma maneira de fazer o LDA classificar os documentos nos tópicos predefinidos (ou específicos desejados).

O link abaixo diz que precisamos de um beta personalizado antes, onde fornecemos mais pesos para algumas palavras-chave (que correspondem aos tópicos predefinidos desejados) para atingir o objetivo acima.

https://towardsdatascience.com/a-machine-learning-approach-to-automated-customer-satisfaction-surveys-946d2604e309

Não consigo descobrir como, no entanto. Alguém pode me indicar um exemplo / implementação de como usar LDA para classificar em tópicos predefinidos

Em geral, como classificamos os documentos em tópicos se não rotulamos, os métodos de agrupamento lda e geral são a única maneira? ou existem métodos semissupervisionados que podem fornecer melhores classificações?

Respostas

4 EzioBosso Oct 17 2020 at 12:20

Não está muito claro, mas acho que o que ele está fazendo é pesar palavras encontradas em tags de tópico "predefinidas" em um fórum de discussão e, em seguida, pesar essas palavras (X1000) no processo de amostragem do LDA.

Por exemplo, se eu pesquisar stats.stackexchange sob a tag "linguagem natural" e criar um vocabulário de palavra: # vezes a palavra apareceu e remover palavras irrelevantes (palavras comuns), provavelmente irei obter algo como:

$$ \begin{align} \text{nlp} &~|~ 10000 \\ \text{classify} &~|~ 9500 \\ \text{text} &~|~ 9273 \\ \text{deep} &~|~ 3000 \\ \text{modelling} &~|~ 324 \\ \text{lda} &~|~ 234 \\ \text{gibbs} &~|~ 230 \\ \end{align} $$

Alternativamente, a tag de tópico predefinida já possui palavras-chave associadas a ela (que ele usa e pesa mais). Seguindo nosso exemplo, a tag "linguagem natural" menciona palavras como: linguística, artificial, inteligência, máquina, aprendizagem. Nós pesamos essas palavras mais alto.

Então, no processo de amostragem para qualquer palavra $w_i$ com peso de tópico associado $b_{z,i}$ (Onde $z$ representa o tópico específico), nós apenas o multiplicamos por alguma constante (aqui sendo 1000), ou seja, $b_{z,i} \cdot 1000$.

Não li o artigo inteiro, mas só vejo que isso é útil se você tiver apenas algumas palavras-chave por tópico predefinido. Acho que seria melhor usar algo como word2vec, ou apenas cosign distance of words, para esta tarefa. O LDA não foi realmente projetado para ser usado quando já temos tópicos predefinidos.