Compartilhar via


Tutorial: extrair frases-chave do texto armazenado no Power BI

O Microsoft Power BI Desktop é um aplicativo gratuito que permite que você se conecte aos seus dados, transforme-os e visualize-os. A extração de frases-chave, um dos recursos do Linguagem de IA do Azure, fornece o processamento de linguagem natural. Dado o texto não estruturado bruto, é possível extrair as frases mais importantes, analisar o sentimento e identificar entidades conhecidas, como marcas. Juntas, essas ferramentas podem ajudar você a ver rapidamente sobre o que seus clientes estão falando e como eles se sentem sobre isso.

Neste tutorial, você aprenderá como:

  • Use o Power BI Desktop para importar e transformar dados
  • Criar uma função personalizada no Power BI Desktop
  • Integre o Power BI Desktop com o recurso de Extração de Frases-chave do Linguagem de IA do Azure
  • Use Extração de Frases-chave para obter as frases mais importantes dos comentários dos clientes
  • Criar uma nuvem de palavras com base nos comentários do cliente

Pré-requisitos

Carregar dados do cliente

Para começar, abra o Power BI Desktop e carregue o arquivo CSV (valores separados por vírgulas) que você baixou como parte dos pré-requisitos. Esse arquivo representa um dia inteiro de atividades hipotéticas no fórum de suporte de uma pequena empresa fictícia.

Observação

O Power BI pode usar dados de uma ampla variedade de fontes com base na Web, como os bancos de dados SQL. Veja a documentação do Power Query para obter mais informações.

Na janela principal do Power BI Desktop, selecione a faixa de opções Início. No grupo Dados externos da faixa de opções, abra o menu suspenso Obter dados e selecione Texto/CSV.

The Get Data button

O diálogo Abrir é exibido. Navegue até sua pasta de Downloads ou até a pasta em que você baixou o arquivo CSV. Selecione o nome do arquivo e, em seguida, o botão Abrir. O diálogo de importação do CSV é exibido.

The CSV Import dialog

O diálogo de importação do CSV permite verificar se o Power BI Desktop detectou conjunto de caracteres, delimitadores, linhas de cabeçalho e tipos de coluna corretamente. Todas essas informações estão corretas, portanto, selecione Carregar.

Para ver os dados carregados, clique no botão Exibição de Dados na borda esquerda do workspace do Power BI. Uma tabela é aberta com os dados, como ocorre no Microsoft Excel.

The initial view of the imported data

Preparar os dados

Talvez seja necessário transformar seus dados no Power BI Desktop antes que eles possam ser processados pela Extração de Frases-chave.

Os dados de exemplo contêm uma coluna subject e uma coluna comment. Com a função Mesclar colunas no Power BI Desktop, é possível extrair frases-chave dos dados em ambas as colunas, em vez de apenas da coluna comment.

No Power BI Desktop, selecione a faixa de opções Início. No grupo Dados externos, selecione Editar consultas.

The External Data group in Home ribbon

Selecione FabrikamComments na lista Consultas do lado esquerdo da janela, se ainda não estiver selecionado.

Agora, selecione as colunas subject e comment na tabela. Talvez seja necessário rolar horizontalmente para ver essas colunas. Primeiro, clique no cabeçalho da coluna subject, em seguida, mantenha pressionada a tecla Control e clique no cabeçalho da coluna comment.

Selecting fields to be merged

Selecione a faixa de opções Transformar. No grupo Colunas de Texto da faixa de opções, selecione Mesclar Colunas. O diálogo Mesclar Colunas é exibido.

Merging fields using the Merge Columns dialog

Na caixa de diálogo Mesclar Colunas, escolha Tab como separador e selecione OK.

Você também pode considerar a filtragem de mensagens em branco usando o filtro Remover Vazio ou removendo os caracteres que não podem ser impressos usando a transformação Limpar. Se seus dados contiverem uma coluna como a coluna spamscore no arquivo de exemplo, será possível ignorar comentários "spam" usando um Filtro de número.

Compreender a API

A Extração de Frases-chave pode processar até mil documentos de texto por solicitação HTTP. O Power BI prefere lidar com um registro por vez; portanto, neste tutorial, suas chamadas à API incluirão apenas um único documento cada. A API de Frases-chave requer os campos a seguir para cada documento que está sendo processado.

Campo Descrição
id Um identificador exclusivo para este documento dentro da solicitação. A resposta também contém esse campo. Dessa forma, se você processar mais de um documento, poderá associar facilmente as frases-chave extraídas ao documento que as originou. Neste tutorial, como você está processando apenas um documento por solicitação, é possível embutir o valor de id em código para ser o mesmo para cada solicitação.
text O texto a ser processado. O valor desse campo é proveniente da coluna Merged que você criou na seção anterior, que contém o texto de comentário e a linha do assunto combinados. A API de Frases-Chave exige que esses dados tenham menos de 5.120 caracteres.
language O código para o idioma natural em que o documento foi escrito. Todas as mensagens nos dados de exemplo estão em inglês; portanto, é possível embutir o valor en em código para esse campo.

Criar uma função personalizada

Agora você está pronto para criar a função personalizada que integrará o Power BI e a Extração de Frases-chave. A função recebe o texto a ser processado como um parâmetro. Ela converte os dados de e para o formato JSON necessário e realiza a solicitação HTTP para a API de Frases-chave. A função analisa a resposta da API e retorna uma cadeia de caracteres que contém uma lista separada por vírgulas das frases-chave extraídas.

Observação

As funções personalizadas do Power BI Desktop são escritas na linguagem de fórmula Power Query M, ou sua forma abreviada "M”. M é uma linguagem de programação funcional com base em F#. Você não precisa ser um programador para concluir este tutorial, pois o código necessário está incluído abaixo.

No Power BI Desktop, certifique-se de ainda estar na janela do Editor de consultas. Se não estiver, selecione a faixa de opções Início e, no grupo Dados externos, selecione Editar consultas.

Agora, na faixa de opções Início, no grupo Nova Consulta, abra o menu suspenso Nova fonte e selecione Consulta em branco.

Uma nova consulta, nomeada inicialmente como Query1, é exibida na lista de consultas. Clique duas vezes nessa entrada e nomeie-a KeyPhrases.

Agora, na faixa de opções Início, no grupo Consulta, selecione Editor Avançado para abrir a janela Editor Avançado. Exclua o código que já está nessa janela e cole o código a seguir.

Observação

Substitua o ponto de extremidade do exemplo abaixo (que contém <your-custom-subdomain>) pelo ponto de extremidade gerado para seu recurso de Linguagem. É possível encontrar esse ponto de extremidade entrando no portal do Azure, navegando para o eu recurso e selecionando Chave e ponto de extremidade.

// Returns key phrases from the text in a comma-separated list
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com/text/analytics" & "/v3.0/keyPhrases",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    keyphrases  = Text.Lower(Text.Combine(jsonresp[documents]{0}[keyPhrases], ", "))
in  keyphrases

Substitua YOUR_API_KEY_HERE pela chave do recurso de Linguagem. Também é possível encontrar essa chave entrando no portal do Azure, navegando para o recurso Linguagem e selecionando a página Chave e ponto de extremidade. Deixe as aspas antes e após a chave. Em seguida, selecione Concluído.

Usar a função personalizada

Agora é possível usar a função personalizada para extrair as frases-chave de cada um dos comentários de clientes e armazená-las em uma nova coluna na tabela.

No Power BI Desktop, na janela do Editor de Consultas, retorne para a consulta FabrikamComments. Selecione a faixa de opções Adicionar coluna. No grupo Geral, selecione Chamar Função Personalizada .

Invoke Custom Function button

A caixa de diálogo Invocar função personalizada é exibida. No Novo nome da coluna, insira keyphrases. Na Consulta de função, selecione a função personalizada que você criou, KeyPhrases.

Um novo campo é exibido na caixa de diálogo texto (opcional) . Este campo está solicitando qual coluna queremos usar para fornecer valores para o parâmetro text da API de Frases-chave. (Lembre-se de que você já embutiu os valores em código para os parâmetros language e id.) Selecione Merged (a coluna que criamos anteriormente mesclando os campos de assunto e mensagem) no menu suspenso.

Invoking a custom function

Por fim, selecione OK.

Se tudo estiver pronto, o Power BI chamará sua função personalizada uma vez para cada linha na tabela. Ela envia as consultas para a API de Frases-chave e adiciona uma nova coluna à tabela para armazenar os resultados. Mas antes que isso ocorra, talvez seja necessário especificar as configurações de autenticação e privacidade.

Autenticação e privacidade

Após fechar a caixa de diálogo Invocar função personalizada, uma faixa poderá ser exibida solicitando que você especifique como se conectar à API de Frases-chave.

credentials banner

Selecione Editar Credenciais, certifique-se de que Anonymous esteja selecionado na caixa de diálogo e, em seguida, selecione Conectar.

Observação

Você seleciona Anonymous porque a Extração de Frases-chave autentica solicitações usando sua chave de acesso para que o Power BI não precise fornecer credenciais para a solicitação HTTP em si.

setting authentication to anonymous

Se você vê a faixa Editar Credenciais mesmo depois de escolher o acesso anônimo, é possível que tenha se esquecido de colar sua chave de acesso de Linguagem no código na KeyPhrasesfunção personalizada.

Em seguida, uma faixa pode aparecer solicitando que você forneça informações sobre a privacidade de suas fontes de dados.

privacy banner

Selecione Continuar e escolha Public para cada uma das fontes de dados na caixa de diálogo. Em seguida, selecione Salvar.

setting data source privacy

Criar a nuvem de palavras

Depois de lidar com os banners que aparecerem, selecione Fechar e Aplicar na faixa de opções Início para fechar o Editor de Consultas.

O Power BI Desktop leva algum tempo para fazer as solicitações HTTP necessárias. Para cada linha na tabela, a nova coluna keyphrases contém as frases-chave detectadas no texto pela API de frases-chave.

Agora você usará esta coluna para gerar uma nuvem de palavras. Para começar, clique no botão Relatório na janela principal do Power BI Desktop à esquerda do workspace.

Observação

Por que usar frases-chave extraídas para gerar uma nuvem de palavras em vez de usar o texto completo de cada comentário? As frases-chave nos fornecem as palavras importantes dos comentários dos clientes, não apenas as palavras mais comuns. Além disso, o dimensionamento das palavras na nuvem gerada não é distorcido pelo uso frequente de uma palavra em um número relativamente pequeno de comentários.

Se você ainda não tem o objeto visual personalizado da Nuvem de Palavras instalado, instale-o. No painel Visualizações à direita do workspace, clique nas reticências ( ... ) e escolha Importar do Mercado. Se a palavra "nuvem" não estiver entre as ferramentas de visualização exibidas na lista, você poderá pesquisar por "nuvem" e clicar no botão Adicionar ao lado do Visual de Nuvem de Palavras. O Power BI instala o objeto visual Nuvem de Palavras e avisa que ele foi instalado com êxito.

adding a custom visual

Primeiro, clique no ícone da Nuvem de Palavras no painel Visualizações.

Word Cloud icon in visualizations panel

Um novo relatório aparece no workspace. Arraste o campo keyphrases do painel Campos para o campo Categoria no painel Visualizações. A nuvem de palavras é exibida no relatório.

Agora, alterne para a página Formato do painel Visualizações. Na categoria Palavras irrelevantes, ative Palavras Irrelevantes Padrão para eliminar palavras curtas e comuns como "de" da nuvem. No entanto, como estamos visualizando frases-chave, elas talvez não contenham palavras de parada.

activating default stop words

Um pouco mais abaixo no painel, desative Girar Texto e Título.

activate focus mode

Selecione a ferramenta Modo de foco no relatório para ter uma visão melhor da nuvem de palavras. A ferramenta expande a nuvem de palavras para preencher o workspace inteiro, conforme mostrado abaixo.

A Word Cloud

Usando outros recursos

O Linguagem de IA do Azure também fornece análise de sentimento e detecção de idioma. A detecção de idioma será particularmente útil se os comentários do seu cliente não estiverem em inglês.

Essas outras APIs são semelhantes à API de frases-chave. Isso significa que é possível integrá-las ao Power BI Desktop usando funções personalizadas quase idênticas à que você criou neste tutorial. Basta criar uma consulta em branco e colar o código apropriado abaixo no Editor Avançado, como feito anteriormente. (Não se esqueça da chave de acesso!) Em seguida, como feito anteriormente, use a função para adicionar uma nova coluna à tabela.

A função Análise de Sentimento abaixo retorna um rótulo que indica o grau de positividade do sentimento expressado no texto.

// Returns the sentiment label of the text, for example, positive, negative or mixed.
(text) => let
    apikey = "YOUR_API_KEY_HERE",
    endpoint = "<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/sentiment",
    jsontext = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
    bytesbody = Text.ToBinary(jsonbody),
    headers = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp = Json.Document(bytesresp),
    sentiment   = jsonresp[documents]{0}[sentiment] 
    in sentiment

Aqui estão duas versões de uma função Detecção de Idioma. A primeira retorna o código de idioma ISO (por exemplo, en para inglês) e a segunda retorna o nome "amigável" (por exemplo, English). Você deve notar que a última linha do corpo é diferente entre as duas versões.

// Returns the two-letter language code (for example, 'en' for English) of the text
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/languages",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    language    = jsonresp [documents]{0}[detectedLanguage] [name] in language 
// Returns the name (for example, 'English') of the language in which the text is written
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/languages",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    language    =jsonresp [documents]{0}[detectedLanguage] [name] in language 

Por fim, aqui está uma variante da função Frases-chave já apresentada que retorna as frases como um objeto de lista, em vez de uma única cadeia de caracteres de frases separada por vírgulas.

Observação

O retorno de uma única cadeia de caracteres simplificou nosso exemplo de nuvem de palavras. Por outro lado, o formato de lista é mais flexível para funcionar com as frases retornadas no Power BI. Você pode manipular objetos de lista no Power BI Desktop usando o grupo Coluna Estruturada na faixa de opções Transformação do Editor de Consultas.

// Returns key phrases from the text as a list object
(text) => let
    apikey      = "YOUR_API_KEY_HERE",
    endpoint    = "https://<your-custom-subdomain>.cognitiveservices.azure.com" & "/text/analytics/v3.1/keyPhrases",
    jsontext    = Text.FromBinary(Json.FromValue(Text.Start(Text.Trim(text), 5000))),
    jsonbody    = "{ documents: [ { language: ""en"", id: ""0"", text: " & jsontext & " } ] }",
    bytesbody   = Text.ToBinary(jsonbody),
    headers     = [#"Ocp-Apim-Subscription-Key" = apikey],
    bytesresp   = Web.Contents(endpoint, [Headers=headers, Content=bytesbody]),
    jsonresp    = Json.Document(bytesresp),
    keyphrases  = jsonresp[documents]{0}[keyPhrases]
in  keyphrases

Próximas etapas

Saiba mais sobre a Linguagem de IA do Azure, a linguagem da fórmula do Power Query M ou o do Power BI.