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:

  • data sem supervisão
  • análise de sentimentos com importância das características
  • analisando a correlação entre as classificações e
    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.

  • class="lazyload

    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:

    • Data ou a análise de sentimentos tem um caráter mais exploratório: ela identifica o que é mais importante e quais podem ser as principais razões que levam uma avaliação a ser positiva ou negativa.

    • O impacto dos temas é utilizado para associar a distribuição das pontuações a conceitos de negócio já definidos (zoom, bateria, …).

    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:

    • Uma categoria de produto

    • Texto original da resenha

    • O texto revisado

    • O texto revisado e limpo foi dividido em tokens

    • A avaliação do produto

    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.

    • Nas avaliações com notas baixas, há muitas menções à bateria, à tela do aparelho, ao preço ou até mesmo a algum bug real encontrado.

    • Nas avaliações com notas altas, percebemos que a qualidade das fotos, as funcionalidades e o design são frequentemente mencionados

    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.

    Você pode saber mais sobre nós e nossos projetos no nosso blog no Medium