Skip to main content
03 janeiro 2024
Follow Us

Text analytics – o que dizem os nossos formandos sobre nós

Comecei a dar formação em Excel para finanças há cerca de 10 anos atrás. Em 2015, com o lançamento do Power BI, iniciei uma série de ações de formação nesta revolucionária tecnologia de análise e visualização de dados, com um enfoque especial na gestão das empresas. Hoje, somos uma equipa de formadores e consultores e por nós passaram já milhares de formandos e mais de 500 eventos de formação. No início, registava os dados dos eventos de formação numa enorme folha de cálculo, que entretanto se tornou obsoleta e frágil e que, por isso, foi substituída pela Training App, uma aplicação para gestão de formação desenvolvida por nós mesmos.

Na Training App é possível gerir todas as operações relacionadas com eventos de formação presencial e online. Estas operações envolvem a calendarização de eventos, a gestão de formadores e formandos e toda a documentação associada à gestão da formação, que é bastante extensa e exigida pela DGERT.

Mas um ponto que sempre mereceu a minha atenção especial é a análise dos questionários de satisfação dos formandos. O que acham eles sobre os formadores, o conteúdo das ações e que sugestões, comentários ou reclamações apresentam?

Neste artigo vamos ver a parte analítica que incide sobre o texto, os comentários, sugestões e reclamações. Como analisar esta dimensão tão importante e agora com um conjunto de dados já bastante extenso?

A primeira preocupação é com a governança dos dados, em particular, com a proteção da privacidade dos formandos. Por isso, tudo o que veremos neste artigo foi devidamente anonimizado e/ou alterado de modo a permitir visualizar os resultados sem comprometer este ponto.

Os formandos respondem ao questionário de satisfação a partir do site de apoio à Training App e os resultados são transformados e carregados numa tabela do Dataverse. Abaixo podemos ver um screenshot com um exemplo:

Text Analytics1

Existem várias questões de avaliação da satisfação do formando e as respostas são carregadas automaticamente para a seguinte tabela:

Text Analytics2

Estando na cloud, no nosso domínio, podemos facilmente analisar os dados no Power BI para construir gráficos com os valores numéricos. No entanto, neste caso, os dados que nos interessam estão no formato de texto, na coluna Sugestões:

Text Analytics3

Analisando cada um destes comentários individualmente é relativamente fácil de compreender se os formandos gostaram ou não da formação e que aspetos da formação merecem mais destaque. Mas, se o volume de comentários for grande, será impossível analisar todos os comentários por um humano!

Aqui entram os modelos de text mining para nos ajudar. Existem várias soluções para criar e utilizar um modelo deste género. A solução mais versátil será desenvolvê-lo a partir de algoritmos existentes com código Python ou R, embora seja também a mais trabalhosa e que requer competências técnicas mais avançadas.

A alternativa, para desenvolvedores na plataforma Power, poderá passar pelo AI Builder, que dispõe destes modelos já devidamente treinados e prontos a utilizar. Será necessário dispor de um licenciamento Premium para recorrer a este tipo de modelos, mas o custo de desenvolvimento é praticamente nulo. Vejamos como implementar uma solução com o Power Automate e o AI Builder.

Vamos começar por criar um fluxo com um trigger manual e uma ação de recolha dos dados da tabela SatisfacaoFormandos e da coluna Sugestoes:

Text Analytics4

Como já sabemos, a primeira caixa é o trigger, neste caso um trigger manual que despoleta o fluxo. A segunda caixa “List rows from selected environment” é a ação, que recolhe os dados da tabela SatisfacaoFormandoss do ambiente “Training App DEV” onde consta a tabela no Dataverse, especificamente a columa “cre05_sugestoes” e desde que esta não esteja vazia.

De seguida, acrescentemos uma nova ação para analisar o sentimento positivo ou negativo dos comentários. Mais uma vez, para termos a certeza de que não estamos a passar para o modelo de deteção de sentimento um texto vazio, vamos acrescentar uma condição:

Text Analytics5

Ao criarmos esta ação, verificamos que ela fica inserida dentro de uma ação do tipo “Apply to each” que não é mais do que um loop. Ou seja, para cada linha resultante da ação anterior, vamos aplicar esta condição.

Portanto, o designer atualiza-se automaticamente, ficando o flow agora com a seguinte estrutura:

Text Analytics6

O teste lógico da condição valida que a coluna “Sugestoes” não está vazia e, se isso for verdadeiro, vamos aplicar o modelo de deteção de sentimento acrescentando uma nova ação.

Text Analytics7

Se corrermos o flow como ele se encontra neste momento, tudo funcionará bem, em princípio. Mas seria melhor guardarmos os resultados numa tabela. Poderia ser a própria tabela do Dataverse, ou talvez fosse melhor criar-se uma nova tabela externa, no Excel por exemplo, para separar os dados originais dos resultados da nossa análise.

Text Analytics8

Vamos criar esta tabela e chamar-lhe “SentimentTable”. Ela será usada para guardar os resultados. Assim, no Power Automate a nova ação a acrescentar será a seguinte:

Text Analytics9

A coluna “Data” do ficheiro Excel será alimentada pela data de início do evento. Esta dimensão é importante se nos interessar analisar a evolução temporal do sentimento: estará a melhorar ou a piorar com o tempo?

Outras colunas poderiam ser consideradas aqui também. Por exemplo, o nome do formador ou o curso em questão.

Além desta, temos também proveniente do Dataverse o próprio texto do comentário, sendo as quatro colunas seguintes alimentadas pelos resultados do modelo. O AI Builder devolve como resultados as probabilidades de um determinado texto ser positivo, negativo ou neutro, assim como a conclusão final quanto ao sentimento, que resulta numa classificação “positiva”, “negativa” ou “neutral”.

Vamos testar o flow e ver que resultados obtemos no Excel!

Text Analytics10

Com estes dados é possível analisar diversos aspetos. Por exemplo:

  • A contagem de cada uma das 3 classes, negativo, positivo ou neutral
  • A média das probabilidades das classes negativo e positivo
  • A evolução do sentimento global ao longo do tempo.

Aperfeiçoando um pouco mais esta análise de sentimento, verificámos que existem muitos comentários neutrais. A maioria dos formandos atribui um comentário positivo, cerca de 50%, sendo a classe neutral a segunda mais frequente com 29% dos comentários.

O que comentam os formandos dentro de cada uma destas classes? E no geral, qual o tópico ou tópicos com mais comentários?

Para responder a estas questões, podemos adaptar o fluxo acima para recorrer a outro modelo e guardar as respostas no Excel, na mesma tabela, ou numa outra tabela acessória.

Supondo que criamos a tabela KeyPhrases, poderíamos adaptar o fluxo da seguinte forma:

Text Analytics11

Como podemos verificar, este modelo é parecido com o anterior na forma como desenhamos o fluxo, mas é diferente nos resultados. Um comentário pode conter mais do que um tópico, e por isso, ao introduzirem-se os resultados na tabela do Excel, vamos precisar de um novo loop “Apply to each” que, para cada comentário, introduz as “key-phrases”.

Analisar o resultado poderá agora ser tão simples como criar uma tabela dinâmica com as contagens de cada uma das “key-phrases”. Note-se que haveria ainda algum trabalho de transformação destes resultados, pois nem sempre estão devidamente limpos. Poderíamos transformar todos os tópicos em minúsculas ou maiúsculas, para evitar a multiplicação dos mesmos em vários resultados diferentes, eliminar tópicos neutros, como “tipo”, “para”, “um”, etc. que nada acrescentam à nossa análise, filtrar comentários despropositados como caracteres estranhos, erros, etc.

Text Analytics12

No gráfico acima, podemos visualizar rapidamente aquilo que mais motiva os formandos. Creio que as duas grandes preocupações são os conteúdos (suponho que a qualidade dos mesmos, a profundidade, o interesse e a relevância), assim como a carga horária, se assumirmos que o tópico “tempo” tem o mesmo significado que “carga horária”.

Estes insights são extremamente valiosos para nós e ajudam-nos a decidir como ajustar a nossa oferta formativa aos nossos formandos. Acho que qualquer empresa ou organização poderá implementar uma solução deste tipo sem grande investimento e extrair dela um enorme valor.


Assine a nossa newsletter e receba o nosso conteúdo diretamente no seu email