Delen via


Zelfstudie: Sleuteltermen extraheren uit tekst die is opgeslagen in Power BI

Microsoft Power BI Desktop is een gratis toepassing waarmee u verbinding kunt maken met uw gegevens en deze kunt transformeren en visualiseren. Sleuteltermextractie, een van de functies van Azure AI Language, biedt verwerking van natuurlijke taal. Bij onbewerkte ongestructureerde tekst, kan het de belangrijkste woordgroepen extraheren, sentiment analyseren en belangrijke entiteiten identificeren zoals merken. Samen kunnen deze hulpmiddelen u helpen snel te zien waar uw klanten het over hebben en wat ze ervan vinden.

In deze zelfstudie leert u het volgende:

  • Gebruik Power BI Desktop om gegevens te importeren en te transformeren
  • Maak een aangepaste functie Power BI Desktop
  • Power BI Desktop integreren met de functie Sleuteltermextractie van Azure AI Language
  • Sleuteltermextractie gebruiken om de belangrijkste zinnen op te halen uit feedback van klanten
  • We maken ook een woordwolk van klantenfeedback

Vereisten

Laden klantgegevens

Als u wilt beginnen, opent u Power BI Desktop en laadt u het CSV-bestand (door komma's gescheiden waarden) dat u hebt gedownload als onderdeel van de vereisten. Dit bestand vertegenwoordigt een hele dag aan hypothetische activiteit op een ondersteuningsforum van een fictief klein bedrijf.

Notitie

Power BI kan gegevens uit een groot aantal webbronnen, zoals SQL-databases, gebruiken. Zie de Power Query-documentatie voor meer informatie.

Kies in het hoofdvenster van Power BI Desktop het Start lint. In de Externe gegevens groep van het lint, open de Gegevens ophalen vervolgkeuzelijst en selecteer tekst/SCV.

The Get Data button

Het dialoogvenster Openen verschijnt. Navigeer naar de map Downloads of naar de map waarin u het CSV-bestand hebt gedownload. Selecteer de naam van het bestand en vervolgens de knop Openen . Het dialoogvenster CSV-import verschijnt.

The CSV Import dialog

In het dialoogvenster CSV-import kunt u verifiëren dat Power BI Desktop de tekenset, het scheidingsteken, de veldnamenrijen en de kolomtypen correct heeft gedetecteerd. Deze informatie is allemaal juist, dus selecteer Laden.

Om de geladen gegevens te zien, klik op de Gegevensweergave-knop aan de linkerkant van de Power BI-werkruimte. Er wordt een tabel geopend die de gegevens bevat, net zoals in Microsoft Excel.

The initial view of the imported data

De gegevens voorbereiden

Mogelijk moet u uw gegevens transformeren in Power BI Desktop voordat deze klaar zijn om te worden verwerkt door Sleuteltermextractie.

De voorbeeldgegevens bevat een subject kolom en een comment kolom. Met de functie kolommen samenvoegen in Power BI Desktop kunt u sleuteltermen extraheren van de gegevens in beide kolommen, in plaats van alleen de kolom comment.

Kies in Power BI Desktop het Start lint. Selecteer Query's bewerken in de groep Externe gegevens.

The External Data group in Home ribbon

Selecteer FabrikamComments in de lijst Query’s aan de linkerkant van het venster als dit nog niet is geselecteerd.

Selecteer nu zowel de kolom subject als comment in de tabel. U moet mogelijk horizontaal scrollen om deze kolommen te zien. Klik eerst op de kolomkop subject, houd vervolgens de Ctrl-toets ingedrukt en klik op de kolomkop comment.

Selecting fields to be merged

Selecteer het Transformeren-lint. Selecteer Kolommen samenvoegen in de groep Tekstkolommen van het lint. Het dialoogvenster Kolommen samenvoegen verschijnt.

Merging fields using the Merge Columns dialog

Kies Tab in het dialoogvenster Kolommen samenvoegen het scheidingsteken en selecteer VERVOLGENS OK.

U kunt ook overwegen lege berichten te verwijderen via het filter Leeg verwijderen of niet-afdrukbare tekens te verwijderen via de transformatie Opschonen. Als uw gegevens een kolom bevatten zoals de kolom spamscore in het voorbeeldbestand, kunt u ‘spam’-opmerkingen overslaan met behulp van een getalfilter.

De API begrijpen

Sleuteltermextractie kan maximaal duizend tekstdocumenten per HTTP-aanvraag verwerken. Power BI verwerkt records echter liever met één tegelijk, dus zullen in deze zelfstudie uw aanvragen aan de API slechts één document bevatten. De Sleuteltermen-API vereist de volgende velden voor elk document dat wordt verwerkt.

Veld Beschrijving
id Een unieke ID voor dit document in de aanvraag. Het antwoord bevat dit veld ook. Zo kunt u bij het verwerken van meerdere documenten de geëxtraheerde sleuteltermen gemakkelijk koppelen aan het document waaruit ze kwamen. Omdat u in deze zelfstudie één document per aanvraag verwerkt kunt u de waarde van id als harde code invoeren om deze hetzelfde te laten zijn voor elke aanvraag.
text De tekst die moet worden verwerkt. De waarde van dit veld komt uit de kolom Merged die u hebt gemaakt in de vorige sectie, die de gecombineerde onderwerpregel en opmerkingstekst bevat. De Key Phrases-API vereist dat deze gegevens niet langer dan ongeveer 5.120 tekens zijn.
language De code die de natuurlijke taal waarin het document is geschreven. Alle berichten in de voorbeeldgegevens zijn in het Engels, zodat u dit in code kunt zetten met de waarde en voor dit veld.

Maak een aangepaste functie

U bent nu klaar om de aangepaste functie te maken waarmee Power BI en Sleuteltermextractie worden geïntegreerd. De functie ontvangt de te verwerken tekst als een parameter. Het converteert gegevens naar en vanuit het vereiste JSON-formaat en maakt de HTTP-aanvraag naar de Sleuteltermen-API. Deze functie parseert daarna het antwoord van de API en retourneert een tekenreeks die een door komma’s gescheiden lijst met de geëxtraheerde sleuteltermen bevat.

Notitie

Aangepaste Power BI Desktop-functies worden geschreven in de formuletaal Power Query M, of kort gezegd gewoon ‘M’. M is een functionele programmeertaal die op F# is gebaseerd. U hoeft echter geen programmeur te zijn om deze studieles te kunnen voltooien; de benodigde code staat hieronder.

Controleer dat u zich nog steeds bevindt in het venster Query-Editor in Power BI Desktop. Als u dat niet doet, selecteert u het startlint en selecteert u in de groep Externe gegevens query's bewerken.

In het Start-lint, in de groep Nieuwe query, open de vervolgkeuzelijst Nieuwe bron en kies Blanco query.

Er verschijnt een nieuwe query met de initiële naam Query1 in de lijst met query’s. Dubbelklik op deze query en wijzig de naam in KeyPhrases.

Selecteer nu in het lint Start in de groep Query Geavanceerde editor om het venster Geavanceerde editor te openen. Verwijder de code die al in dat venster staat, en plak de volgende code.

Notitie

Vervang het onderstaande voorbeeldeindpunt (met) <your-custom-subdomain>door het eindpunt dat is gegenereerd voor uw taalresource. U vindt dit eindpunt door u aan te melden bij Azure Portal, naar uw resource te navigeren en Sleutel en eindpunt te selecteren.

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

Vervang door YOUR_API_KEY_HERE uw taalresourcesleutel. U kunt deze sleutel ook vinden door u aan te melden bij Azure Portal, naar uw taalresource te navigeren en de pagina Sleutel en eindpunt te selecteren. Zorg dat u de aanhalingstekens voor en na de sleutel laat staan. Selecteer Gereed.

Aangepaste functie gebruiken

We kunnen de aangepaste functie nu gebruiken om de sleuteltermen uit elke klantopmerking op te halen en in een nieuwe kolom in de tabel op te slaan.

In Power BI Desktop, in het venster Query-Editor gaat u terug naar de FabrikamComments query. Selecteer het Kolom toevoegen-lint. Selecteer Aangepaste functie aanroepen in de groep Algemeen.

Invoke Custom Function button

Het dialoogvenster aangepaste functie aanroepen wordt weergegeven. In Nieuwe kolomnaam, voert u keyphrases in. In Functie query, selecteert u de aangepaste functie die u hebt gemaakt, KeyPhrases.

Een nieuw veld wordt weergegeven in het dialoogvenster tekst (optioneel). Dit veld vraagt welke kolom we willen gebruiken voor de waarden van de text parameter van de Sleuteltermen-API. (Houd er rekening mee dat u de waarden voor de language en id parameters al in code hebt vastgelegd.) Selecteer Merged (de kolom die u eerder hebt gemaakt door de onderwerp- en berichtvelden samen te voegen) in de vervolgkeuzelijst.

Invoking a custom function

Selecteer ten slotte OK.

Als alles gereed is, roept Power BI uw aangepaste functie eenmaal voor elke rij in de tabel. Het verzendt de query's naar Sleuteltermen-API en voegt een nieuwe kolom toe aan de tabel voor het opslaan van de resultaten. Maar voordat dat gebeurt, moet u mogelijk verificatie- en privacyinstellingen specificeren.

Verificatie en privacy

Nadat u het dialoogvenster Aangepaste functie aanroepen hebt gesloten, verschijnt er mogelijk een banner waarin u wordt gevraagd op te geven hoe er verbinding moet worden gemaakt met de Sleuteltermen-API.

credentials banner

Selecteer Referenties bewerken, zorg ervoor dat Anonymous deze is geselecteerd in het dialoogvenster en selecteer vervolgens Verbinding maken.

Notitie

U selecteert Anonymous omdat Sleuteltermextractie aanvragen verifieert met behulp van uw toegangssleutel, zodat Power BI geen referenties hoeft op te geven voor de HTTP-aanvraag zelf.

setting authentication to anonymous

Als u de banner Referenties bewerken ziet, zelfs nadat u anonieme toegang hebt gekozen, bent u mogelijk vergeten uw taalresourcesleutel in de code in de KeyPhrasesaangepaste functie te plakken.

Vervolgens verschijnt er mogelijk een banner waarin u wordt gevraagd informatie op te geven over de privacy van uw gegevensbronnen.

privacy banner

Selecteer Doorgaan en kies Public voor elk van de gegevensbronnen in het dialoogvenster. Selecteer vervolgens Opslaan.

setting data source privacy

Maak een woordwolk

Zodra u alle banners hebt behandeld die worden weergegeven, selecteert u Sluiten en toepassen op het lint Start om de Power Query-editor te sluiten.

Het duurt even voordat Power BI Desktop de benodigde HTTP-aanvragen heeft gemaakt. Voor elke rij in de tabel bevat de nieuwe kolom keyphrases de belangrijke woordgroepen die de Key Phrases-API in de tekst heeft gedetecteerd.

Nu gebruikt u deze kolom gebruiken om een woordwolk te genereren. Om aan de slag te gaan, klikt u in het hoofdvenster van Power BI Desktop op de knop Rapport, links van de werkruimte.

Notitie

Waarom zou u geëxtraheerde belangrijke woordgroepen gebruiken om een woordwolk te genereren, in plaats van de volledige tekst van elke opmerking? De belangrijke woordgroepen bieden ons de belangrijke woorden uit onze klantopmerkingen, niet alleen de meest voorkomende woorden. Bovendien is de woordgrootte in de resulterende wolk niet vertekend door het veelvuldig gebruik van een woord in een relatief klein aantal opmerkingen.

Als de aangepaste visual Word Cloud nog niet is geïnstalleerd, installeer deze dan. Klik in het deelvenster Visualisaties rechts van de werkruimte op de drie puntjes (...) en kies Importeren vanuit markt. Als het woord 'cloud' zich niet in de weergegeven visualisatiehulpmiddelen in de lijst bevindt, kunt u zoeken naar 'cloud' en op de knop Toevoegen naast de Word Cloud-visual klikken. Power BI installeert de Word Cloud-visual en laat u weten dat deze succesvol is geïnstalleerd.

adding a custom visual

Klik eerst op het Word Cloud-pictogram in het deelvenster Visualisaties.

Word Cloud icon in visualizations panel

Er verschijnt een nieuw rapport in de werkruimte. Sleep het veld keyphrases in het deelvenster Velden naar het veld Categorie in het deelvenster Visualisaties. De woordwolk verschijnt in het rapport.

Ga nu naar de pagina Opmaak van het deelvenster Visualisaties. Schakel Standaard stopwoorden in de categorie Stopwoorden in om korte, algemene woorden zoals ’van’ uit de cloud te elimineren. Omdat we echter sleuteltermen visualiseren, bevatten ze mogelijk geen stopwoorden.

activating default stop words

Schakel even verderop in dit deelvenster Tekst draaien en Titel uit.

activate focus mode

Selecteer het hulpmiddel Focusmodus in het rapport om een beter beeld te krijgen van onze woordwolk. Het hulpmiddel breidt de woordwolk uit om de hele werkruimte te vullen, zoals hieronder weergegeven.

A Word Cloud

Andere functies gebruiken

Azure AI Language biedt ook sentimentanalyse en taaldetectie. Met name de taaldetectie is handig als uw klantenfeedback niet allemaal in het Engels is.

Deze andere API's lijken allebei heel erg op de Sleuteltermen-API. Dit betekent dat u ze kan integreren met Power BI Desktop met behulp van aangepaste functies die bijna identiek zijn aan de functies die u in deze zelfstudie hebt gemaakt. Maak gewoon een lege query en plak de toepasselijke code hieronder in de Geavanceerde editor, net zoals u eerder hebt gedaan. (Vergeet uw toegangssleutel niet!) Gebruik vervolgens, net als voorheen, de functie om een nieuwe kolom toe te voegen aan de tabel.

De onderstaande functie Sentimentanalyse retourneert een label dat aangeeft hoe positief het gevoel in de tekst is.

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

Hier zijn twee versies van een taaldetectiefunctie. De eerste retourneert de ISO-taalcode (bijvoorbeeld en voor het Engels), terwijl de tweede de ‘vriendelijke’ naam (bijvoorbeeld English) retourneert. U merkt wellicht dat alleen de laatste regel van de hoofdtekst verschilt tussen de twee versies.

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

Tot slot is hier een variant van de Key Phrases-functie die we al hebben laten zien, die de woordgroepen retourneert als een lijstobject in plaats van als één tekenreeks met door komma’s gescheiden woordgroepen.

Notitie

Het retourneren van één tekenreeks vereenvoudigde ons voorbeeld van een woordwolk. Een lijst is echter een flexibelere indeling om te werken met de geretourneerde woordgroepen in Power BI. U kunt lijstobjecten in Power BI Desktop bewerken via de groep Gestructureerde kolom op het lint Transformeren in de Query-editor.

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

Volgende stappen

Meer informatie over Azure AI Language, de Power Query M-formuletaal of Power BI.