arrow_back

Entitäten- und Sentimentanalyse mit der Natural Language API

Anmelden Teilnehmen
Testen und teilen Sie Ihr Wissen mit unserer Community.
done
Sie erhalten Zugriff auf über 700 praxisorientierte Labs, Skill-Logos und Kurse

Entitäten- und Sentimentanalyse mit der Natural Language API

Lab 45 Minuten universal_currency_alt 5 Guthabenpunkte show_chart Mittelstufe
info Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Testen und teilen Sie Ihr Wissen mit unserer Community.
done
Sie erhalten Zugriff auf über 700 praxisorientierte Labs, Skill-Logos und Kurse

GSP038

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Überblick

Mit der Cloud Natural Language API können Sie Entitäten aus Text extrahieren, Text klassifizieren, d. h. Kategorien zuordnen, sowie Stimmungs- und Syntaxanalysen machen.

In diesem Lab erfahren Sie, wie Sie mit der Natural Language API verschiedene Arten von Entitäten, Stimmung und Syntax analysieren können.

Ziele

Aufgaben in diesem Lab:

  • Eine Natural Language API-Anfrage erstellen und die API mit „curl“ aufrufen
  • Mit der Natural Language API Entitäten extrahieren und eine Sentimentanalyse eines Textes machen
  • Einen Text mit der Natural Language API sprachlich analysieren
  • Eine Natural Language API-Anfrage in einer anderen Sprache erstellen

Einrichtung und Anforderungen

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Wenn Sie über ein persönliches Google Cloud-Konto oder -Projekt verfügen, verwenden Sie es nicht für dieses Lab. So werden zusätzliche Kosten für Ihr Konto vermieden.

Lab starten und bei der Google Cloud Console anmelden

  1. Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich Details zum Lab mit diesen Informationen:

    • Schaltfläche Google Cloud Console öffnen
    • Restzeit
    • Temporäre Anmeldedaten für das Lab
    • Ggf. weitere Informationen für dieses Lab
  2. Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).

    Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite Anmelden geöffnet.

    Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.

    Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
  3. Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.

    {{{user_0.username | "Username"}}}

    Sie finden den Nutzernamen auch im Bereich Details zum Lab.

  4. Klicken Sie auf Weiter.

  5. Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.

    {{{user_0.password | "Password"}}}

    Sie finden das Passwort auch im Bereich Details zum Lab.

  6. Klicken Sie auf Weiter.

    Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
  7. Klicken Sie sich durch die nachfolgenden Seiten:

    • Akzeptieren Sie die Nutzungsbedingungen.
    • Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
    • Melden Sie sich nicht für kostenlose Testversionen an.

Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.

Hinweis: Wenn Sie sich eine Liste der Google Cloud-Produkte und ‑Dienste ansehen möchten, klicken Sie oben links auf das Navigationsmenü. Symbol für Navigationsmenü

Aufgabe 1: API-Schlüssel erstellen

Da Sie mit curl eine Anfrage an die Natural Language API senden, müssen Sie einen API-Schlüssel generieren, um die Anfrage-URL zu übergeben.

  1. Öffnen Sie zum Erstellen eines API-Schlüssels in der Cloud Console das Navigationsmenü und wählen Sie APIs und Dienste > Anmeldedaten aus.

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie den API-Schlüssel aus.

  3. Kopieren Sie den generierten API-Schlüssel und klicken Sie auf Schließen.

Klicken Sie auf Fortschritt prüfen.

API-Schlüssel erstellen

Für die nächsten Schritte müssen Sie über SSH eine Verbindung mit der für Sie bereitgestellten Instanz herstellen.

  1. Klicken Sie im Navigationsmenü auf „Compute Engine“. Die bereitgestellte Linux-Instanz linux-instance sollte in der Liste VM-Instanzen aufgeführt sein.

  2. Klicken Sie auf die Schaltfläche SSH. Sie werden zu einer interaktiven Shell weitergeleitet.

  3. Geben Sie in der Befehlszeile Folgendes ein. Achten Sie darauf, für <YOUR_API_KEY> den gerade kopierten Schlüssel einzusetzen:

export API_KEY=<YOUR_API_KEY>

Aufgabe 2: Anfrage zur Entitätsanalyse senden

Die erste Natural Language API-Methode, die Sie verwenden, ist analyzeEntities. Damit kann die API Entitäten (wie Personen, Orte und Ereignisse) aus Text extrahieren. Für die Entitätenanalyse der API verwenden wir folgenden Satz:

Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series.

Sie legen die Anfrage für die Natural Language API in der Datei request.json fest.

  1. Verwenden Sie den Codeeditor nano, um die Datei request.json zu erstellen:
nano request.json
  1. Geben Sie in request.json den folgenden Code ein oder fügen Sie ihn ein:
{ "document":{ "type":"PLAIN_TEXT", "content":"Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series." }, "encodingType":"UTF8" }
  1. Drücken Sie STRG + X, um nano zu beenden, dann auf Y, um die Datei zu speichern, und abschließend zur Bestätigung die Eingabetaste.

In der Anfrage teilen Sie der Natural Language API Informationen zu dem von Ihnen gesendeten Text mit. Unterstützt werden die Typwerte PLAIN_TEXT und HTML. Unter "content" übergeben Sie den Text, der zur Analyse an die Natural Language API gesendet werden soll.

Die Natural Language API unterstützt auch das Senden von Dateien aus Cloud Storage zur Textverarbeitung. Wenn Sie eine Datei aus Cloud Storage senden möchten, ersetzen Sie content durch gcsContentUri und verwenden Sie den Wert des URI der Textdatei in Cloud Storage.

encodingType: Teilt der API mit, welche Art von Textcodierung bei der Verarbeitung des Textes verwendet werden soll. Die API berechnet damit die Position bestimmter Entitäten im Text.

Klicken Sie auf Fortschritt prüfen.

Anfrage für eine Entitätenanalyse senden

Aufgabe 3: Die Natural Language API aufrufen

  1. Mit dem folgenden curl-Befehl können Sie nun den Anfragetext zusammen mit der zuvor gespeicherten Umgebungsvariablen mit dem API-Schlüssel an die Natural Language API übergeben. Platzieren Sie dabei alle Elemente in der gleichen Befehlszeile:
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json
  1. Um die Antwort zu überprüfen, führen Sie folgenden Code aus:
cat result.json

Der Anfang der Antwort sollte folgendermaßen aussehen:

"content": "Joanne Rowling", "beginOffset": 0 }, "type": "PROPER" }, { "text": { "content": "Rowling", "beginOffset": 53 }, "type": "PROPER" }, { "text": { "content": "novelist", "beginOffset": 96 }, "type": "COMMON" }, { "text": { "content": "Robert Galbraith", "beginOffset": 65 }, "type": "PROPER" } ] }, ... ] }

Zu jeder Entität in der Antwort erhalten Sie den Entitätstyp (type), die zugehörige Wikipedia-URL (falls vorhanden), die Salienz (salience) und die Indizes darüber, wo diese Entität im Text zu finden ist. Die Salienz ist eine Zahl im Bereich [0,1], die sich auf die Zentralität der Entität im gesamten Dokumenttext bezieht.

Die Natural Language API kann außerdem dieselbe Entität auf unterschiedliche Weisen erkennen. Sehen Sie sich die Liste mentions in der Antwort an: Die API erkennt, dass sich "Joanne Rowling", "Rowling", "novelist" und "Robert Galbriath" auf dieselbe Person beziehen.

Klicken Sie auf Fortschritt prüfen.

Antwort der Entitätenanalyse überprüfen

Aufgabe 4: Sentimentanalyse mit der Natural Language API

Mit der Natural Language API können Sie nicht nur Entitäten extrahieren, sondern auch eine Sentimentanalyse für einen Textblock machen. Die JSON-Anfrage enthält in diesem Fall dieselben Parameter wie die obige Anfrage, jedoch ändern Sie jetzt den Text, indem Sie Elemente aufnehmen, die auf eine intensivere Stimmung hindeuten.

  1. Ersetzen Sie den Code in request.json mithilfe von nano durch den folgenden. Unter content können Sie einen eigenen Text eingeben:
{ "document":{ "type":"PLAIN_TEXT", "content":"Harry Potter is the best book. I think everyone should read it." }, "encodingType": "UTF8" }
  1. Drücken Sie STRG + X, um nano zu beenden, dann auf Y, um die Datei zu speichern, und abschließend zur Bestätigung die Eingabetaste.

  2. Als Nächstes senden Sie die Anfrage an den Endpunkt analyzeSentiment der API:

curl "https://language.googleapis.com/v1/documents:analyzeSentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Die Antwort sollte folgendermaßen aussehen:

{ "documentSentiment": { "magnitude": 1.9, "score": 0.9 }, "language": "en", "sentences": [ { "text": { "content": "Harry Potter is the best book.", "beginOffset": 0 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } }, { "text": { "content": "I think everyone should read it.", "beginOffset": 31 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } } ] } Hinweis: Es ist vollkommen normal, falls Ihre Ergebnisse geringfügig von der Beispielausgabe abweichen.

Sie sehen, dass die Antwort zwei Arten von "sentiment"-Werten enthält: einen für das gesamte Dokument und einen für jeden einzelnen Satz. Die Sentimentanalyse gibt zwei Werte zurück:

  • score – eine Zahl zwischen -1,0 und 1,0, die angibt, wie positiv oder negativ die Aussage ist.
  • magnitude – eine Zahl im Bereich 0 bis unendlich, die das Gewicht der zum Ausdruck gebrachten Stimmung angibt, unabhängig davon, ob die Aussage positiv oder negativ ist.

Längere Textblöcke mit stark gewichteten Aussagen haben höhere "magnitude"-Werte. Der Wert für den ersten Satz ist positiv (0,7), während der Wert für den zweiten Satz neutral ist (0,1).

Aufgabe 5: Sentimentanalyse pro Entität

Die Natural Language API liefert nicht nur Informationen über die Stimmung im gesamten Textdokument, sondern kann die Stimmung auch nach Entitäten im Text aufschlüsseln. Sehen Sie sich diesen Beispielsatz an:

I liked the sushi but the service was terrible.

In diesem Fall liefert eine Sentimentanalyse für den gesamten Satz, so wie sie oben durchgeführt wurde, keine aussagekräftigen Ergebnisse. Wenn dies eine Restaurantbewertung wäre und es Hunderte von Bewertungen für dasselbe Restaurant gäbe, würden Sie wissen wollen, was genau den Kunden gefallen hat und was nicht. Glücklicherweise verfügt die Natural Language API über die Methode analyzeEntitySentiment, mit der Sie die Stimmung für jede Entität im Text ermitteln können. Jetzt können Sie sich ansehen, wie das funktioniert.

  1. Fügen Sie den folgenden Satz mithilfe von nano in request.json ein:
{ "document":{ "type":"PLAIN_TEXT", "content":"I liked the sushi but the service was terrible." }, "encodingType": "UTF8" }
  1. Drücken Sie STRG + X, um nano zu beenden, dann auf Y, um die Datei zu speichern, und abschließend zur Bestätigung die Eingabetaste.

  2. Rufen Sie dann den Endpunkt analyzeEntitySentiment mit dem folgenden „curl“-Befehl auf:

curl "https://language.googleapis.com/v1/documents:analyzeEntitySentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Die Antwort enthält zwei Entitätenobjekte: eines für „sushi“ und eines für „service“. Die vollständige JSON-Antwort sieht so aus:

{ "entities": [ { "name": "sushi", "type": "CONSUMER_GOOD", "metadata": {}, "salience": 0.51064336, "mentions": [ { "text": { "content": "sushi", "beginOffset": 12 }, "type": "COMMON", "sentiment": { "magnitude": 0, "score": 0 } } ], "sentiment": { "magnitude": 0, "score": 0 } }, { "name": "service", "type": "OTHER", "metadata": {}, "salience": 0.48935664, "mentions": [ { "text": { "content": "service", "beginOffset": 26 }, "type": "COMMON", "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "language": "en" }

Sie sehen, dass der zurückgegebene Wert für „sushi“ die neutrale Punktzahl 0 beträgt, der für „service“ hingegen -0,7. Nicht schlecht, oder? Sie stellen auch fest, dass für jede Entität zwei "sentiment"-Objekte ausgegeben werden. Wenn einer dieser Begriffe mehr als einmal vorkommen würde, würde die API bei jeder Erwähnung einen anderen Wert für „sentiment“ und „magnitude“ sowie einen aggregierten „sentiment“-Wert für die Entität ausgeben.

Hinweis: Es ist vollkommen normal, falls Ihre Ergebnisse geringfügig von der Beispielausgabe abweichen.

Aufgabe 6: Syntax und Wortarten analysieren

Mit der Syntaxanalyse, einer weiteren Methode der Natural Language API, können Sie noch mehr sprachliche Details zu einem Text erhalten. analyzeSyntax extrahiert linguistische Informationen und unterteilt den vorliegenden Text in eine Reihe von Sätzen und Tokens (im Allgemeinen Wortgrenzen) für eine weitere Analyse dieser Tokens. Für jedes Wort im Text ermittelt die API die Wortart (z. B. Substantiv, Verb, Adjektiv) und in welcher Beziehung es zu anderen Wörtern im Satz steht (Ist es das Vollverb? Ein Attribut?).

Probieren Sie es mit einem einfachen Satz aus. Die JSON-Anfrage ähnelt den vorherigen Anfragen, enthält jedoch einen zusätzlichen Funktionsschlüssel. So wird der API vermittelt, dass Sie eine Syntaxannotation machen möchten.

  1. Ersetzen Sie den Code in request.json mithilfe von nano durch Folgendes:
{ "document":{ "type":"PLAIN_TEXT", "content": "Joanne Rowling is a British novelist, screenwriter and film producer." }, "encodingType": "UTF8" }
  1. Drücken Sie STRG + X, um nano zu beenden, dann auf Y, um die Datei zu speichern, und abschließend zur Bestätigung die Eingabetaste.

  2. Rufen Sie dann die Methode analyzeSyntax der API auf:

curl "https://language.googleapis.com/v1/documents:analyzeSyntax?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

In der Antwort sollte ein Objekt wie das Folgende für jedes Token im Satz zurückgegeben werden:

{ "text": { "content": "ist", "beginOffset": 15 }, "partOfSpeech": { "tag": "VERB", "aspect": "ASPECT_UNKNOWN", "case": "CASE_UNKNOWN", "form": "FORM_UNKNOWN", "gender": "GENDER_UNKNOWN", "mood": "INDICATIVE", "number": "SINGULAR", "person": "THIRD", "proper": "PROPER_UNKNOWN", "reciprocity": "RECIPROCITY_UNKNOWN", "tense": "PRESENT", "voice": "VOICE_UNKNOWN" }, "dependencyEdge": { "headTokenIndex": 2, "label": "ROOT" }, "lemma": "be" },

Eine Aufschlüsselung der Antwort ergibt Folgendes:

  • partOfSpeech können Sie entnehmen, dass "Joanne" ein Substantiv ist.
  • dependencyEdge enthält Daten, mit denen Sie einen Abhängigkeitsparsebaum des Textes erstellen können. Dabei handelt es sich um ein Diagramm, in dem dargestellt wird, in welcher Beziehung Wörter in einem Satz zueinander stehen. Ein Abhängigkeitsparsebaum für den obigen Satz würde folgendermaßen aussehen:

Abhängigkeitsparsebaum

Hinweis: Sie können im Browser eigene Abhängigkeitsparsebäume erstellen. Dazu verwenden Sie die Natural Language-Demo aus der Anleitung zur Natural Language API
  • headTokenIndex ist der Index des Tokens, das auf „Joanne“ verweist. Sie können sich jedes Token im Satz als Wort in einem Array vorstellen.
  • headTokenIndex mit dem Wert „1“ für „Joanne“ bezieht sich auf „Rowling“, mit dem es im Baum verbunden ist. Das Label NN (kurz für „noun compound modifier“) beschreibt die Rolle des Wortes im Satz. „Joanne“ bestimmt „Rowling“, das Subjekt des Satzes, näher.
  • lemma ist die kanonische Form des Wortes. Zum Beispiel haben die Wörter laufen, läuft, lief und laufend alle das Lemma laufen. Der "lemma"-Wert ist hilfreich, um zu ermitteln, wie häufig ein Wort in einem langen Textabschnitt vorkommt.

Aufgabe 7: Mehrsprachige Verarbeitung natürlicher Sprache

Die Natural Language API unterstützt auch weitere Sprachen neben Englisch (eine vollständige Liste finden Sie in der Anleitung zur Sprachenunterstützung).

  1. Ersetzen Sie den Code in request.json durch einen Satz auf Japanisch:
{ "document":{ "type":"PLAIN_TEXT", "content":"日本のグーグルのオフィスは、東京の六本木ヒルズにあります" } }
  1. Drücken Sie STRG + X, um nano zu beenden, dann auf Y, um die Datei zu speichern, und abschließend zur Bestätigung die Eingabetaste.

Sie haben nicht mitgeteilt, in welcher Sprache der Text vorliegt. Die API erkennt das automatisch.

  1. Als Nächstes senden Sie ihn an den Endpunkt analyzeEntities:
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

Die Antwort sieht dann so aus:

{ "entities": [ { "name": "日本", "type": "LOCATION", "metadata": { "mid": "/m/03_3d", "wikipedia_url": "https://en.wikipedia.org/wiki/Japan" }, "salience": 0.23854347, "mentions": [ { "text": { "content": "日本", "beginOffset": 0 }, "type": "PROPER" } ] }, { "name": "グーグル", "type": "ORGANIZATION", "metadata": { "mid": "/m/045c7b", "wikipedia_url": "https://en.wikipedia.org/wiki/Google" }, "salience": 0.21155767, "mentions": [ { "text": { "content": "グーグル", "beginOffset": 9 }, "type": "PROPER" } ] }, ... ] "language": "ja" }

Die Wikipedia-URLs verweisen sogar auf die japanischen Wikipedia-Seiten.

Das war's! Sie haben das Lab erfolgreich abgeschlossen.

Sie haben gelernt, wie Sie mit der Cloud Natural Language API eine Textanalyse machen, indem Sie Entitäten extrahieren, die Stimmung analysieren und Syntaxannotationen platzieren. In dieser Übung haben Sie eine Natural Language API-Anfrage erstellt und die API mit curl aufgerufen, Entitäten extrahiert und mit der Natural Language API eine Sentimentanalyse und eine linguistische Analyse von Text vorgenommen sowie eine Natural Language API-Anfrage in einer anderen Sprache gestellt.

Weitere Informationen

  • Natural Language API-Anleitungen in der Dokumentation

Google Cloud-Schulungen und -Zertifizierungen

In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.

Anleitung zuletzt am 14. Februar 2024 aktualisiert

Lab zuletzt am 13. Oktober 2023 getestet

© 2024 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail