Tutorial: Extrahieren von Stichwörtern aus einem Text, der in Power BI gespeichert ist

Microsoft Power BI Desktop ist eine kostenlose Anwendung, mit der Sie Ihre Daten vernetzen, transformieren und visualisieren können. Die Schlüsselbegriffserkennung, eine der Funktionen von Azure KI Language, ermöglicht die Verarbeitung natürlicher Sprache. So können aus unformatiertem unstrukturiertem Text die wichtigsten Ausdrücke extrahiert, Standpunkte analysiert und bekannte Entitäten wie Marken identifiziert werden. Zusammen bieten diese Tools Ihnen einen schnellen Überblick über die Gesprächsthemen Ihrer Kunden und ihr Empfinden darüber.

In diesem Tutorial lernen Sie Folgendes:

  • Importieren und Transformieren von Daten mithilfe von Power BI Desktop
  • Erstellen einer benutzerdefinierten Funktion in Power BI Desktop
  • Integrieren Sie Power BI Desktop mit der Schlüsselbegriffserkennung von Azure KI Language
  • Die Text-Extrahierung nutzen, um die wichtigsten Stickworte vom Kundenfeedback zu erhalten
  • Erstellen einer Wortwolke aus Kundenfeedbacks

Voraussetzungen

Laden von Kundendaten

Öffnen Sie zum Einstieg Power BI Desktop, und laden Sie die CSV-Datei herunter, die Sie als Teil von Voraussetzungen heruntergeladen haben. Diese Datei stellt die hypothetische Aktivität eines Tages im Supportforum eines kleinen fiktiven Unternehmen dar.

Hinweis

Power BI kann Daten aus einer Vielzahl von webbasierten Quellen verarbeiten, z.B. SQL-Datenbanken. Weitere Informationen finden Sie in der Power Query-Dokumentation.

Klicken Sie im Hauptfenster von Power BI Desktop auf das Menüband Start. Öffnen Sie in der Gruppe Externe Daten des Menübands das Dropdownmenü Daten abrufen, und klicken Sie auf Text/CSV.

The Get Data button

Das Dialogfeld „Öffnen“ wird angezeigt. Navigieren Sie zum Ordner „Downloads“ oder zu dem Ordner, in den Sie die CSV-Datei heruntergeladen haben. Wählen Sie den Namen der Datei und dann die Schaltfläche Öffnen. Das Dialogfeld „CSV-Dateien importieren“ wird angezeigt.

The CSV Import dialog

Im Dialogfeld „CSV-Dateien importieren“ können sicherstellen, dass Power BI Desktop den Zeichensatz, Trennzeichen, Kopfzeilen und Spaltentypen richtig erkannt hat. Alle Informationen sind korrekt, also wählen Sie Laden.

Zum Anzeigen der geladenen Daten klicken Sie auf die Schaltfläche Datenansicht am linken Rand des Power BI-Arbeitsbereichs. Eine Tabelle mit den Daten wird geöffnet, wie in Microsoft Excel.

The initial view of the imported data

Vorbereiten der Daten

Möglicherweise müssen Sie Ihre Daten im Power-BI-Desktop transformieren, bevor sie von der Text-Extrahierung verarbeitet werden können.

Die Beispieldaten enthalten eine Spalte namens subject und eine Spalte namens comment. Mit der Funktion „Spalten zusammenführen“ in Power BI Desktop können Sie Schlüsselbegriffe aus den Daten in diese beiden Spalten extrahieren statt nur in die Spalte comment.

Klicken Sie in Power BI Desktop auf das Menüband Start. Wählen Sie in der Gruppe Externe DatenAbfragen bearbeiten aus.

The External Data group in Home ribbon

Wählen Sie in der Liste FabrikamCommentsAbfragenauf der linken Seite des Fensters die Option aus, falls sie nicht bereits ausgewählt ist.

Wählen Sie jetzt in der Tabelle die Spalten subject und comment aus. Möglicherweise müssen Sie einen horizontalen Bildlauf durchführen, um diese Spalten anzuzeigen. Klicken Sie zuerst auf die Spaltenüberschrift subject, halten Sie die STRG-Taste gedrückt, und klicken Sie dann auf die Spaltenüberschrift comment.

Selecting fields to be merged

Wählen Sie das Menüband Transformieren aus. Wählen Sie in der Gruppe Textspalten des Menübands Spalten zusammenführen aus. Das Dialogfeld „Spalten zusammenführen“ wird angezeigt.

Merging fields using the Merge Columns dialog

Wählen Sie im Dialogfeld „Spalten zusammenführen“ die Option Tab als Trennlinie aus und wählen Sie dann OK.

Sie können auch den Filter „Leere entfernen“ verwenden, um leere Nachrichten herauszufiltern, oder die Transformation „Bereinigen“, um nicht druckbare Zeichen zu entfernen. Wenn Ihre Daten eine Spalte wie die Spalte spamscore in der Beispieldatei enthalten, können Sie Spam-Kommentare mithilfe eines Anzahlfilters überspringen.

Grundlegendes zur API

Die Text-Extrahierung kann bis zu tausend Textdokumente pro HTTP-Anforderung verarbeiten. Power BI bevorzugt die Verarbeitung einzelner Datensätze. Deshalb enthalten Ihre Aufrufe an die API in diesem Tutorial jeweils nur ein Dokument. Die Schlüsselbegriffs-API erfordert die folgenden Felder für jedes verarbeitete Dokument.

Feld BESCHREIBUNG
id Ein eindeutiger Bezeichner für dieses Dokument in der Anforderung. Dieses Feld ist auch in der Antwort enthalten. So können Sie bei der Verarbeitung mehrerer Dokumente die extrahierten Schlüsselbegriffe problemlos dem Dokument zuordnen, aus dem sie stammen. Da Sie in diesem Tutorial nur ein Dokument pro Anforderung verarbeiten, können Sie den Wert von id als vordefinierten Code aufnehmen, damit dieser für jede Anforderung identisch ist.
text Der zu verarbeitende Text. Der Wert dieses Felds stammt aus der Spalte Merged, die Sie im vorherigen Abschnitt erstellt haben und die Betreffzeile zusammen mit dem Kommentartext enthält. Die Schlüsselbegriffs-API erfordert, dass diese Daten höchstens ca. 5.120 Zeichen umfassen.
language Der Code zur Darstellung der natürlichen Sprache, in der das Dokument geschrieben ist. Alle Nachrichten in den Beispieldaten sind in Englisch verfasst, sodass Sie den Wert en für dieses Feld als vordefinierten Code aufnehmen können.

Erstellen einer benutzerdefinierten Funktion

Nun sind Sie bereit zum Erstellen der benutzerdefinierten Funktion, die Power BI und die Text-Extrahierung integriert. Die Funktion erhält den zu verarbeitenden Text als Parameter. Sie konvertiert Daten in das erforderliche und aus dem erforderlichen JSON-Format und stellt die HTTP-Anforderung an die Schlüsselbegriffs-API. Die Funktion analysiert dann die Antwort von der API und gibt eine Zeichenfolge zurück, die eine durch Trennzeichen getrennte Liste der extrahierten Schlüsselbegriffe enthält.

Hinweis

Benutzerdefinierte Power BI Desktop-Funktionen sind in der Power Query-Formelsprache „M“ oder kurz „M“ geschrieben. M ist eine funktionale Programmiersprache, die auf F# basiert. Sie müssen jedoch kein Programmierer sein, um dieses Tutorial abzuschließen; der erforderliche Code ist unten angegeben.

Stellen Sie sicher, dass in Power BI Desktop nach wie vor das Fenster des Abfrage-Editors geöffnet ist. Wählen Sie anderenfalls das Menüband Start und in der Gruppe Externe DatenAbfragen bearbeiten aus.

Öffnen Sie nun im Menüband Start in der Gruppe Neue Abfrage das Dropdownmenü Neue Quelle, und wählen Sie Leere Abfrage aus.

Der Abfrageliste wird eine neue Abfrage mit dem Standardnamen Query1 hinzugefügt. Doppelklicken Sie auf diesen Eintrag, und nennen Sie ihn KeyPhrases.

Öffnen Sie jetzt im Menüband Start in der Gruppe AbfrageErweiterter Editor aus, um das Fenster „Erweiterter Editor“ zu öffnen. Löschen Sie den Code, der sich bereits in diesem Fenster befindet, und fügen Sie den folgenden Code ein.

Hinweis

Ersetzen Sie den unten angegebenen Beispielendpunkt (der <your-custom-subdomain> enthält) durch den für Ihre Sprachressource generierten Endpunkt. Sie finden diesen Endpunkt, wenn Sie sich beim Azure-Portal anmelden, durch Navigieren zu Ihrer Ressource und beim Auswählen von Schlüssel und Endpunkt.

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

Ersetzen Sie YOUR_API_KEY_HERE mit Ihrem Sprachressourcenschlüssel. Sie finden diesen Schlüssel auch, indem Sie sich beim Azure-Portalanmelden, zu Ihrer Sprachressource navigieren und die Seite Schlüssel und Endpunkt auswählen. Achten Sie darauf, die Anführungszeichen vor und nach dem Schlüssel beizubehalten. Wählen Sie dann Fertig aus.

Verwenden der benutzerdefinierten Funktion

Jetzt können Sie die benutzerdefinierte Funktion verwenden, um die Schlüsselbegriffe aus allen Kundenkommentaren abzurufen und in einer neuen Spalte in der Tabelle zu speichern.

Kehren Sie in Power BI Desktop im Fenster des Abfrage-Editors zur Abfrage FabrikamComments zurück. Wählen Sie das Menüband Spalte hinzufügen aus. Wählen Sie in der Gruppe AllgemeinBenutzerdefinierte Funktion aufrufen aus.

Invoke Custom Function button

Das Dialogfeld „Benutzerdefinierte Funktion aufrufen“ wird angezeigt. Geben Sie unter Neuer Spaltenname Folgendes ein: keyphrases. Wählen Sie unter Funktionsabfrage die benutzerdefinierte Funktion aus, die Sie erstellt haben: KeyPhrases.

Ein neues Feld wird im Dialogfeld Text (optional) angezeigt. In diesem Feld werden Sie zur Auswahl der Spalte aufgefordert, in der Werte für den Parameter text der Schlüsselbegriffs-API angegeben werden sollen. (Beachten Sie, dass Sie bereits die Werte für die Parameter language und id als vordefinierte Werte aufgenommen haben.) Wählen Sie im Dropdownmenü Merged aus (die Spalte, die wir zuvor durch Zusammenführen der Betreffs- und Nachrichtenfelder erstellt haben).

Invoking a custom function

Wählen Sie abschließend OK aus.

Power BI ruft Ihre benutzerdefinierte Funktion einmal für jede Zeile in der Tabelle auf. Der Dienst sendet Abfragen an die Schlüsselbegriffs-API und fügt der Tabelle zum Speichern der Ergebnisse eine neue Spalte hinzu. Zuvor müssen Sie jedoch möglicherweise Authentifizierungs- und Datenschutzeinstellungen festlegen.

Authentifizierung und Datenschutz

Nachdem Sie das Dialogfeld „Benutzerdefinierte Funktion aufrufen“ geschlossen haben, wird u.U. ein Banner angezeigt, das Sie auffordert, festzulegen, wie die Verbindung mit der Schlüsselbegriffs-API hergestellt wird.

credentials banner

Wählen Sie Anmeldeinformationen bearbeiten, stellen Sie sicher, dass Anonymous im Dialogfeld ausgewählt ist, und wählen Sie dann Verbinden aus.

Hinweis

Sie wählen Anonymous aus, da die Text-Extrahierung Sie über Ihren Zugriffsschlüssel authentifiziert, sodass Power BI für die HTTP-Anforderung selbst keine Anmeldeinformationen angeben muss.

setting authentication to anonymous

Wenn das Banner „Anmeldeinformationen bearbeiten“ auch nach der Auswahl des anonymen Zugriffs weiter angezeigt wird, haben Sie möglicherweise vergessen, Ihren Zugriffsschlüssel für die Textanalyse in den Code der benutzerdefinierten FunktionKeyPhrases einzufügen.

Als Nächstes kann ein Banner angezeigt werden, der Sie auffordert, Informationen zum Datenschutz Ihrer Datenquellen anzugeben.

privacy banner

Wählen Sie Weiter und dann für jede Datenquelle im Dialogfeld Public aus. Wählen Sie dann Speichern aus.

setting data source privacy

Erstellen der Wortwolke

Wenn Sie mit allen angezeigten Bannern fertig sind, wählen Sie auf dem Menüband „Start“ die Option Schließen und anwenden aus, um den Abfrage-Editor zu schließen.

Power BI Desktop braucht einen Moment, um die erforderlichen HTTP-Anforderungen zu stellen. Für jede Zeile in der Tabelle enthält die neue Spalte keyphrases die von der Schlüsselbegriffs-API im Text erkannten Schlüsselbegriffe.

Verwenden Sie diese Spalte nun, um eine Wortwolke zu generieren. Als Erstes klicken Sie im Hauptfenster von Power BI Desktop links vom Arbeitsbereich auf die Schaltfläche Bericht.

Hinweis

Warum werden Schlüsselbegriffe zum Erstellen einer Wortwolke verwendet, anstatt des vollständigen Texts aller Kommentare? Die Schlüsselbegriffe enthalten die wichtigen Wörter aus unseren Kundenkommentaren, nicht nur die am häufigsten verwendeten Wörter. Außerdem ist die Wortgrößenanpassung in der Wolke dann nicht durch die häufige Verwendung eines Worts in einer relativ geringen Anzahl von Kommentaren verzerrt.

Installieren Sie das benutzerdefinierte visuelle Objekt „Wortwolke“, wenn es noch nicht installiert ist. Klicken Sie im Bereich „Visualisierungen“ rechts neben dem Arbeitsbereich auf die drei Punkte ( ... ), und wählen Sie Import from Market (Aus Market importieren) aus. Befindet sich das Wort „Cloud“ nicht in der Liste der angezeigten Visualisierungstools, können Sie nach „Cloud“ suchen und neben dem visuellen Element „Wortwolke“ auf Hinzufügen klicken. Power BI installiert das Visual „Wortwolke“ und weist Sie auf eine erfolgreiche Installation hin.

adding a custom visual

Klicken Sie zunächst im Visualisierungsbereich auf das Wortwolkensymbol.

Word Cloud icon in visualizations panel

Im Arbeitsbereich wird ein neuer Bericht angezeigt. Ziehen Sie das Feld keyphrases aus den Bereich „Felder“ in das Feld „Kategorie“ im Visualisierungsbereich. Die Wortwolke wird innerhalb des Berichts angezeigt.

Wechseln Sie nun zur Seite „Format“ des Visualisierungsbereichs. Aktivieren Sie in der Kategorie „Stoppwörter“ die Option Standardstoppwörter, um kurze häufige Wörter wie „von“ aus der Wolke auszuschließen. Da Sie jedoch Schlüsselausdrücke visualisieren, enthalten sie möglicherweise keine Stoppwörter.

activating default stop words

Deaktivieren Sie etwas weiter unten in diesem Bereich die Optionen Text drehen und Titel.

activate focus mode

Wählen Sie im Bericht das Werkzeug Fokusmodus, um einen genaueren Überblick über unsere Wortwolke zu erhalten. Das Tool erweitert die Wortwolke auf den gesamten Arbeitsbereich, wie unten dargestellt.

A Word Cloud

Verwenden anderer Funktionen

Azure KI Language verfügt auch über Stimmungsanalyse und Spracherkennung. Die Sprachenerkennung ist insbesondere nützlich, wenn nicht Ihr gesamtes Kundenfeedback in englischer Sprache verfasst ist.

Beide dieser APIs sind der Schlüsselbegriffs-API ähnlich. Das bedeutet, dass Sie sie in Power BI Desktop mithilfe von benutzerdefinierten Funktionen integrieren können, die fast identisch mit der Funktion sind, die Sie in diesem Tutorial erstellt haben. Dazu erstellen Sie einfach eine leere Abfrage und fügen wie zuvor den entsprechenden Code unten in den erweiterten Editor ein. (Vergessen Sie Ihren Zugriffsschlüssel nicht!) Verwenden Sie dann wie zuvor die Funktion, um der Tabelle eine Spalte hinzuzufügen.

Die nachstehende Stimmungsanalysefunktion gibt ein Ergebnis zurück, das angibt, wie positiv die im Text ausgedrückte Stimmung ist.

// 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 sind zwei Versionen einer Sprachenerkennungsfunktion. Die erste Funktion gibt den ISO-Sprachencode (z.B. en für Englisch) zurück, während die zweite Funktion den Anzeigenamen zurückgibt (z.B. English). Sie stellen möglicherweise fest, dass sich zwischen den beiden Versionen nur die letzte Zeile des Texts unterscheidet.

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

Und hier ist schließlich eine Variante der bereits vorgestellten Schlüsselbegriffsfunktion, die die Begriffe als Listenobjekt anstatt als eine einzelne Zeichenfolge mit durch Trennzeichen getrennten Begriffen zurückgibt.

Hinweis

Das Zurückgeben einer einzelnen Zeichenfolge hat unser Wortwolkenbeispiel vereinfacht. Andererseits ist eine Liste ein flexibleres Format für das Arbeiten mit den zurückgegebenen Begriffen in Power BI. Sie können Listenobjekte in Power BI Desktop mithilfe der Gruppe „Strukturierte Spalte“ im Menüband „Transformation“ des Abfrage-Editors ändern.

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

Nächste Schritte

Erfahren Sie mehr über Azure KI Language, die Power Query M-Formelsprache oder Power BI.