Share via


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

O Microsoft Power BI Desktop é uma aplicação gratuita que lhe permite ligar-se, transformar e visualizar os seus dados. A extração de frases-chave, um dos recursos da Linguagem de IA do Azure, fornece processamento de linguagem natural. Ao ser-lhe dado texto bruto não estruturado, ele consegue extrair as expressões mais importantes, analisar sentimentos e identificar entidades conhecidas, como marcas. Em conjunto, estas ferramentas podem ajudá-lo a ver rapidamente aquilo de que os seus clientes estão a falar e como se sentem em relação a esse assunto.

Neste tutorial, irá aprender a:

  • Utilizar o Power BI Desktop para importar e transformar dados
  • Criar uma função personalizada no Power BI Desktop
  • Integrar o Power BI Desktop com o recurso Extração de Frases-Chave da Linguagem de IA do Azure
  • Use a extração de frases-chave para obter as frases mais importantes dos comentários dos clientes
  • Criar uma nuvem de palavras a partir dos comentários dos clientes

Pré-requisitos

  • Do Microsoft Power BI Desktop. Transfira sem custos.
  • Uma conta do Microsoft Azure. Crie uma conta gratuita ou inicie sessão.
  • Um recurso linguístico. Se você não tiver um, você pode criar um.
  • A chave de recurso de idioma que foi gerada para você durante a inscrição.
  • De comentários de clientes. Pode utilizar os nossos dados de exemplo ou seus próprios dados. Este tutorial parte do princípio de que está a utilizar os nossos dados de exemplo.

Carregar dados do cliente

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

Nota

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

Na janela principal do Power BI Desktop, selecione o friso Base. No grupo do friso Dados externos, abra o menu pendente Obter Dados e selecione Texto/CSV.

The Get Data button

É apresentada a caixa de diálogo Open (Abrir). Navegue até a pasta Downloads ou até a pasta onde você baixou o arquivo CSV. Selecione o nome do arquivo e, em seguida, o botão Abrir . É apresentada a caixa de diálogo de importação do CSV.

The CSV Import dialog

A caixa de diálogo de importação do CSV permite-lhe verificar se o Power BI Desktop detetou corretamente o conjunto de carateres, o delimitador, as linhas de cabeçalho e os tipos de colunas. Essas informações estão todas corretas, então selecione Carregar.

Para ver os dados carregados, clique no botão Vista de Dados, na margem esquerda da área de trabalho do Power BI. É aberta uma tabela que contém os dados, como 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 estejam prontos para serem processados pela Extração de Frase-Chave.

Os dados de exemplo contêm uma coluna subject e uma coluna comment. Com a função Intercalar Colunas no Power BI Desktop, pode extrair expressões-chave dos dados nas duas colunas, em vez de apenas da coluna comment.

No Power BI Desktop, selecione o friso Base. No grupo Dados externos, selecione Editar consultas.

The External Data group in Home ribbon

Selecione FabrikamComments na lista Consultas, no lado esquerdo da janela, caso ainda não esteja selecionado.

Agora, selecione as colunas subject e comment na tabela. Poderá ter de se deslocar na horizontal para ver estas colunas. Primeiro, clique no cabeçalho de coluna subject, mantenha premida a tecla Control e clique no cabeçalho de coluna comment.

Selecting fields to be merged

Selecione o friso Transformar. No grupo Colunas de Texto da faixa de opções, selecione Mesclar Colunas. É apresentada a caixa de diálogo Merge Columns (Unir Colunas).

Merging fields using the Merge Columns dialog

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

Também pode considerar filtrar e deixar de fora as mensagens em branco ao utilizar o filtro Remover Vazio ou remover os carateres que não podem ser impressos com a transformação Limpar. Se os seus dados tiverem uma coluna como a coluna spamscore no ficheiro de exemplo, poderá utilizar um filtro Número para ignorar os comentários de “spam”.

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 registos um de cada vez, pelo que, neste tutorial, as nossas chamadas à API vão incluir apenas um documento para cada uma. A API de Expressões-Chave precisa dos seguintes campos para cada documento que está a ser processado.

Campo Descrição
id Um identificador exclusivo para este documento dentro do pedido. A resposta também contém este campo. Desta forma, se processar mais do que um documento, poderá associar facilmente as expressões-chave extraídas ao documento do qual provêm. Neste tutorial, uma vez que está a processar apenas um documento por pedido, pode codificar o valor de id para ser o mesmo para cada pedido.
text O texto que vai ser processado. O valor deste campo é proveniente da coluna Merged que criou na secção anterior, que contém o texto do assunto e o texto do comentário combinados. A API de frases-chave exige que esses dados não tenham mais de 5.120 caracteres.
language O código para o idioma natural em que o documento está escrito. Todas as mensagens nos dados de exemplo estão em inglês, pelo que pode codificar o valor en para este 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 que vai ser processado como parâmetro. Converte os dados de e para o formato JSON necessário e faz o pedido HTTP para a API de Expressões-Chave. Em seguida, a função analisa a resposta da API e devolve uma cadeia que contém uma lista separada por vírgulas das expressões-chave extraídas.

Nota

As funções personalizadas do Power BI Desktop são escritas na linguagem de fórmulas M do Power Query, ou apenas “M”, para abreviar. M é uma linguagem de programação funcional com base em F#. No entanto, não é preciso ser programador para concluir este tutorial. O código necessário está incluído abaixo.

No Power BI Desktop, verifique se que está ainda na janela Editor de Consultas. Se não estiver, selecione a faixa de opções Página Inicial e, no grupo Dados externos, selecione Editar Consultas.

Agora, no friso Base no grupo Nova Consulta, abra o menu pendente Nova Origem e selecione Consulta em Branco.

É apresentada uma consulta nova, inicialmente denominada Query1, na lista Consultas. Faça duplo clique nesta entrada e dê-lhe o nome KeyPhrases.

Agora, na faixa de opções Página Inicial, no grupo Consulta, selecione Editor Avançado para abrir a janela Editor Avançado. Elimine o código que já aparece na janela e cole o código seguinte.

Nota

Substitua o ponto de extremidade de exemplo abaixo (contendo <your-custom-subdomain>) pelo ponto de extremidade gerado para seu recurso de idioma. Você pode encontrar esse ponto de extremidade entrando no portal do Azure, navegando até seu 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 de recurso Idioma. Você também pode encontrar essa chave entrando no portal do Azure, navegando até seu recurso de idioma e selecionando a página Chave e ponto de extremidade. Garanta que deixa as aspas antes e depois da chave. Em seguida, selecione Concluir.

Utilizar a função personalizada

Agora, pode utilizar a função personalizada para extrair expressões-chave de cada um dos comentários do cliente e armazená-las numa nova coluna na tabela.

No Power BI Desktop, na janela do Editor de Consultas, mude novamente para a consulta FabrikamComments. Selecione o friso Adicionar Coluna. No grupo Geral, selecione Invocar função personalizada.

Invoke Custom Function button

É apresentada a caixa de diálogo Invocar Função Personalizada. Em Nome da nova coluna, introduza keyphrases. Em Consulta de função, selecione a função personalizada que criou, KeyPhrases.

Um novo campo é apresentado na caixa de diálogo, text (optional) (texto [opcional]). Este campo está a pedir a coluna que queremos utilizar para indicar valores para o parâmetro text da API de Expressões-Chave. (Lembre-se de que você já codificou os valores para os language parâmetros e id .) Selecione Merged (a coluna que você criou anteriormente mesclando os campos assunto e mensagem) no menu suspenso.

Invoking a custom function

Por fim, selecione OK.

Se tudo estiver pronto, o Power BI chamará a sua função personalizada uma vez para cada linha na tabela. Ele envia as consultas para a API de Expressões-Chave e adiciona uma nova coluna à tabela para armazenar os resultados. Mas antes que isso aconteça, poderá ter de especificar as definições de autenticação e privacidade.

Autenticação e privacidade

Depois de fechar a caixa de diálogo Invocar Função Personalizada, poderá ser apresentada uma faixa a pedir-lhe para especificar como se ligar à API de Expressões-Chave.

credentials banner

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

Nota

Você seleciona Anonymous porque a Extração de Frase de Chave autentica solicitações usando sua chave de acesso, portanto, o Power BI não precisa fornecer credenciais para a própria solicitação HTTP.

setting authentication to anonymous

Se você vir o banner Editar credenciais mesmo depois de escolher o acesso anônimo, talvez tenha esquecido de colar sua chave de recurso de idioma no código na KeyPhrasesfunção personalizada.

De seguida, poderá aparecer uma faixa que pede que indique informações sobre a privacidade das origens de dados.

privacy banner

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

setting data source privacy

Criar a nuvem de palavras

Depois de lidar com os banners exibidos, selecione Fechar & Aplicar na faixa de opções Página Inicial para fechar o Editor de Consultas.

O Power BI Desktop demora alguns momentos a fazer os pedidos HTTP necessários. Em cada linha na tabela, a coluna keyphrases nova contém as expressões-chave que a API Key Phrases detetou no texto.

Agora, irá utilizar esta coluna para gerar uma nuvem de palavras. Para começar a utilizar, clique no botão Relatório na janela principal do Power BI Desktop, à esquerda da área de trabalho.

Nota

Porquê utilizar expressões-chave extraídas para gerar um balão de palavras em vez do texto completo de todos os comentários? As expressões-chave dão-nos as palavras importantes dos comentários dos clientes, não apenas as palavras mais comuns. Além disso, o dimensionamento das palavras no balão resultante não é distorcido pela utilização frequente de uma determinada palavra num número relativamente pequeno de comentários.

Se ainda não tiver o elemento visual Word Cloud instado, instale-o. No painel Visualizações à direita do espaço de trabalho, clique nos três pontos (...) 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 da Nuvem do Word. O Power BI instala o elemento visual Word Cloud (Nuvem de Palavras) e indica-lhe que foi instalado com êxito.

adding a custom visual

Primeiro, clique no ícone Word Cloud, no painel Visualizations (Visualizações).

Word Cloud icon in visualizations panel

É apresentado um relatório novo na área de trabalho. Arraste o campo keyphrases do painel Fields (Campos) para o campo Category (Categoria), no painel Visualizations (Visualizações). O balão de palavras aparece dentro do relatório.

Agora, mude para a página Formato do painel Visualizations (Visualizações). Na categoria Stop Words (Parar Palavras), ative Default Stop Words (Palavras de Paragem Predefinidas) para eliminar palavras pequenas e comuns, como “de”, no balão. No entanto, como estamos visualizando frases-chave, elas podem não conter palavras de parada.

activating default stop words

Um pouco mais abaixo no painel, desative Rotate Text (Rodar Texto) e Title (Título).

activate focus mode

Selecione a ferramenta Modo de foco no relatório para ter uma visão melhor da nossa nuvem de palavras. A ferramenta expande o balão de palavras de modo a que preencha toda a área de trabalho, conforme mostrado abaixo.

A Word Cloud

Usando outros recursos

O Azure AI Language também fornece análise de sentimento e deteção de idioma. A deteção de idioma em particular é útil se os comentários do seu cliente não estão todos em inglês.

Estas duas outras APIs são semelhantes à API de Expressões-Chave. Isto significa que pode integrá-las com o Power BI Desktop através de funções personalizadas que são quase idênticas às que criou neste tutorial. Basta criar uma consulta em branco e colar o código adequado abaixo, no Advanced Editor (Editor Avançado), como fez anteriormente. (Não se esqueça da sua chave de acesso!) Em seguida, como antes, 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 quão positivo é o sentimento expresso 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

Eis duas versões de uma função Language Detection. O primeiro método retorna o código ISO do idioma (por exemplo, en para inglês), enquanto o segundo devolve o nome "amigável" (por exemplo, English). Poderá reparar que apenas a última linha do corpo difere entre ambas as 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, segue-se uma variação da função Key Phrases já apresentada que devolve as expressões como um objeto de lista em vez de uma cadeia única de expressões separadas por vírgulas.

Nota

A devolução de uma única cadeia simplificou o nosso exemplo de balão de palavras. As listas, por sua vez, são um formato mais flexível para trabalhar com as expressões devolvidas no Power BI. Pode utilizar o grupo Structured Column (Coluna Estruturada), no frio Transform (Transformar) do Query Editor (Editor de Consultas), para manipular os objetos de lista.

// 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óximos passos

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