Condividi tramite


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à di Lingua di Azure AI, 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 di Lingua di Azure AI
  • Usare l'Estrazione frasi chiave per ottenere le frasi più importanti dai feedback 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 in Prerequisiti. Questo file rappresenta un giorno di attività ipotetica nel forum di supporto di una piccola azienda fittizia.

Nota

Power BI può utilizzare dati provenienti da un'ampia gamma di origini basate sul web, come 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.

Pulsante Ottieni dati

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

Finestra di dialogo di importazione del file CSV

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. Le 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.

Visualizzazione iniziale dei dati importati

Preparare i dati

Potrebbe essere necessario trasformare i dati in Power BI Desktop prima che siano pronti per essere elaborati da Estrazione 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.

Gruppo Dati esterni nella scheda Home della barra multifunzione

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.

Selezione dei campi da unire

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

Unione campi con la finestra di dialogo Unisci di colonne

Nella finestra di dialogo Unisci colonne scegliere Tab come separatore e 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 migliaia di documenti di testo per 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 punto è possibile creare la funzione personalizzata che integrerà Power BI ed 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. Se non è già stato fatto, selezionare la scheda Home sulla barra multifunzione, quindi 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.

Ancora nella scheda Home sulla barra multifunzione, 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. Per trovare questo endpoint, accedere al portale di Azure, arrivare alla propria risorsa e selezionare 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. Per trovare questa chiave, accedere al portale di Azure, arrivare alla propria risorsa e selezionare 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.

Pulsante Richiama funzione personalizzata

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 i valori per i parametri language e id sono già stati impostati come hardcoded. Selezionare Merged (la colonna creata in precedenza tramite il merge dei campi dell'oggetto e del messaggio) dal menu a discesa.

Richiamo di una funzione personalizzata

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.

banner credenziali

Selezionare Modifica credenziali, assicurarsi che l'opzione Anonymous sia selezionata nella finestra di dialogo e quindi selezionare Connetti.

Nota

Occorre selezionare Anonymous in quanto Estrazione frasi chiave autentica le richieste tramite la sua chiave di accesso, in modo che Power BI non debba specificare le credenziali per la richiesta HTTP stessa.

impostazione dell'autenticazione su anonima

Se viene visualizzato il banner Modifica credenziali anche dopo aver scelto l'accesso anonimo, è possibile che si sia 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.

banner privacy

Selezionare Continua e scegliere Public per ogni origine dati visualizzata nella finestra di dialogo. Quindi selezionare Salva.

impostazione della privacy dell'origine dati

Creare la nuvola di parole

Dopo aver gestito gli eventuali banner visualizzati, selezionare Chiudi e applica nella scheda Home della barra multifunzione per chiudere l'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 nella parte destra dell'area di lavoro, fare clic sui puntini di sospensione (...) e scegliere Importa dal 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.

aggiunta di un oggetto visivo personalizzato

Fare clic sull'icona Word Cloud nel pannello Visualizzazioni.

Icona della nuvola di parole nel pannello Visualizzazioni

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 d’ordine.

attivazione delle parole non significative predefinite

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

attivare la modalità messa a fuoco

Selezionare lo strumento Modalità focus nel report per osservare più attentamente la nuvola di parole. Lo strumento espande la nuvola adattandola all'intera area di lavoro, come mostrato sotto.

una nuvola di parole

Utilizzo di altre funzionalità

Lingua di Azure AI fornisce anche l'analisi della valutazione e il rilevamento del linguaggio. 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 nella procedura illustrata in questa esercitazione, usare la funzione per aggiungere una nuova colonna alla tabella.

La funzione Analisi del sentiment seguente restituisce un punteggio che indica il livello di positività della valutazione 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 su Lingua di Azure AI, sulla lingua della formula M di Power Query o su Power BI.