You are currently viewing Exkurs Natural Language APIs
Beitragsbild: Google Syntax Analyse

Exkurs Natural Language APIs

Alle großen Cloud Service Provider haben ihr Produktportfolio inzwischen um Dienste für die Verarbeitung von natürlicher Sprache (Natural Language Processing – NLP) erweitert, die ohne explizites Expertenwissen genutzt werden können. In diesem Artikel möchte ich Ihnen einen Überblick über den Funktionsumfang, die Funktionsweise und den Nutzen dieser Dienste geben.

Nutzen von NLP Services

Fangen wir mit dem Nutzen an: Warum und wozu sollte ich eine NLP API nutzen? Dazu eine kleine Erklärung was unter der Haube dieser Technologien steckt. Die Verarbeitung natürlicher Sprache ist, wie Sie sich denken können, ziemlich kompliziert. Man braucht sehr große Datenmengen, komplexe Logiken, lernende Systeme und enorme Rechenpower um so ein System auf die Beine zu stellen. Also warum sich so viel Arbeit machen, wenn man so eine Technologie auch einfach als Service einkaufen kann? Firmen wie Google, Microsoft oder Amazon haben die Arbeit schon für Sie gemacht und verdienen nun Geld damit.

Um noch ein paar Buzzwords zu nennen: Wir befinden uns im Feld der künstlichen Intelligenz oder kurz KI (Artificial Intelligence – AI), genauer gesagt im Bereich des maschinellen Lernens (Machine Learning – ML). Die Cloud Anbieter haben also in ihren Rechenzentren die riesigen Datenmengen, die sie sowieso täglich verarbeiten, genutzt um Systeme zu trainieren, damit sie bspw. die Sprache oder die Stimmung eines Textes erkennen können. Dazu werden unter anderem verschiedenste statistische Verfahren eingesetzt. State of the Art sind sogenannte künstliche neuronale Netze.

Sie können nun also solch ein System für Ihre eigenen Zwecke nutzen, z.B. um ihre eigenen Texte analysieren zu lassen.

Funktionsweise von NLP Diensten

Wie funktioniert so ein Natural Language Service? Ganz einfach: die Dienste lassen sich über eine API (Application Programming Interface – Programmierschnittstelle) ansprechen. Das funktioniert so: Sie senden aus Ihrer eigenen Anwendung heraus eine Anfrage an die NLP API, z.B. „Analysiere diesen Text“. Nach erfolgreicher Authentifizierung wird der Text analysiert und Sie erhalten das gewünschte Ergebnis zurück, z.B. „Sprache ist Englisch“, „Stimmung ist gut“, oder „Es geht um Autos“. Mit dieser Information können Sie dann weiterarbeiten, bspw. um ihren Chatbot auf Englisch zu starten, um eine Markierung im CRM zu setzen „Gute Stimmung – Kunde ist zufrieden“, oder um die Anfrage in Ihrem Ticket System an die richtige Abteilung weiterzuleiten (z.B. Autokredite).

Funktionsweise NLP API Call
Funktionsweise NLP API Call

Preise: Sieht ja ziemlich nützlich aus, aber was kostet mich der Spaß? In der Regel wird hier pro Transaktion abgerechnet, bzw. pro API Call. Die Preise der Anbieter variieren stark. Dies kann gerade bei einer sehr großen Menge an Transaktionen zu erheblichen Kostenunterschieden führen. Mehr dazu bei den einzelnen Providern und am Ende des Artikels in der Vergleichstabelle.

Qualität: Die Qualität der Ergebnisse der einzelnen Anbieter variiert genauso stark wie deren Preise. Da der Einstieg in der Regel kostenlos ist, lohnt es sich, einen PoC (Proof of Concept) für den eigenen Use Case zu bauen und die Resultate zu vergleichen. Gerade bei domänenspezifischen Texten (z.B. Fachtexten) kann es vorkommen, dass die Qualität der Ergebnisse zu wünschen übrig lässt. Dann empfiehlt sich die Nutzung von benutzerdefinierten Modellen, die mit den entsprechenden Fachtexten trainiert werden können. Wichtig ist auch zu prüfen, welche Sprachen von dem jeweiligen Dienst unterstützt werden.

Funktionsumfang von NLP APIs

Was kann ich nun genau mit den NLP APIs anfangen? Neben Preis und Qualität gibt es auch beim Funktionsumfang große Unterschiede von Anbieter zu Anbieter. Hier ein Überblick:

  • Spracherkennung (Language Recognition): In welcher Sprache wurde der Text verfasst? Deutsch, Englisch, Japanisch…
  • Inhaltsklassifizierung (Content Classification) und Schlüsselphrasenextraktion (Keyword Extraction): Um was geht es in dem Text? Was ist die primäre Aussage, bzw. das Hauptthema? Kategorisierung, bzw. Einordnung in ein hierarchisches System.
  • Syntaxanalyse (Syntax Analysis): Sätze und Satzteile sowie deren Abhängigkeiten können erkannt und in einer Baumstruktur dargestellt werden.
  • Entitätserkennung (Entity Recognition): Im Text vorkommende Dinge wie Personen, Orte oder Ereignisse können extrahiert werden.
  • Beziehungsanalyse (Relationship Analysis) und Semantische Analyse (Semantic Role) : Hier wird die Bedeutung eines Satzes analysiert. Die Beziehung zwischen erkannten Entitäten kann dargestellt werden, z.B. „Konzert (Ereignis) in München (Ort) am 22.03.2019 (Zeit/Datum)“.
    Sätze werden in eine Subjekt-Aktion-Objekt Form gebracht und Entitäten können als Subjekt oder Objekt einer Aktion erkannt werden, z.B. „Peter kauft Auto“.
  • Stimmungsanalyse (Sentiment Analysis) und Emotionsanalyse (Emotional Analysis): Ist die im Text ausgedrückte Stimmung eher positiv, eher negativ, oder neutral? Welche Emotionen kommen im Text vor (Freude, Wut, Angst)?

Auch bei den Ergebnissen der Analysen kommen statistische Verfahren zum Einsatz. So wird bspw. bei der Spracherkennung oder bei der Inhaltsklassifizierung eine Wahrscheinlichkeit (Probability), bzw. ein Confidence Score mitgeliefert, der besagt zu wie viel Prozent sich das System sicher ist, dass es sich um die erkannte Sprache oder die erkannte Kategorie handelt.

Auch bei der Stimmungsanalyse werden die Ergebnisse in einem Score ausgedrückt, bspw. in einem Wert zwischen 0 und 1. Je näher der Wert an 0 liegt, desto negativer die Stimmung. Je näher er an 1 liegt, desto positiver die Stimmung.

Google Natural Language API

Teil der Google Cloud Platform (GCP) im Bereich Künstliche Intelligenz und Maschinelles Lernen ist die Natural Language API. Sie bietet:

  • Entitätserkennung
  • Stimmungsanalyse
  • Syntaxanalyse
  • Inhaltsklassifizierung

Falls einem die Standardoptionen nicht reichen, kann man auch mit Hilfe des Dienstes AutoML benutzerdefinierte Modelle anlegen, trainieren und für Analysen nutzen.

Ich denke man kann Google guten Gewissens als führend im Bereich der Sprachverarbeitung bezeichnen, da die Firma die zugrunde liegenden, maschinellen Lerntechnologien (wie bspw. TensorFlow) maßgeblich mitentwickelt hat schon seit Jahren sehr erfolgreich für die eigenen Produkte wie bspw. die Google Suche oder den Google Assistant nutzt.

Auf der Produktwebsite ist ein praktisches Tool integriert, mit welchem man die Fähigkeiten der NLP API direkt im Browser ausprobieren kann. Man gibt einfach einen Text ein, klickt auf „Analyze“ und bekommt direkt das Resultat geliefert.

Google Entity Analysis Demo
Google Entitätsanalyse Demo
Google Sentiment Analysis Demo
Google Stimmungsanalyse Demo

Google bietet eine sehr ausführliche Entwicklerdokumentation mit Fokus auf Open Source Technologien und vielen Code-Beispielen und SDKs (Software Development Kits) in den Programmiersprachen C#, Go, Java, Node.js, Python und PHP.

Unterstütze Sprachen
Der Google Natural Language Service unterstützt aktuell die Sprachen: Chinesisch (vereinfacht und traditionell), Deutsch, Englisch, Französisch, Italienisch, Japanisch, Koreanisch, Portugiesisch und Spanisch.
Zur Sprachunterstützung

Preise
5000 Transaktionen pro Monat kostenlos
bis 1Mio Transaktionen: 1$ / 1000 Transaktionen
bis 5 Mio Transaktionen: 0,5$ / 1000 Transaktionen
über 5 Mio Transaktionen: 0,25$ / 1000 Transaktionen
zu den Preisen

Microsoft Text Analyse API

In Microsofts Azure Cloud gibt es im Bereich der kognitiven Services die Textanalysen. Diese unterstützen folgende Funktionen:

  • Stimmungsanalyse
  • Stichwortextraktion
  • Spracherkennung
  • Entitätserkennung

Auch bei Microsoft gibt es auf der Produktwebsite ein nettes Demo Tool, mit dem man die Funktionalität ausprobieren kann.

Microsoft Azure NLP Demo
Microsoft Azure NLP Demo

In jenem Demo-Tool kann man sich sogar direkt den maschinenlesbaren JSON-Code des Analyseresultats ansehen, so wie er auch tatsächlich von der API zurückgegeben wird.

Microsoft Azure NLP Demo JSON
Microsoft Azure NLP Demo JSON

Die ebenfalls sehr umfangreiche Entwicklerdokumentation bietet high level Informationen, Schnellstarts, Tutorials und Code Beispiele in den Programmiersprachen C#, Java, Node.js, Python und Go.

Unterstütze Sprachen
Aktuell werden von Microsofts Textanalyse etwa 18 Sprachen unterstützt.
zur Sprachunterstützung

Preise
5000 Transaktionen pro Monat frei
bis 500.000 Transaktionen : €1,687 / 1.000 Transaktionen
bis 2,5 Mio. Transaktionen: €0,844 / 1.000 Transaktionen
bis 10 Mio. Transaktionen: €0,422 / 1.000 Transaktionen
über 10 Mio. Transaktionen: €0,211 / 1.000 Transaktionen
zu den Preisen

Amazon Comprehend

Bei den Amazon Web Services (AWS) gibt es im Bereich Machine Learning den Dienst Comprehend mit folgenden Funktionen:

  • Stichwortextraktion
  • Stimmungsanalyse
  • Syntaxanalyse
  • Entitätserkennung
  • Spracherkennung
  • Erkennung von medizinischen Informationen: NERe (Medical Named Entity and Relationship Extraction)

Auch Amazon Comprehend lässt sich erweitern und unterstützt die Kreation und Nutzung eigener Modelle.

Zugriff auf das Browser-Tool zum testen der API erhält man erst nachdem man sich in der AWS Console angemeldet hat. Dann liefert es ähnlich wie bei den anderen Anbietern einen guten Einblick in die Funktionalität und die Qualität der Ergebnisse.

AWS Comprehend Testing Tool - Syntax Analyse
AWS Comprehend Testing Tool – Syntax Analyse

Die Entwicklerdokumentation ist, wie von AWS bekannt, sehr ausführlich. SDKs (Software Development Kits) sind verfügbar für die Programmiersprachen .NET, C++, Go, Java, JavaScript, PHP, Python und Ruby.

Unterstützte Sprachen
Aktuell werden von Amazon Comprehend die Sprachen Englisch, Französisch, Deutsch, Italienisch, Portugisisch und Spanisch unterstützt.
zur Sprachunterstützung

Preise
50.000 Transaktionen pro Monat frei
bis 10 Mio Transaktionen: 0,0001$ pro Transaktion
bis 50 Mio Transaktionen: 0,00005$ pro Transaktion
zu den Preisen

IBM Watson Natural Language Understanding

In der IBM Cloud ist der NLP Service Teil der Watson AI: Natural Language Understanding. Im beachtlichen Funktionsumfang sind enthalten:

  • Kategorisierung
  • Emotionserkennung
  • Entitätserkennung
  • Stichwortextraktion
  • Metadatenanalyse
  • Beziehungsanalyse
  • Semantische Analyse
  • Stimmungsanalyse

Der Watson Natural Language Service liefert beeindruckend gute Ergebnisse.

Auch bei IBM gibt es die Möglichkeit custom Modelle zu kreieren, falls einem der Standardfunktionsumfang nicht ausreicht. Ein schönes Demo-Tool, mit welchem man die verschiedenen Funktionalitäten im Browser ausprobieren kann, ist ebenso verfügbar.

IBM NLP Demo Semantische Analyse
IBM NLP Demo Semantische Analyse

Die ausführliche, übersichtliche und einfach verständliche Entwicklerdokumentation enthält Beispiele in den Programmiersprachen Go, Java, Node, Python und Ruby.

IBM Cloud NLP Developer Docs
IBM Cloud NLP Developer Docs

Unterstützte Sprachen
Vom IBM Watson Natural Language Understanding Service werden etwa 13 Sprachen unterstützt:
zur Sprachunterstützung

Preise
30.000 Transaktionen pro Monat kostenlos
bis 250.000 Transaktionen: $0,003 pro Transaktion
bis 5.000.000 Transaktionen: $0,001 pro Transaktion
über 5.000.000 Transaktionen: $0,0002 pro Transaktion
Custom Modelle: $800 pro Monat pro Modell

SalesForce Einstein Language

Bei SalesForce sind die sprachverarbeitenden Produkte in der Einstein AI untergebracht. Über die Einstein Language API können eigene Natural Language Processing Modelle angelegt werden. Diese können dann später für Vorhersagen (Predictions) genutzt werden. Die Einstein Language bietet aber auch vordefinierte Modelle, die genutzt werden können. Es gibt aktuell zwei Hauptfunktionen:

  • Einstein Intent: Kategorisierung: Thema / Absicht des Textes
  • Einstein Sentiment: Stimmungsanalyse

Die Entwicklerdokumentation ist im Gegensatz zu den Mitbewerbern noch etwas rudimentär und unübersichtlich. Als Beispiele bekommt man nur die puren cURL Calls sowie die API Response im JSON Format. Einem erfahrenen Entwickler sollte das jedoch ausreichen.

Salesforce Einstein NLP Developer Dokumentation
Salesforce Einstein NLP Developer Dokumentation

Unterstütze Sprachen
Der Einstein Language Service unterstützt aktuell nur die Sprache Englisch.

Preise
2.000 Transaktionen pro Montat kostenlos
1 Mio. Transaktionen: 4000$ = $0,004 / Transaktion
zu den Preisen

Heroku Plattform

Auch bei der ebenfalls zu SalesForce gehörenden Self-Service Plattform Heroku können die NLP Produkte Einstein Intent und Einstein Sentiment genutzt werden.
Die Preise liegen hier bei:
1 Mio Transaktionen: 3400€ = 0,0034€ / Transaktion
zu den Preisen

Plattformvergleich

FunktionenAmazonGoogleIBMMicrosoftSalesforce
Spracherkennungxxxx
Inhaltsklassifizierungxxxxx
Syntaxanalysexx
Entitätserkennungxxxx
Semantische Analysex
Stimmungsanalysexxxxx
Custom Modellexxxx
Preise pro Transaktion
bei 1 Mio Transaktionen
pro Monat
0,000087€0,00043€0,00087€0,00844€0,0035€

Fazit und Ausblick

Es ist abzusehen, dass die genannten Anbieter in naher Zukunft ihren Funktionsumfang angleichen bzw. erweitern werden. Die Qualität der Ergebnisse wird kontinuierlich steigen und die Preise werden vermutlich weiter fallen.