TL;DR
Compreender o feedback dos clientes e saber quais são seus pontos fortes e fracos é fundamental para qualquer negócio. Hoje em dia, as empresas têm acesso a muitas informações que podem fornecer esses insights: avaliações em sites, interações por chat, transcrições de conversas, comentários nas redes sociais…
Este artigo explica como você pode extrair rapidamente insights a partir de data textuais, utilizando as avaliações dos consumidores como exemplo. Apresentaremos três abordagens diferentes:
temas empresariais predefinidos
(a modelagem de tópicos poderia ser uma quarta opção para aprofundar a análise)
Observe que os data neste artigo foram gerados artificialmente para garantir a confidencialidade do nosso projeto inicial.

Análise de avaliações de clientes
Estamos tentando extrair insights das avaliações dos nossos produtos para entender quais são seus principais pontos fracos e pontos fortes. Os produtos são câmeras e acessórios, classificados de 1 (ruim) a 5 (excelente).
Vamos utilizar três abordagens diferentes aqui para extrair insights dos nossos data

O importante é ter pontos de vista complementares:
Tenha uma visão geral dos data que data coletou
Sempre que você inicia um novo data , o primeiro passo é sempre ter uma visão geral dos data (eles estão desequilibrados? Há data suficientes? Há muitos valores em falta?).
Quantas avaliações tenho para cada categoria de produto?

Número de avaliações por categoria de produto
→ É importante ter em mente que não há tantas avaliações sobre tripés ao analisarmos as avaliações dessa categoria específica de produto. Quanto mais data , melhor, para que possamos chegar a conclusões imparciais e relevantes.
Quantas avaliações tenho para cada classificação?

Número de avaliações por nota
→ Isso é importante. Percebemos que nosso conjunto de dados está bastante desequilibrado: temos muito mais avaliações positivas do que negativas. Esse tipo de informação precisa ser levado em consideração ao treinar modelos específicos (por exemplo: um modelo de classificação para análise de sentimento).
Qual é a distribuição das classificações em cada categoria?

Avaliação média e distribuição de cada categoria de produto
Podemos ver aqui que as lentes têm a nota média mais alta, enquanto há muitas avaliações negativas (especialmente com nota 1) para drones e imagens aéreas.
Usando a PNL para compreender as preocupações dos seus clientes
Agora, para entender do que tratam as avaliações, vamos aplicar as diferentes abordagens de PLN mencionadas anteriormente.
Data
Antes de mais nada, precisamos limpar os data de texto para que possam ser utilizados pelos diversos métodos de PLN (essa etapa nem sempre é necessária, dependendo dos algoritmos que você deseja usar).
Aplicamos funções padrão de pré-processamento relevantes para nossos data remoção de HTML, pontuação, números de telefone, etc.) e implementamos uma lista personalizada de palavras irrelevantes que removemos das avaliações (por exemplo, a palavra “câmera” não agrega muita informação à nossa análise).
Você pode encontrar muitas dessas funções em nosso repositório do NLPretext no GitHub.
Obter insights com apenas algumas linhas de código
Agora que temos, para cada avaliação:
Podemos começar simplesmente analisando nossas palavras mais frequentes (palavras isoladas, bigramas, trigramas…). É uma análise simples, mas que oferece uma visão imediata dos principais temas de cada pontuação e categoria.
from collections import Counter
import matplotlib.pyplot as plt
import wordcloud
plt.rcParams[“figure.figsize”] = [16, 9]
def create_ngrams(lista_de_tokens, n_de_elementos):
“””
Cria n-gramas para uma lista de tokens
Parâmetros
———-
token_list : list
lista de strings
nb_elements :
número de elementos no n-gram
Retorna
——-
Gerador
gerador de todos os n-gramas
“””
ngrams = zip(*[token_list[index_token:] for index_token in range(nb_elements)])
return (” “.join(ngram) for ngram in ngrams)
def frequent_words(list_words, ngrams_number=1, number_top_words=10):
“””
Criar n-gramas para uma lista de tokens
Parâmetros
———-
ngrams_number : int
number_top_words : int
comprimento do dataframe de saída
Retorna
——-
DataFrame
DataFrame com as entidades e suas frequências.
“””
frequent = []
if ngrams_number == 1:
pass
elif ngrams_number >= 2:
list_words = create_ngrams(list_words, ngrams_number)
else:
raise ValueError(“o número de n-gramas deve ser >= 1”)
counter = Counter(list_words)
frequent = counter.most_common(number_top_words)
return frequent
def make_word_cloud(text_or_counter, stop_words=None):
if isinstance(text_or_counter, str):
word_cloud = wordcloud.WordCloud(stopwords=stop_words).generate(text_or_counter)
else:
if stop_words is not None:
text_or_counter = Counter(word for word in text_or_counter if word not in stop_words)
word_cloud = wordcloud.WordCloud(stopwords=stop_words).generate_from_frequencies(text_or_counter)
plt.imshow(word_cloud)
plt.axis(“off”)
plt.show()
Nuvem de palavras
Aproveitando essas funções, podemos exibir facilmente uma Cloud palavras com os termos mais frequentes, utilizando avaliações de câmeras com uma pontuação entre 1 e 2:

Em seguida, exiba uma Cloud de palavras semelhante Cloud avaliações de câmeras com nota entre 4 e 5:

Podemos identificar facilmente os principais pontos levantados em ambos os casos.
Poderíamos realizar esse exercício para cada produto da nossa empresa, a fim de identificar as especificidades de cada um e chegar a conclusões em um nível mais detalhado.
Contagem de N-gramas
Também podemos usar a função `frequent_words ` para exibir as palavras, os bigramas ou os trigramas mais frequentes:

Para ir mais longe, você poderia implementar uma função que exiba as avaliações associadas a uma palavra-chave, a fim de se concentrar nos n-gramas que lhe pareçam interessantes. Você também poderia analisar os n-gramas com os valores mais altos ou mais baixos de TF-IDF (fácil de calcular com a biblioteca sklearn ), já que isso permite identificar palavras importantes com base em uma métrica diferente de um simples contador de frequência.
Análise de sentimentos
Em seguida, passamos a uma abordagem de análise de sentimento. Normalmente, ela é usada para prever se um texto é positivo ou negativo. No nosso caso, já dispomos dessa informação (a pontuação entre 1 e 5 nos indica o sentimento por trás da avaliação). Mas treinar um modelo para prever essa classificação nos ajudará a identificar quais palavras (características) são fundamentais para os clientes.
O que podemos fazer é treinar um classificador de análise de sentimento com esses data e, em seguida, usar bibliotecas como SHAP ou LIME para entender quais características (= palavras) têm maior impacto na classificação de uma avaliação como positiva ou negativa.

Classificador
Para treinar um classificador, há vários algoritmos disponíveis, desde o clássico LogisticRegression do sklearn até modelos ULM-fit (consulte este notebook para treinar um modelo ULM-fit em francês e este artigo para entender melhor o ULM-fit) ou o classificador Ludwig, desenvolvido pela Uber.
Talvez seja melhor começar com um algoritmo simples, para ver se ele já atende às suas necessidades, antes de implementar algoritmos mais complexos.
Lembre-se de levar em consideração o fato de que seu conjunto de dados provavelmente está desequilibrado (com mais avaliações positivas do que negativas, no nosso caso).
Importância das características
Depois de implementar seu classificador, você pode passar para a etapa mais importante: obter insights a partir da importância das características.
No exemplo a seguir, aplicamos o SHAP ao nosso modelo (neste caso, uma simples LogisticRegression do sklearn):


Podemos ver aqui que as funcionalidades, a qualidade das fotos e os recursos de zoom têm um impacto realmente positivo na satisfação dos nossos clientes, enquanto o flash, o cartão de memória ou as baterias tendem a ter um impacto realmente negativo quando mencionados em uma avaliação.
Palavras como “excelente”, “perfeito” ou “ruim” foram removidas desta análise (antes do treinamento do classificador), pois seriam consideradas como as características mais importantes, enquanto, no nosso caso, queremos nos concentrar em obter insights sobre nossos produtos, e não necessariamente melhorar o desempenho do nosso classificador.
Consulte este caderno para ver um exemplo de como usar o SHAP com um conjunto de dados público.
O impacto dos temas empresariais
Nossa terceira abordagem foi um pouco diferente das anteriores, pois parte de temas relacionados aos negócios escolhidos por alguém com conhecimento sobre os produtos.
O objetivo é analisar como os temas de negócios predefinidos afetam as avaliações dos produtos, para entender se eles são um ponto forte ou um problema a ser resolvido.
Determinação dos temas
O primeiro passo é classificar as avaliações em categorias temáticas. Isso pode ser feito rotulando manualmente o conjunto de dados (nesse caso, você poderia treinar um classificador para classificar automaticamente novas avaliações em temas) ou utilizando um modelo baseado em regras.
No nosso caso, utilizamos um modelo baseado em regras porque ele já consegue gerar bons resultados a um custo baixo (por exemplo: se você estiver curioso sobre a qualidade das suas lentes ou os serviços pós-venda, pode ser simples estabelecer regras que determinem se uma avaliação menciona esses aspectos ou não).
Impacto do tema
Em uma segunda etapa, você pode calcular sua pontuação média geral e, em seguida, a pontuação média das avaliações que abordam um tema específico.
Ao subtrair ambas as pontuações, você pode deduzir o impacto que o seu tema tem na sua pontuação geral.

Devemos nos preocupar com o nosso serviço pós-venda, pois ele é frequentemente mencionado de forma negativa (embora isso também possa se dever ao fato de que as pessoas que entram em contato com o serviço pós-venda geralmente já tinham algum problema desde o início. É por isso que você deve analisar detalhadamente as avaliações que mencionam esse tema, para entender realmente por que ele foi levantado).
→ Mais uma vez, o conhecimento empresarial é essencial para interpretar os resultados.
Por outro lado, quando nossos designs ou lentes são mencionados, isso geralmente está associado a uma avaliação com nota alta, o que pode indicar que esse é um dos nossos pontos fortes.
Consulte este artigo para conhecer outras formas de visualização além do Wordcloud.
Para saber mais
Poderíamos ir além e tentar identificar temas em nossas avaliações: você poderia usar a biblioteca Top2Vec para extrair temas e observar a correlação entre temas e pontuações (qualquer biblioteca de modelagem de temas serve, mas a Top2Vec tem a vantagem de oferecer ótimos resultados sem exigir nenhum pré-processamento nem um número pré-definido de temas).
Este artigo mostrou como obter insights sobre os clientes a partir de seus data textuais data meio data uma análise prática e simples. Muito obrigado por ter lido até aqui e não hesite em entrar em contato se tiver algum comentário sobre o assunto! Você pode visitar nosso blog aqui para saber mais sobre nossos projetos de aprendizado de máquina.

BLOG






