Anleitung zur Stimmungsanalyse

Zielgruppe

Diese Anleitung soll Ihnen einen schnellen Einstieg in die Verwendung und Entwicklung von Anwendungen mit der Google Cloud Natural Language API ermöglichen. Die Anleitung richtet sich an Nutzer, die mit den Grundlagen des Programmierens vertraut sind, und ist auch ohne viel Programmierwissen verständlich. Nachdem Sie die Anleitung durchgegangen sind, sollten Sie in der Lage sein, mithilfe der Referenzdokumentation Ihre eigenen grundlegenden Anwendungen zu erstellen.

In dieser Anleitung wird eine Natural Language API-Anwendung mit dem Python-Code vorgestellt. Dabei sollen nicht die Python-Clientbibliotheken erläutert werden, sondern die Vorgehensweise zum Durchführen von Aufrufen an die Natural Language API. Anwendungen in Java und Node.js verhalten sich im Wesentlichen ähnlich. In den Natural Language API-Beispielen finden Sie Beispiele in anderen Sprachen, einschließlich dieses in der vorliegenden Anleitung verwendeten Beispiels.

Voraussetzungen

Diese Anleitung setzt Folgendes voraus:

Stimmung eines Dokuments analysieren

In dieser Anleitung wird eine grundlegende Natural Language API-Anwendung anhand einer analyzeSentiment-Anfrage vorgestellt, mit der eine Sentimentanalyse des Texts durchgeführt wird. Bei der Sentimentanalyse wird versucht, die allgemeine (positive oder negative) Einstellung zu erkennen. Die Darstellung erfolgt durch die numerischen score- und magnitude-Werte. Weitere Informationen zu diesen Konzepten finden Sie unter Grundlagen der Natural Language API.

Zuerst zeigen wir den gesamten Code. Wir haben die meisten Kommentare aus diesem Code entfernt, um aufzuzeigen, wie kurz er ist. Beim Durchgehen des Codes werden wir mehr Kommentare bereitstellen.)

Weitere Informationen zur Installation und Verwendung der Google Cloud Natural Language-Clientbibliothek für Python finden Sie unter Natural Language API-Clientbibliotheken.
"""Demonstrates how to make a simple call to the Natural Language API."""

import argparse

from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types

def print_result(annotations):
    score = annotations.document_sentiment.score
    magnitude = annotations.document_sentiment.magnitude

    for index, sentence in enumerate(annotations.sentences):
        sentence_sentiment = sentence.sentiment.score
        print('Sentence {} has a sentiment score of {}'.format(
            index, sentence_sentiment))

    print('Overall Sentiment: score of {} with magnitude of {}'.format(
        score, magnitude))
    return 0

def analyze(movie_review_filename):
    """Run a sentiment analysis request on text within a passed filename."""
    client = language.LanguageServiceClient()

    with open(movie_review_filename, 'r') as review_file:
        # Instantiates a plain text document.
        content = review_file.read()

    document = types.Document(
        content=content,
        type=enums.Document.Type.PLAIN_TEXT)
    annotations = client.analyze_sentiment(document=document)

    # Print the results
    print_result(annotations)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument(
        'movie_review_filename',
        help='The filename of the movie review you\'d like to analyze.')
    args = parser.parse_args()

    analyze(args.movie_review_filename)

Diese einfache Anwendung:

  • Importiert die für die Ausführung der Anwendung erforderlichen Bibliotheken
  • Übergibt eine Textdatei an die main()-Funktion
  • Liest die Textdatei und sendet eine Anfrage an den Dienst
  • Analysiert die Antwort des Diensts und zeigt sie dem Nutzer an

Diese Schritte werden unten ausführlicher besprochen.

Bibliotheken importieren

Weitere Informationen zur Installation und Verwendung der Google Cloud Natural Language-Clientbibliothek für Python finden Sie unter Natural Language API-Clientbibliotheken.
import argparse

from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types

Wir importieren argparse, eine Standardbibliothek, damit die Anwendung die eingegebenen Dateinamen als Argumente akzeptieren kann.

Bei der Verwendung der Cloud Natural Language API ist es außerdem notwendig, das language-Modul aus der google-cloud-language-Bibliothek zu importieren. Das types-Modul enthält Klassen, die für die Erstellung von Anfragen benötigt werden.

Anwendung ausführen

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument(
        'movie_review_filename',
        help='The filename of the movie review you\'d like to analyze.')
    args = parser.parse_args()

    analyze(args.movie_review_filename)

Hier analysieren wir das für den Textdateinamen übergebene Argument und übergeben es an die Funktion analyze().

Bei der API authentifizieren

Vor der Kommunikation mit dem Natural Language API-Dienst ist es notwendig, dass Sie Ihren Dienst authentifizieren, indem Sie die zuvor abgerufenen Anmeldedaten verwenden. Innerhalb einer Anwendung erhalten Sie die Anmeldedaten am einfachsten über die Verwendung der Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC). Standardmäßig ruft ADC die Anmeldedaten von der GOOGLE_APPLICATION_CREDENTIALS-Umgebungsdatei ab, die so festgelegt sein muss, dass sie auf die JSON-Schlüsseldatei Ihres Dienstkontos verweist. (Es ist notwendig, im Schnellstart die Verwendung von ADC für Ihr Dienstkonto und die Umgebung einzurichten. Weitere Informationen finden Sie unter Dienstkonto einrichten.)

Die Google Cloud-Clientbibliothek für Python verwendet automatisch die Standardanmeldedaten für Anwendungen.

Anfrage senden

Nachdem jetzt der Natural Language API-Dienst bereit ist, können Sie auf den Dienst zugreifen, indem Sie die analyze_sentiment-Methode der LanguageServiceClient-Instanz abrufen.

Die Clientbibliothek enthält die Einzelheiten zu API-Anfragen und -Antworten. In der Natural Language API-Referenz finden Sie alle Einzelheiten zur spezifischen Struktur einer solchen Anfrage.

Weitere Informationen zur Installation und Verwendung der Google Cloud Natural Language-Clientbibliothek für Python finden Sie unter Natural Language API-Clientbibliotheken.
def analyze(movie_review_filename):
    """Run a sentiment analysis request on text within a passed filename."""
    client = language.LanguageServiceClient()

    with open(movie_review_filename, 'r') as review_file:
        # Instantiates a plain text document.
        content = review_file.read()

    document = types.Document(
        content=content,
        type=enums.Document.Type.PLAIN_TEXT)
    annotations = client.analyze_sentiment(document=document)

    # Print the results
    print_result(annotations)

Dieses Code-Snippet:

  1. Instanziiert eine LanguageServiceClient-Instanz als Client.
  2. Liest den Dateinamen mit den Textdaten in eine Variable ein.
  3. Instanziiert ein Document-Objekt mit dem Inhalt der Datei.
  4. Ruft die analyze_sentiment-Methode des Clients auf.

Antwort parsen

def print_result(annotations):
    score = annotations.document_sentiment.score
    magnitude = annotations.document_sentiment.magnitude

    for index, sentence in enumerate(annotations.sentences):
        sentence_sentiment = sentence.sentiment.score
        print('Sentence {} has a sentiment score of {}'.format(
            index, sentence_sentiment))

    print('Overall Sentiment: score of {} with magnitude of {}'.format(
        score, magnitude))
    return 0

Wir gehen die Antwort durch, um die score-Sentimentwerte für die einzelnen Sätze sowie die allgemeinen score- und magnitude-Werte für die gesamte Rezension zu extrahieren und sie dem Nutzer anzuzeigen.

Beispiel ausführen

Um das Beispiel auszuführen, testen wir es an einer Reihe von (falschen) Filmrezensionen für den Film "Bladerunner".

  1. Laden Sie die Beispiele aus Google Cloud Storage herunter:

    gsutil cp gs://cloud-samples-tests/natural-language/sentiment-samples.tgz .
    

    gsutil wird normalerweise als Teil des Cloud SDK installiert. Informationen zum Installieren der neuesten Version des Cloud SDK finden Sie in der Dokumentation zum Cloud SDK.

  2. Beim Entpacken dieser Beispiele wird ein "reviews"-Ordner erstellt:

    gunzip sentiment-samples.tgz
    tar -xvf sentiment-samples.tar
    
  3. Führen Sie die Sentimentanalyse an einer der angegebenen Dateien durch:

    python sentiment-analysis.py reviews/bladerunner-pos.txt
    Sentence 0 has a sentiment score of 0.8
    Sentence 1 has a sentiment score of 0.9
    Sentence 2 has a sentiment score of 0.8
    Sentence 3 has a sentiment score of 0.2
    Sentence 4 has a sentiment score of 0.1
    Sentence 5 has a sentiment score of 0.4
    Sentence 6 has a sentiment score of 0.3
    Sentence 7 has a sentiment score of 0.4
    Sentence 8 has a sentiment score of 0.2
    Sentence 9 has a sentiment score of 0.9
    Overall Sentiment: score of 0.5 with magnitude of 5.5
    

Das oben aufgeführte Beispiel würde eine relativ positive (Score-Wert von 0.5) und eine relativ emotionale (Magnitude-Wert von 5.5) Rezension ergeben.

Beim Durchführen einer Analyse für die anderen Beispiele müssten sich Werte ergeben, die den unten aufgeführten Werten ähnlich sind:

python sentiment-analysis.py reviews/bladerunner-neg.txt
...
Overall Sentiment: score of -0.6 with magnitude of 3.3

python sentiment-analysis.py reviews/bladerunner-mixed.txt
...
Overall Sentiment: score of 0 with magnitude of 4.7

python sentiment-analysis.py reviews/bladerunner-neutral.txt
...
Overall Sentiment: score of -0.1 with magnitude of 1.8

Beachten Sie, dass die Magnitude-Werte alle ähnlich sind (und einen relativ gleichen Anteil an emotional relevanter Stimmung zeigen), ausgenommen beim "neutralen" Fall, der eine Rezension mit nicht viel emotionaler, weder positiver noch negativer, Stimmung ergibt. (Weitere Informationen zu Score- und Magnitude-Stimmungswerten und ihrer Interpretation finden Sie unter Werte der Sentimentanalyse interpretieren.)

Wenn Sie die Sentimentanalyse mit einer größeren Datenmenge ausführen möchten, können Sie das von Stanford bereitgestellte Dataset mit IMDB-Filmrezensionen nutzen. So rufen Sie diese Filmrezensionen ab:

  1. Laden Sie das große Dataset mit Filmrezensionen herunter.
  2. Entpacken Sie die Datei in Ihr Arbeitsverzeichnis. Die Filmrezensionen sind in train- und test-Datenverzeichnisse in den Verzeichnissen pos und neg aufgeteilt, wobei jede Textdatei eine Filmrezension enthält.
  3. Führen Sie das sentiment-analysis.py-Tool an einer der Filmrezensionstextdateien aus.

Herzlichen Glückwunsch! Sie haben Ihre ersten Ableitungsaufgaben mit der Google Cloud Natural Language API ausgeführt.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Cloud Natural Language API