PNL com R parte 1: modelagem de tópicos para identificar tópicos em resenhas de restaurantes

(Jurriaan Nagelkerke) ( 13 de novembro de 2020)

Esta história foi escrita por e . É parte de nossa PNL com R série ( Processamento de linguagem natural para fins preditivos com R ) onde usamos Modelagem de Tópicos, Embeddings de Palavras, Transformadores e BERT.

Em uma sequência de artigos, comparamos diferentes técnicas de PNL para mostrar a você como obtemos informações valiosas de textos não estruturados. Há cerca de um ano, coletamos avaliações sobre restaurantes holandeses. Estávamos nos perguntando se “a sabedoria da multidão” – comentários dos visitantes do restaurante – poderia ser usada para prever quais restaurantes têm maior probabilidade de receber uma nova estrela Michelin. Leia esta postagem para ver como funcionou. Usamos a modelagem de tópicos como nossa principal ferramenta para extrair informações dos textos de revisão e combinamos isso com técnicas de modelagem preditiva para terminar com nossas previsões.

Recebemos muita atenção com nossas previsões e também questionamentos sobre como fizemos a parte de análise de texto. Para responder a essas perguntas, explicaremos nossa abordagem com mais detalhes nos próximos artigos. Mas não paramos de explorar as técnicas de PNL depois de nossa publicação e também gostamos de compartilhar ideias ao adicionar novas técnicas de PNL. Mais especificamente, usaremos dois tipos de embeddings de palavras – um modelo Word2Vec clássico e um modelo de embedding GLoVe – usaremos a aprendizagem por transferência com embeddings de palavras pré-treinadas e usaremos BERT . Comparamos o valor agregado dessas técnicas avançadas de PNL ao nosso modelo de tópico de linha de base no mesmo conjunto de dados. Ao mostrar o que fizemos e como o fizemos, esperamos orientar outras pessoas que desejam usar dados textuais em seus próprios esforços de ciência de dados.

Em um (artigo anterior), mostramos como preparou nossos dados para serem usados ​​por várias técnicas de PNL. Aqui, começamos nossa série de artigos sobre técnicas de PNL apresentando a Modelagem de tópicos e mostramos como identificar tópicos, visualizar o modelo de tópicos resultados. Em um (artigo posterior), mostramos como usar os resultados do modelo de tópico em um modelo preditivo.

O que é modelagem de tópico?

Para descobrir os tópicos que críticos de restaurantes escrevem sobre em suas avaliações de restaurantes, usamos Topic Modeling. Mas o que é um modelo de tópico? No aprendizado de máquina e no processamento de linguagem natural, um modelo de tópico é um tipo de modelo estatístico que pode ser usado para descobrir os tópicos abstratos que ocorrem em uma coleção de documentos. Existem vários algoritmos para extrair tópicos de uma coleção de textos, mas a Alocação de Dirichlet latente é um dos algoritmos mais populares porque é eficiente e resulta em tópicos altamente interpretáveis. A interpretabilidade dos tópicos é uma característica importante de um modelo de tópico, uma vez que não queremos apenas encontrar agrupamentos de palavras estatisticamente relevantes, também queremos ser capazes de rotular os tópicos identificados com um nome de tópico com o qual outras pessoas possam se relacionar. Como tal, a modelagem de tópicos tem algumas semelhanças com técnicas de agrupamento como KMeans, onde a interpretação também é tão importante quanto as métricas estatísticas para determinar o que é uma “boa” solução. Como funciona a modelagem de tópicos / LDA, é visualizado por Blei como:

Como mostra a figura:

  • Cada o tópico é uma distribuição por palavras
  • Cada documento é uma distribuição sobre tópicos

Então, depois que terminarmos de modelar os tópicos de nossas revisões:

  • devemos saber quais são os tópicos ou assuntos sobre os quais os revisores escrevem suas críticas sobre restaurantes,
  • sabemos quais símbolos ou palavras são mais importantes nesses tópicos, e
  • podemos dizer para cada crítica individual até que ponto se trata dos tópicos identificados e deste pode ser uma mistura – 80\% sobre o tópico X e 20\% sobre o tópico Y .

Etapa 0: Configurando nosso contexto

Primeiro , configuramos nosso ambiente de pasta de trabalho com os pacotes necessários para realizar a modelagem de tópicos.

Em nosso (blog em prepar dados textuais) já introduzimos brevemente tidyverse e tidytext.Aqui, adicionamos alguns outros pacotes à lista:

  • topicmodels é um pacote para estimar modelos de tópico com LDA e compilações sobre estruturas de dados criadas com o pacote tm
  • tm é um pacote genérico poderoso com todos os tipos de funcionalidade de mineração de texto, entre as quais a criação de documentos matrizes de termos, que precisamos para modelagem de tópico
  • ldavis é um ótimo pacote para visualizar e interpretar o modelo de tópico e muito útil ao rotular tópicos

Etapa 1. Carregar dados pré-processados ​​

Antes nos aprofundamos no lado analítico das coisas, precisamos de alguns dados textuais preparados. Como todos os verdadeiros cientistas de dados sabem, a preparação adequada de dados leva a maior parte do seu tempo e é mais decisiva para a qualidade dos resultados da análise que você obtém. Preparar dados textuais é outra xícara de chá em comparação com preparar dados numéricos ou categóricos estruturados. Neste blog, nosso foco é a análise de texto. No entanto, queremos mostrar como limpamos e preparamos os dados que coletamos. Neste (blog anterior), explicamos em detalhes como pré-processamos os dados, resultando nos 5 arquivos a seguir que podemos usar em nossa análise de PNL:

  • reviews.csv: um arquivo csv com textos de revisão originais e preparados – o combustível para nossas análises de PNL. (chave incluída: restoreviewid, portanto, o identificador exclusivo de uma resenha)
  • labels.csv : a arquivo csv com valores de 1/0, indicando se a avaliação é uma avaliação de um restaurante Michelin ou não (chave incluída: restoreviewid)
  • restoid.csv : um arquivo csv com id de restaurante, para ser capaz de determinar quais comentários pertencem a qual restaurante (chave incluída: restoreviewid)
  • trainids.csv : um arquivo csv com valores 1/0, indicando se a revisão deve ser usada para treinamento ou teste – já dividimos as revisões no treinamento / teste para permitir a reutilização das mesmas amostras para comparações justas entre as técnicas (chave incluída: restoreviewid)
  • features.csv : um arquivo csv com outros recursos relacionados às revisões (chave incluída: restoreviewid)

Esses arquivos com th Os dados limpos e relevantes para as técnicas de PNL são disponibilizados para você por meio de armazenamento de blob público para que você possa executar todo o código que apresentamos e ver como as coisas funcionam com mais detalhes. Para nosso modelo de tópico, precisamos de três destes arquivos:

Etapa 2: preparar dados para o tópico modelagem

Começando com os textos de revisão limpos, temos que fazer algumas coisas antes de podermos estimar nossos modelos de tópico:

  1. Tokenizar nosso texto preparado (incluindo bigramas)
  2. Amostras de avaliações para treinar nosso modelo de tópico
  3. Filtrar tokens relevantes
  4. Criar matriz de termos de documento

2.1. Tokenize nosso texto preparado (incluindo bigramas)

Latent Dirichlet Allocation (LDA), a técnica que usamos para modelagem de tópicos, é uma técnica de ‘saco de palavras’. O que isso significa é que a técnica de PNL não considera a ordem dos tokens ao analisar o texto. Portanto, onde o token está localizado no texto e quais outros tokens estão próximos ao token (tokens anteriores / subsequentes) dentro do documento não é considerado. É como se todos os tokens do texto do documento fossem jogados em um saco, misturando-os, mas retendo a informação de que os tokens estão no mesmo documento. Como resultado, podemos perder informações cruciais se muitas colocações interessantes – combinações frequentes de tokens – estiverem presentes no texto. Exemplos populares são nomes de pessoas (Donald Trump, Jonnie Boer) ou lugares (Estados Unidos, Den Haag), mas também combinações de palavras específicas do contexto podem ser importantes para incluir em nosso modelo de tópico: witte wijn ( vinho branco ), rode wijn , ( vinho tinto ), gaan eten ( vá comer ). Para garantir que não perdemos essas colocações importantes, adicionamos os bigramas preparados que estão presentes em nosso texto. Lembre-se de que já removemos as palavras de interrupção e a interpunção em nosso dataprep.

Depois de adicionar bigramas aos textos carregados e limpos, dividimos os textos novamente para terminar com um dataframe em que cada linha é uma combinação de token de revisão. Filtramos as avaliações que se tornaram muito curtas (5 tokens) após remover as palavras irrelevantes. Nesse formato, estamos prontos para nossos últimos preparativos antes de começarmos a modelar tópicos.

2.2 Amostras de análises para treinar nosso modelo de tópico

Em nossa próxima etapa, filtraremos os tokens mais relevantes para incluir na matriz de termos do documento e, subsequentemente, na modelagem de tópicos.Mas primeiro precisamos determinar quais documentos (revisões) são mais importantes para nós. Por alguns motivos, não queremos usar todas as revisões como entrada para nosso modelo de tópico:

  • No final, queremos usar os tópicos em um modelo de previsão para prever estrelas Michelin. É uma prática recomendada deixar de lado um conjunto de testes antes de construir o modelo de tópico e usar seus resultados na tarefa preditiva downstream. Dessa forma, construímos nosso modelo de tópico e nossa previsão de dados de trem e mantemos os dados de teste invisíveis até a avaliação.
  • Conforme mostrado abaixo, não mais que 3\% de todas as avaliações são avaliações Michelin. Ao aumentar a proporção de críticas da Michelin no conjunto de trens que usamos para modelagem de tópicos, é mais provável que tópicos específicos que são discutidos nas críticas da Michelin sejam identificados.

Por essas razões, nós concentrará o resto da preparação em nosso modelo de tópico e estimativa dos modelos de tópico em um subconjunto de revisões. Este subconjunto contém apenas análises que já foram especificadas como casos de treinamento em nosso caderno de preparação de dados. Dentro deste subconjunto, pegamos todas as críticas Michelin (cerca de 3.000) e complementamos com as críticas não Michelin para terminar com cerca de 10.000 críticas:

# A tibble: 2 x 3
ind\_michelin n pct

1 0 141554 97\%
2 1 4313 3\%
# A tibble: 5 x 5
# Groups: train\_smpl, train [3]
train\_smpl train ind\_michelin n\_reviews n\_tokens

1 0 0 0 40997 433179
2 0 0 1 1290 35129
3 0 1 0 88505 773887
4 1 1 0 7181 111435
5 1 1 1 2971 70548
[1] "10152 unique reviews and 163137 unique tokens selected to train topic model"

2.3 Tokens de filtro

Agora que adicionamos bigramas aos tokens e re-tokenizamos nossos textos, ainda temos muitos, muitos tokens exclusivos disponíveis para nosso modelo de tópico . É uma prática recomendada se livrar da longa cauda de termos infrequentes. Vejamos primeiro como é a distribuição da frequência do token. Lembre-se de que em nosso (blog de preparação de dados) já removemos todas as palavras de parada dos textos, incluindo 128 palavras de parada de alta frequência personalizadas que especificamos observando a frequência do token na preparação dos dados.

O gráfico acima mostra claramente que uma grande quantidade de tokens únicos ocorre raramente em todas as avaliações, 75\% ocorre apenas uma vez.

Concentre-se em tokens que ocorrem 5 vezes ou more in train Corpus

Como podemos ver a partir da contagem de frequência de tokens, há muitos tokens que ocorrem apenas uma ou algumas vezes: cerca de 92\% de todos os tokens únicos ocorrem menos de 5 vezes em nosso corpus de resenhas. Esses tokens de baixa frequência afetam a análise do modelo de tópico. Para focar em tokens usados ​​com frequência, selecionamos tokens que ocorrem 5 vezes ou mais nos dados de trem preparados. Esperançosamente, isso é suficiente para aprender tópicos de tokens que ocorrem juntos nas mesmas revisões. Ao otimizar nosso modelo de tópico, podemos variar a frequência mínima para avaliar o impacto nos resultados.

Por que não TF-IDF?

Depois de ler algumas ferramentas de análise de texto, você pode se perguntar: por que não usamos o TF-IDF para selecionar os tokens mais relevantes? TF-IDF significa Frequência do termo – Frequência inversa do documento. Essa métrica combina a Frequência do termo – com que frequência o token está presente em um documento? – com o inverso da frequência do documento – em quantos documentos exclusivos o termo está presente? Embora o TF-IDF seja freqüentemente uma boa escolha para selecionar tokens mais relevantes, não é em nosso contexto, onde o tamanho do documento é limitado e a recorrência do mesmo token no mesmo texto é baixa. Não é frequente que um token tenha uma Frequência de Termo acima de 1. Como resultado, apenas a parte da Frequência Inversa do Documento é decisiva e isso favorece os tokens que ocorrem apenas em uma ou duas revisões. Por esse motivo, não usamos TF-IDF aqui, mas olhamos a frequência geral para escolher tokens relevantes para a modelagem de tópicos. Também porque já removemos a lista personalizada de palavras de parada de nosso texto, portanto, tokens muito frequentes já foram removidos.

Ao filtrar os tokens não frequentes, diminuímos o número de tokens a serem considerados em nosso LDA dramaticamente, focando nos 12K (8\%) tokens mais frequentes e removendo os 146K (92\%) tokens que são muito raros no corpus. Esses tokens selecionados ainda representam 73\% de todos os tokens nos documentos:

# A tibble: 2 x 5
min\_5\_freq n\_unique\_tokens n\_tokens pct\_unique\_tokens pct\_all\_tokens

1 token frequency: 2 token frequency: >=5 12525 518146 8\% 73\%

2.4 Criar DTM

Depois de filtrar os tokens que queremos usar para construir nosso modelo de tópico, podemos criar a entrada para LDA. Isso requer um document-term-matrix ou DTM, portanto, uma matriz com nas linhas todos os nossos documentos (revisões) e nas colunas todos os termos (o tokens relevantes). Observe que usamos a frequência geral do token para o parâmetro value.Você pode esperar a frequência de termo específico do documento aqui, no entanto, usamos a frequência de token geral para dar muito mais ênfase na localização do modelo de tópico para termos que são mais frequentes em geral; dada a curta duração das resenhas (em comparação com livros ou artigos que são frequentemente usados ​​na modelagem de tópicos), a probabilidade de um único token ocorrer com mais frequência na resenha é limitada.

DTM dimensions: 
Documents (10152) x Tokens (12525) (average token frequency: 702.3)

Etapa 3: desenvolver modelo de tópico

Agora que temos um DTM, estamos prontos para começar a modelagem de tópicos! Até agora, já fizemos algumas escolhas com impacto no resultado da nossa análise: qual comprimento mínimo de revisão usar, quais palavras de parada devem ser excluídas, quais -gramas a serem incluídos, a frequência mínima de token para usar tokens … E mais algumas opções precisam ser feitas.

O LDA tem uma série de parâmetros que afetam o resultado, dos quais os mais importantes são:

  • k : O número de tópicos! Sim, este é um parâmetro e não um resultado. Semelhante a técnicas de agrupamento como KMeans, você precisa dizer quantos clusters / tópicos deseja identificar ify.
  • método : o pacote topicmodels permite diferentes métodos de otimização, VEM algorithm ou Gibbs sampling, o padrão é VEM.
  • controle : lista de variáveis ​​de controle para orientar a estimativa – os parâmetros relevantes dependem do método escolhido VEM ou Gibbs, mas os mais importantes são:
  • nstart : O número de execuções a serem realizadas com as mesmas configurações, mas sementes diferentes
  • semente : Para reprodutibilidade, uma semente aleatória pode ser definida. Se nstart> 1, você precisa fornecer várias sementes, 1 por nstart (por exemplo, c (123, 234 “, 345”))
  • best : Se TRUE (padrão), apenas a corrida com o melhor resultado de ajuste é mantida, de conjunto, se FALSE uma lista de todas as execuções é retornada para que você possa examinar todos deles.

Para uma visão geral completa de todos os parâmetros e configurações disponíveis, consulte a vinheta do pacote de modelos de tópico .

Estimar modelo de tópico LDA

O parâmetro de maior impacto é k : o número de tópicos para identificar. Como escolher um valor para k? Isso é em parte resultado da discussão (que número de tópicos esperamos encontrar neste contexto?) E do erro & de tentativa (tente valores diferentes de k, avalie os resultados). Alguns cientistas de dados podem não gostar disso, eles preferem olhar as estatísticas para guiá-los neste processo, mas para aqueles familiarizados com outras técnicas de ciência de dados não supervisionadas como KMeans, isso não é tão novo. O agrupamento e também a modelagem de tópicos são, em certa medida, mais arte do que ciência. Guiado por técnicas e medidas estatísticas, um cientista de dados esculpe uma solução de modelagem de tópicos que se adapta às necessidades (de negócios). Caso você precise de um ponto de partida para k com algum conhecimento estatístico, pode tentar esta abordagem ou esta abordagem.

Vamos começar com um modelo de tópico para identificar 3 tópicos e explorar o resultado. Não temos nenhuma razão para alterar qualquer outro padrão neste momento.

Avaliar modelo de tópico

O modelo de tópico está ajustado, então, vamos explorar!

O objeto lda ajustado contém uma série de matrizes:

  • phi : matriz com distribuição de tokens (em linhas) sobre tópicos (em colunas)
  • theta : matriz com distribuição de documentos (daí: revisões, em linhas) sobre tópicos (em colunas)

Tanto para phi quanto para theta, a soma de todas as colunas é igual a 1, o que significa:

  • Para phi, a soma de todas as pontuações de token em um tópico é 1 – pontuações mais altas significam maior importância desse token dentro do tópico .
  • Para theta, a soma de todas as pontuações de tópico em um documento é 1 – pontuações mais altas significando que o tópico está mais presente naquele documento.

Para explorar nosso modelo de tópico, vamos começar examinando os tokens mais importantes por tópico. Para fazer isso, precisamos especificar quando um token é importante para um tópico. Poderíamos argumentar que o token é importante para o tópico quando tem alta probabilidade de ocorrer dentro de um tópico p(token|topic). Vamos ver como fica nosso modelo de tópico de 3 tópicos. Usaremos uma função elegante do pacote tidytext, que ajuda a preparar os dados do modelo de tópico para visualizar os tokens mais importantes por tópico: tidy().

Com este gráfico, temos uma ideia do que os tópicos em nosso primeiro modelo de tópico representam. Como podemos ver no gráfico, olhar para a probabilidade do token por tópico tem a desvantagem de que os tokens que têm uma frequência geral alta têm uma probabilidade maior de aparecer entre os 10 primeiros para vários tópicos. Por exemplo, restaurante aparece em vários tópicos top-10. Apenas olhar para as probabilidades gerais do tópico pode ocultar que tokens específicos um pouco menos frequentes estão muito relacionados a um tópico específico. Para analisar isso, podemos tornar a frequência do token no tópico relativa à frequência geral do token: p(token|topic)/p(token). Isso mostra quais tokens estão fortemente relacionados ao tópico, independentemente da frequência do token.

Usar (apenas) a última abordagem tem seu próprio lado negativo, destacando tokens importantes que podem não ocorrer em tantos comentários. A melhor abordagem pode estar em algum lugar no meio: para avaliar um modelo de tópico, é mais valioso ser capaz de explorar o modelo de tópico de ambas as perspectivas – probabilidade de termo absoluto e probabilidade de termo relativo – e talvez até mesmo uma mistura dos dois. Por esse motivo, o pacote LDAvis é tão valioso porque permite que você faça exatamente isso! O LDAvis precisa de um JSON contendo informações sobre seu modelo de tópico e vocabulário:

Uma observação lateral aqui: o pacote LDAvis R pode ser usado a partir de R ou RStudio, mas não diretamente de um ambiente de notebook como Jupyter ou Databricks. Portanto, usamos a porta pyLDAvis para o pacote LDAvis, pois isso torna mais fácil incluir a maravilhosa ferramenta LDAvis em um notebook. No entanto, em alguns navegadores, o pyLDAvis não está funcionando corretamente. Se isso acontecer, veja um exemplo abaixo. Sinta-se à vontade para baixar este bloco de notas e experimentar o LDAvis por si mesmo.

Para executar LDAvis localmente com R ou RStudio, você pode executar serVis(json) . Para explorar o LDAvis interativo a partir da impressão de tela abaixo, consulte este link .

O gráfico do lado esquerdo mostra o tamanho de Tópicos ( Quantos documentos são atribuídos ao tópico?) , bem como a distância entre os Tópicos ( Quais Tópicos estão mais / menos relacionados entre si? ​​). O lado direito mostra os tokens importantes para o Tópico selecionado (ou os tokens mais importantes gerais no modelo de tópico quando nenhum tópico é selecionado). Com o controle deslizante superior direito, podemos alterar lambda, onde lambda decide o quanto preferimos olhar para a probabilidade do token absoluto dentro do tópico (p(token|topic), lambda = 1) ou prefere o token relativo probabilidade dentro do tópico (p(token|topic)/p(token), lambda = 0). Brincar com essa visualização costuma ser a melhor maneira de se familiarizar com os tópicos identificados. E – o mais importante – descobrir um rótulo de tópico adequado para cada um dos tópicos! Isso também é de grande ajuda para decidir se o modelo de tópico atual é suficiente para sua tarefa posterior ou se você deseja alterar algumas configurações (k, método, semente, …) ou mesmo os dados (alterar documentos ou tokens selecionados) para obter um resultado melhor.

Iterações para seu modelo de tópico vencedor

Nós dissemos isso antes: topic modeling é – assim como a análise de cluster e outras não supervisionadas técnicas de aprendizado de máquina – mais arte do que ciência! Portanto, você provavelmente vai gastar algum tempo ajustando seu modelo de tópico antes de terminar com o seu “melhor” modelo de tópico. Colocamos “melhor” entre aspas aqui porque o que é “melhor” depende muito das aplicações que você tem em mente com seu modelo de tópico e de sua criatividade! Portanto, isso é bastante subjetivo! Durante o processo de encontrar o seu “melhor” modelo de tópico, você provavelmente terá alguns momentos em que acha que não encontrará nenhuma solução que possa usar e outros momentos em que você experimenta o êxtase de ver esses tópicos intrínsecos surgindo através do tokens que o dominam.Para descobrir seu modelo de tópico ideal, aqui estão suas ferramentas mais importantes:

  • change k – o número de tópicos
  • excluir tokens extras muito dominantes (frequentes) (eles ainda podem seja muito dominante e suprima a localização de subdomínios mais interessantes em seu texto)
  • aumente a frequência mínima do token para concentre-se nos tokens mais dominantes
  • exemplos de documentos para se concentrar nos documentos mais relevantes para encontrar tópicos importantes , poderíamos mudar a estratégia de amostragem

Além desses parâmetros, você também tem alguns parâmetros LDA que podem variar, mas em nossa experiência, os parâmetros acima são os mais importantes para começar. Considerando que aumentar ou diminuir k significa apenas que você tem que reestimar seu LDA, alterar a amostragem de avaliações ou os tokens a serem considerados significa que você também tem que recriar seu DTM.

O que fizemos? Depois de muito suar, xingar e explorar muitas soluções, fizemos o seguinte:

  • altere k para 7 tópicos.
  • Junte alguns tokens e exclua um número de tokens
  • Explore vários resultados de sementes (com nstart e best=FALSE) para encontrar o melhor modelo de tópico interpretável **
  • Finalmente, selecione a melhor semente e defina best=TRUE para manter apenas o melhor modelo LDA

** O permite fazer várias execuções especificando o parâmetro nstart para definir o número de execuções e com seed definido as sementes para guiar essas corridas. Ao definir best=TRUE apenas a solução com a melhor probabilidade de log é preservada, defini-la como best=FALSE permite que você explore todos os modelos de tópico (o objeto retornado agora é uma lista de todos os modelos de tópico).

Iterando e comparando resultados resultou em 7 tópicos que poderíamos rotular bem com nomes de tópicos de assuntos que os revisores falam ao avaliar restaurantes. Esta é nossa solução para os tópicos com os rótulos já adicionados a eles:

DTM dimensions: 
Documents (10152) x Tokens (12496) (average token frequency: 416.26)

Para explorar o LDAvis interativo a partir da impressão de tela abaixo, vá para este arquivo html .

Embora alguns tópicos ainda sejam uma mistura de coisas, temos o prazer de usar esta solução para prever estrelas Michelin. Vemos algumas distinções claras entre os tópicos identificados e esperamos que traduzir o texto bruto de cada avaliação em um vetor de probabilidades para esses tópicos ajude a prever estrelas Michelin. Esta é uma visão geral dos tópicos com os rótulos que atribuímos a eles e seus tokens mais frequentes:

Modelagem de tópicos – resumindo

Neste artigo que mostramos como você pode construir um modelo de tópico para identificar as construções latentes ou tópicos que os revisores falam em suas avaliações de restaurantes. Como você viu, existem algumas escolhas a serem feitas antes de termos nosso melhor modelo de tópico final e algumas dessas escolhas não são fáceis de fazer, uma vez que as estatísticas de orientação nem sempre estão disponíveis. Lembre-se do que afirmamos antes: a modelagem de tópicos é uma técnica não supervisionada e isso a torna “mais arte do que ciência”. O que é importante para muitos casos de uso é que você acaba com tópicos que você é capaz de interpretar e explicar, já que você precisa ser capaz de interpretar os recursos que você construiu aqui ao usá-los em tarefas posteriores. Com nosso modelo de 7 tópicos, temos certeza de que podemos fazer isso!

Benefícios

Uma grande coisa sobre a modelagem de tópicos – e especialmente LDA – é que quando todos os ajustes e esforços são feito, é provável que você termine com um número administrável de tópicos bem interpretáveis. Isso permite que você adicione para cada documento a distribuição desses tópicos. Como as probabilidades do tópico somam 1 e são valores numéricos, agora você resumiu os textos não estruturados e de comprimento diferente em apenas alguns recursos novos e fáceis de processar. Recursos que podem ser de grande valor em tarefas posteriores, como modelagem preditiva ou tarefas de segmentação.

Desvantagens

A maior desvantagem da modelagem de tópicos é provavelmente a subjetividade em encontrar o melhor modelo . Portanto, pode levar algum tempo e esforço para chegar a uma solução de modelo de tópico adequada. Pode haver várias soluções estatisticamente equivalentes que podem diferir substancialmente nos tópicos resultantes.Portanto, quando você executa novamente a análise com dados ou configurações ligeiramente diferentes, sempre há a chance de que a interpretação do modelo seja alterada drasticamente. Especialmente quando nenhuma solução de tópico dominante está presente em seus dados textuais, cada execução pode resultar em resultados diferentes. Certifique-se de acompanhar as execuções anteriores, garantindo sementes e conjuntos de dados usados ​​para que você não experimente a frustração de encontrar uma bela solução de modelo de tópico que você possa interpretar e descrever bem e depois perdê-la para nunca mais restaurá-la.

Olhando para o futuro

Anteriormente, especificamos nosso objetivo: prever quais restaurantes têm uma estrela Michelin. Em um de nossos (próximos blogs), portanto, usamos a distribuição por tópicos nos textos de revisão para prever se a crítica é uma crítica Michelin ou não. Também agregamos essas previsões sobre todas as avaliações que um restaurante teve para avaliar até que ponto somos capazes de prever estrelas Michelin. Além disso, usaremos (outras técnicas) (word2vec, GloVe, BERT) para resumir os textos de revisão em recursos que podemos usar para prever estrelas Michelin e mostraremos qual abordagem funciona melhor. Começaremos apresentando técnicas de incorporação de palavras (word2vec, GloVe) em nosso próximo blog e mostraremos como transformar nossos textos de revisão em embeddings e como interpretá-los e visualizá-los.

Este artigo faz parte do nosso PNL com série R . Uma visão geral de todos os artigos da série pode ser (encontrada aqui).

  • Anterior nesta série: (Preparação de dados para processamento de linguagem natural)
  • A seguir nesta série : (Treinamento do modelo de incorporação de palavras e visualização dos resultados)

Deseja fazer isso sozinho? Sinta-se à vontade para baixar o Databricks Notebook ou o R-script da página gitlab .

Deixe uma resposta

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