Esercitazione: Estrarre frasi chiave dal testo archiviato in Power BI

Microsoft Power BI Desktop è un'applicazione gratuita che consente di connettersi ai dati e di trasformarli e visualizzarli. L'estrazione di frasi chiave, una delle funzionalità del linguaggio di intelligenza artificiale di Azure, fornisce l'elaborazione del linguaggio naturale. In presenza di testo non elaborato e non strutturato, è in grado di estrarre le frasi più importanti, analizzare il sentiment e identificare le entità note, come ad esempio i marchi. Se combinati, questi strumenti permettono di visualizzare rapidamente ciò di cui parlano i clienti e che cosa ne pensano.

Questa esercitazione illustra come:

  • Usare Power BI Desktop per importare e trasformare i dati
  • Creare una funzione personalizzata in Power BI Desktop
  • Integrare Power BI Desktop con la funzionalità Estrazione frasi chiave del linguaggio di intelligenza artificiale di Azure
  • Usare l'estrazione di frasi chiave per ottenere le frasi più importanti dai commenti e suggerimenti dei clienti
  • Creare una nuvola di parole dal feedback dei clienti

Prerequisiti

Caricare i dati dei clienti

Per iniziare, aprire Power BI Desktop e caricare il file con valori delimitati da virgole (CSV) scaricato come parte dei prerequisiti. Questo file rappresenta un giorno di attività ipotetica nel forum di supporto di una piccola azienda fittizia.

Nota

Power BI può usare i dati di un'ampia gamma di origini basate sul Web, ad esempio i database SQL. Per altre informazioni, vedere la documentazione di Power Query.

Nella finestra principale di Power BI Desktop selezionare Home sulla barra multifunzione. Nel gruppo Dati esterni sulla barra multifunzione aprire il menu a discesa Dati e selezionare Testo/CSV.

The Get Data button

Verrà visualizzata la finestra di dialogo Apri. Passare alla cartella Download o alla cartella in cui è stato scaricato il file CSV. Selezionare il nome del file, quindi il pulsante Apri . Verrà visualizzata la finestra di dialogo di importazione del file CSV.

The CSV Import dialog

La finestra di dialogo di importazione del file CSV consente di verificare che Power BI Desktop abbia rilevato correttamente il set di caratteri, il delimitatore, le intestazioni di riga e i tipi di colonne. Queste informazioni sono tutte corrette, quindi selezionare Carica.

Per visualizzare i dati caricati, fare clic sul pulsante Vista dati sul bordo sinistro dell'area di lavoro di Power BI. Verrà visualizzata una tabella contenente i dati, come in Microsoft Excel.

The initial view of the imported data

Preparare i dati

Potrebbe essere necessario trasformare i dati in Power BI Desktop prima che sia pronto per l'elaborazione da parte dell'estrazione di frasi chiave.

I dati di esempio contengono una colonna subject e una colonna comment. Usando la funzione Merge di colonne di Power BI Desktop è possibile estrarre le frasi chiave dai dati in entrambe queste colonne, invece che solo dalla colonna comment.

In Power BI Desktop selezionare Home sulla barra multifunzione. Nel gruppo Dati esterni selezionare Modifica query.

The External Data group in Home ribbon

Selezionare FabrikamComments nell'elenco Query sul lato sinistro della finestra, se non è già selezionato.

Ora selezionare entrambe le colonne subject e comment nella tabella. Potrebbe essere necessario scorrere orizzontalmente per visualizzare le colonne. Fare prima clic sull'intestazione di colonna subject, quindi tenere premuto il tasto CTRL e fare clic sull'intestazione di colonna comment.

Selecting fields to be merged

Selezionare Trasforma sulla barra multifunzione. Nel gruppo Colonne di testo della barra multifunzione selezionare Unisci colonne. Verrà visualizzata la finestra di dialogo Merge di colonne.

Merging fields using the Merge Columns dialog

Nella finestra di dialogo Merge colonne scegliere Tab come separatore, quindi selezionare OK.

È anche possibile escludere i messaggi vuoti usando il filtro Rimuovi vuoti oppure rimuovere i caratteri non stampabili tramite la trasformazione Pulisci. Se i dati contengono una colonna come la colonna spamscore del file di esempio, è possibile ignorare i commenti "indesiderati" usando un filtro Numero.

Informazioni sull'API

Estrazione frasi chiave può elaborare fino a mille documenti di testo per ogni richiesta HTTP. Power BI preferisce gestire i record uno alla volta, quindi in questa esercitazione le chiamate all'API conterranno ognuna un solo documento. L'API Frasi chiave richiede i campi seguenti per l'elaborazione di ogni documento.

Campo Descrizione
id Identificatore univoco per il documento nella richiesta. Anche la risposta contiene questo campo. In questo modo, se si elaborano più documenti, è possibile associare facilmente le frasi chiave estratte al documento da cui provengono. Dato che in questa esercitazione si sta elaborando un solo documento per richiesta, è possibile impostare come hardcoded il valore di id in modo che sia lo stesso per ogni richiesta.
text Testo da elaborare. Il valore di questo campo proviene dalla colonna Merged creata nella sezione precedente, che contiene la riga dell'oggetto combinata e il testo del commento. L'API Frasi chiave richiede che la lunghezza dei dati non superi 5.120 caratteri.
language Codice del linguaggio naturale in cui è scritto il documento. Tutti i messaggi nei dati di esempio sono in inglese, quindi è possibile impostare come hardcoded il valore en per questo campo.

Creare una funzione personalizzata

A questo momento è possibile creare la funzione personalizzata che integrerà Power BI e Estrazione frasi chiave. La funzione riceve il testo da elaborare come parametro. Converte i dati nel e dal formato JSON necessario e invia la richiesta HTTP all'API Frasi chiave. La funzione analizza quindi la risposta dell'API e restituisce una stringa che contiene un elenco delimitato da virgole delle frasi chiave estratte.

Nota

Le funzioni personalizzate di Power BI Desktop sono scritte nella lingua della formula di Power Query M, in breve semplicemente "M". M è un linguaggio di programmazione funzionale basato su F#. Non è necessario essere un programmatore per completare questa esercitazione. Tutto il codice necessario è riportato sotto.

In Power BI Desktop verificare che sia ancora aperta la finestra Editor di query. In caso contrario, selezionare la barra multifunzione Home e nel gruppo Dati esterni selezionare Modifica query.

Sempre nella scheda Home sulla barra multifunzione, nel gruppo Nuova query aprire il menu a discesa Nuova origine e selezionare Query vuota.

Verrà visualizzata una nuova query, inizialmente denominata Query1, nell'elenco Query. Fare doppio clic su questa voce e assegnarle il nome KeyPhrases.

Nella barra multifunzione Home, nel gruppo Query, selezionare Editor avanzato per aprire la finestra Editor avanzato. Eliminare il codice già presente nella finestra e incollare il codice seguente.

Nota

Sostituire l'endpoint di esempio seguente (contenente <your-custom-subdomain>) con l'endpoint generato per la risorsa Lingua. È possibile trovare questo endpoint accedendo al portale di Azure, passando alla risorsa e selezionando Chiave ed endpoint.

// 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

Sostituire YOUR_API_KEY_HERE con la chiave della risorsa lingua. È anche possibile trovare questa chiave accedendo al portale di Azure, passando alla risorsa Lingua e selezionando la pagina Chiave ed endpoint. Assicurarsi di lasciare le virgolette prima e dopo la chiave. Quindi seleziona Fatto.

Usare la funzione personalizzata

Ora è possibile usare la funzione personalizzata per estrarre le frasi chiave da ogni commento dei clienti e archiviarle in una nuova colonna nella tabella.

Nella finestra Editor di query di Power BI Desktop tornare alla query FabrikamComments. Selezionare Aggiungi colonna sulla barra multifunzione. Nel gruppo Generale selezionare Richiama funzione personalizzata.

Invoke Custom Function button

Viene visualizzata la finestra di dialogo Richiama funzione personalizzata. In Nome nuova colonna immettere keyphrases. In Query della funzione selezionare la funzione personalizzata creata, KeyPhrases.

Nella finestra di dialogo viene visualizzato un nuovo campo, testo (facoltativo). In questo campo occorre specificare la colonna che si vuole usare per fornire i valori per il parametro text dell'API Frasi chiave. Tenere presente che sono già stati hardcoded i valori per i language parametri e id . Selezionare Merged (la colonna creata in precedenza unendo i campi oggetto e messaggio) dal menu a discesa.

Invoking a custom function

Infine, selezionare OK.

Se è tutto corretto, Power BI chiama la funzione personalizzata una volta per ogni riga della tabella. Invia le query all'API Frasi chiave e aggiunge alla tabella una nuova colonna in cui archiviare i risultati. Prima di questa fase, potrebbe essere necessario specificare le impostazioni di autenticazione e privacy.

Autenticazione e privacy

Dopo aver chiuso la finestra di dialogo Richiama funzione personalizzata, potrebbe essere visualizzato un banner in cui viene chiesto di specificare come connettersi all'API Frasi chiave.

credentials banner

Selezionare Modifica credenziali, assicurarsi che Anonymous sia selezionato nella finestra di dialogo e quindi selezionare Connessione.

Nota

È possibile selezionare Anonymous perché l'estrazione frasi chiave autentica le richieste usando la chiave di accesso, quindi Power BI non deve fornire le credenziali per la richiesta HTTP stessa.

setting authentication to anonymous

Se viene visualizzato il banner Modifica credenziali anche dopo aver scelto l'accesso anonimo, potrebbe essere stato dimenticato di incollare la chiave della risorsa Lingua nel codice nella KeyPhrasesfunzione personalizzata.

Successivamente, potrebbe essere visualizzato un banner che chiede di fornire informazioni sul livello di privacy delle origini dati.

privacy banner

Selezionare Continua e scegliere Public per ognuna delle origini dati nella finestra di dialogo. Quindi selezionare Salva.

setting data source privacy

Creare la nuvola di parole

Dopo aver affrontato i banner visualizzati, selezionare Chiudi e applica nella barra multifunzione Home per chiudere il Editor di query.

Power BI Desktop impiega alcuni istanti per effettuare le richieste HTTP necessarie. Per ogni riga nella tabella, la nuova colonna keyphrases contiene le frasi chiave rilevate nel testo dall'API Frasi chiave.

Questa colonna verrà ora usata per generare una nuvola di parole. Per iniziare, fare clic sul pulsante Report nella finestra principale di Power BI Desktop nella parte sinistra dell'area di lavoro.

Nota

Perché usare le frasi chiave estratte per generare una nuvola di parole anziché usare il testo completo di ogni commento? Le frasi chiave forniscono le parole importanti dei commenti del cliente, non solo le parole più comuni. Inoltre, le dimensioni delle parole nella nuvola risultante non sono distorte dall'uso frequente di una parola in un numero relativamente piccolo di commenti.

Se l'oggetto visivo personalizzato Word Cloud non è già installato, installarlo. Nel pannello Visualizzazioni a destra dell'area di lavoro fare clic sui tre puntini (...) e scegliere Importa da mercato. Se la parola "cloud" non è tra gli strumenti di visualizzazione visualizzati nell'elenco, è possibile cercare "cloud" e fare clic sul pulsante Aggiungi accanto all'oggetto visivo Word Cloud. Power BI installa l'oggetto visivo Word Cloud e notifica l'avvenuta installazione.

adding a custom visual

Fare clic sull'icona Word Cloud nel pannello Visualizzazioni.

Word Cloud icon in visualizations panel

Verrà visualizzato un nuovo report nell'area di lavoro. Trascinare il campo keyphrases dal pannello Campi nel campo Categoria nel pannello Visualizzazioni. La nuvola di parole verrà visualizzata all'interno del report.

Passare quindi alla pagina Formato del pannello Visualizzazioni. Nella categoria Parole non significative, attivare Parole non significative predefinite per eliminare le parole brevi e comuni, ad esempio articoli e preposizioni, dalla nuvola. Tuttavia, poiché si stanno visualizzando frasi chiave, potrebbero non contenere parole non significative.

activating default stop words

Poco più in basso in questo pannello, disattivare Ruota il testo e Titolo.

activate focus mode

Selezionare lo strumento Modalità messa a fuoco nel report per ottenere un'occhiata migliore al cloud delle parole. Lo strumento espande la nuvola adattandola all'intera area di lavoro, come mostrato sotto.

A Word Cloud

Uso di altre funzionalità

Il linguaggio di intelligenza artificiale di Azure fornisce anche l'analisi del sentiment e il rilevamento della lingua. Il rilevamento della lingua è particolarmente utile se i commenti dei clienti non sono tutti in lingua inglese.

Entrambe queste altre API sono simili all'API Frasi chiave. Questo significa che è possibile integrarle con Power BI Desktop usando funzioni personalizzate quasi identiche a quella creata in questa esercitazione. È sufficiente creare una query vuota e incollare il codice seguente appropriato nell'Editor avanzato, esattamente come in uno dei passaggi precedenti. (Non dimenticare la chiave di accesso!) Quindi, come in precedenza, usare la funzione per aggiungere una nuova colonna alla tabella.

La funzione Analisi del sentiment seguente restituisce un'etichetta che indica il sentiment positivo espresso nel testo.

// 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

Di seguito sono presentate due versioni di una funzione di Rilevamento lingua. La prima restituisce il codice lingua ISO, ad esempio en per la lingua inglese, mentre la seconda restituisce il nome "descrittivo", ad esempio English. È possibile notare che nelle due versioni varia solo l'ultima riga del corpo.

// 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 

Infine, ecco una variante della funzione Frasi chiave già presentata che restituisce le frasi come un oggetto elenco, anziché come una singola stringa di frasi delimitate da virgole.

Nota

La restituzione di una singola stringa risultava più facile ai fini dell'esempio della nuvola di parole. Un elenco, tuttavia, è un formato più flessibile da usare con le frasi restituite in Power BI. È possibile modificare gli oggetti elenco in Power BI Desktop tramite il gruppo Colonna strutturata nella barra multifunzione Trasforma dell'Editor di query.

// 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

Passaggi successivi

Altre informazioni sul linguaggio di intelligenza artificiale di Azure, sul linguaggio delle formule M di Power Query o su Power BI.