Bearbeiten

Freigeben über


Technologie zur Verarbeitung von natürlicher Sprache

Azure KI Services
Azure Databricks
Azure HDInsight
Azure Synapse Analytics

Die Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) hat viele Verwendungen: Standpunktanalyse, Textgegenstandserkennung, Sprachenerkennung, Schlüsselbegriffserkennung und Dokumentkategorisierung.

Insbesondere können Sie NLP für folgendes verwenden:

  • Klassifizieren Sie Dokumente. Sie können z. B. Dokumente als vertraulich oder Spam kennzeichnen.
  • Führen Sie nachfolgende Verarbeitung oder Suchen aus. Sie können die NLP-Ausgabe für diese Zwecke verwenden.
  • Fassen Sie Text zusammen, indem Sie die Entitäten identifizieren, die im Dokument vorhanden sind.
  • Markieren Sie Dokumente mit Schlüsselwörtern. Für die Schlüsselwörter kann NLP identifizierte Entitäten verwenden.
  • Führen Sie die inhaltsbasierte Suche und Abruf aus. Das Tagging ermöglicht diese Funktionalität.
  • Fassen Sie die wichtigen Themen eines Dokuments zusammen. NLP kann identifizierte Entitäten in Themen kombinieren.
  • Kategorisieren Sie Dokumente für die Navigation. Für diesen Zweck verwendet NLP erkannte Themen.
  • Zählen Sie verwandte Dokumente basierend auf einem ausgewählten Thema auf. Für diesen Zweck verwendet NLP erkannte Themen.
  • Bewerten Sie Text für die Stimmung. Mithilfe dieser Funktionalität können Sie den positiven oder negativen Ton eines Dokuments bewerten.

Apache®, Apache Spark und das Flammenlogo sind entweder eingetragene Marken oder Marken der Apache Software Foundation in den USA und/oder anderen Ländern. Die Verwendung dieser Markierungen impliziert kein Endorsement durch die Apache Software Foundation.

Mögliche Anwendungsfälle

Geschäftsszenarien, die von benutzerdefinierten NLP profitieren können, umfassen:

  • Dokumentinformationen für handschriftliche oder maschinell erstellte Dokumente in den Bereichen Finanzen, Gesundheit, Einzelhandel, öffentlicher Sektor und anderen Bereichen.
  • Branchenagnostische NLP-Aufgaben für die Textverarbeitung, z. B. Name Entity Recognition (NER), Klassifizierung, Zusammenfassung und Beziehungsextraktion. Diese Aufgaben automatisieren den Prozess zum Abrufen, Identifizieren und Analysieren von Dokumentinformationen wie Text und unstrukturierten Daten. Beispiele für diese Aufgaben sind Risikoschichtmodelle, Ontologieklassifizierung und Einzelhandelszusammenfassungen.
  • Informationsabruf und Wissensdiagrammerstellung für die semantische Suche. Diese Funktionalität ermöglicht es, medizinische Wissensdiagramme zu erstellen, die die Arzneimittelermittlung und klinische Studien unterstützen.
  • Textübersetzung für Unterhaltungs-KI-Systeme in kundenbezogenen Anwendungen in Einzelhandels-, Finanz-, Reise- und anderen Branchen.

Apache Spark als angepasstes NLP-Framework

Apache Spark ist ein Framework für die Parallelverarbeitung, das In-Memory-Verarbeitung unterstützt, um die Leistung von Big Data-Analyseanwendungen zu steigern. Azure Synapse Analytics, Azure HDInsight und Azure Databricks bieten Zugriff auf Spark und nutzen ihre Verarbeitungsleistung.

Für angepasste NLP-Workloads dient Spark NLP als effizientes Framework für die Verarbeitung einer großen Textmenge. Diese Open-Source-NLP-Bibliothek bietet Python-, Java- und Scala-Bibliotheken, die die vollständige Funktionalität herkömmlicher NLP-Bibliotheken wie spaCy, NLTK, Stanford CoreNLP und Open NLP bieten. Spark NLP bietet auch Funktionen wie Rechtschreibprüfung, Stimmungsanalyse und Dokumentklassifizierung. Spark NLP verbessert die vorherigen Bemühungen, indem es die modernste Genauigkeit, Geschwindigkeit und Skalierbarkeit bietet.

Diagramm, das Bereiche der N L P-Funktionalität wie die Entitätserkennung anzeigt. Verschiedene Felder listet N L P-Annotatoren, Modelle und unterstützte Sprachen auf.

Aktuelle öffentliche Benchmarks zeigen Spark NLP als 38 und 80 Mal schneller als spaCy – mit vergleichbarer Genauigkeit für das Training benutzerdefinierter Modelle. Spark NLP ist die einzige Open-Source-Bibliothek, die einen verteilten Spark-Cluster verwenden kann. Spark NLP ist eine native Erweiterung von Spark ML, die direkt auf Datenframes funktioniert. Infolgedessen führt die Beschleunigungen bei einem Cluster zu einer anderen Reihenfolge der Leistungsgewinne. Da jede Spark NLP-Pipeline eine Spark ML Pipeline ist, eignet sich Spark NLP gut für die Erstellung einheitlicher NLP- und Machine Learning-Pipelines wie Dokumentklassifizierung, Risikovorhersage und Empfehlungspipelinen.

Neben hervorragender Leistung bietet Spark NLP auch modernste Genauigkeit für eine wachsende Anzahl von NLP-Aufgaben. Das Spark NLP-Team liest regelmäßig die neuesten relevanten akademischen Dokumente und implementiert modernste Modelle. In den letzten zwei bis drei Jahren haben die besten Modelle Deep Learning verwendet. Die Bibliothek verfügt über vordefinierte Deep Learning-Modelle für Zeichenentitätserkennung, Dokumentklassifizierung, Stimmungs- und Emotionserkennung und Satzerkennung. Die Bibliothek umfasst auch Dutzende von vorab trainierten Sprachmodellen, die Unterstützung für Wörter, Sätze und Dokumenteinbettungen enthalten.

Die Bibliothek verfügt über optimierte Builds für CPUs, GPUs und die neuesten Intel Xeon-Chips. Sie können Trainings- und Rückschlussprozesse skalieren, um Spark-Cluster zu nutzen. Diese Prozesse können in der Produktion auf allen beliebten Analyseplattformen ausgeführt werden.

Herausforderungen

  • Die Verarbeitung einer Sammlung von Freiformulartextdokumenten erfordert eine erhebliche Menge an Berechnungsressourcen. Die Verarbeitung ist auch zeitintensiv. Solche Prozesse umfassen häufig GPU-Berechnungsbereitstellung.
  • Ohne ein standardisiertes Dokumentformat kann es schwierig sein, durchweg genaue Ergebnisse zu erzielen, wenn Sie die Freitextverarbeitung zum Extrahieren bestimmter Fakten aus einem Dokument verwenden. Wenn Sie beispielsweise eine Textdarstellung einer Rechnung haben, kann es schwierig sein, einen Prozess zu erstellen, der Rechnungsnummer und -datum korrekt extrahiert, wenn Rechnungen von verschiedenen Lieferanten kommen.

Wichtige Auswahlkriterien

In Azure bieten Spark-Dienste wie Azure Databricks, Azure Synapse Analytics und Azure HDInsight NLP-Funktionen, wenn Sie sie mit Spark NLP verwenden. Azure KI Services stellt eine weitere Option für die NLP-Funktionalität dar. Um zu entscheiden, welche Dienste verwendet werden sollen, sollten Sie diese Fragen berücksichtigen:

  • Möchten Sie vorgefertigte oder vortrainierte Modelle verwenden? Wenn dies der Fall ist, sollten Sie die APIs verwenden, die Azure KI Services bereitstellt. Oder laden Sie Ihr Modell über Spark NLP herunter.

  • Müssen Sie benutzerdefinierte Modelle anhand eines großen Korpus mit Textdaten trainieren? Wenn ja, sollten Sie Azure Databricks, Azure Synapse Analytics oder Azure HDInsight mit Spark NLP verwenden.

  • Benötigen Sie spezielle NLP-Funktionen, z.B. Tokenisierung, Wortstammerkennung, Lemmatisierung und Vorkommenshäufigkeit/Inverse Dokumenthäufigkeit (Term Frequency/Inverse Document Frequency, TF/IDF)? Wenn ja, sollten Sie Azure Databricks, Azure Synapse Analytics oder Azure HDInsight mit Spark NLP verwenden. Oder verwenden Sie eine Open-Source-Softwarebibliothek in Ihrem gewählten Verarbeitungstool.

  • Benötigen Sie einfache, allgemeine NLP-Funktionen wie Entitäts- und Absichtsidentifizierung, Themenerkennung, Rechtschreibprüfung oder Standpunktanalyse? Wenn dies der Fall ist, sollten Sie die APIs verwenden, die Azure KI Services bereitstellt. Oder laden Sie Ihr Modell über Spark NLP herunter.

Funktionsmatrix

In den folgenden Tabellen sind die Hauptunterschiede in den Funktionen der NLP-Dienste zusammengefasst.

Allgemeine Funktionen

Funktion Spark-Dienst (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) mit Spark NLP Azure KI Services
Bereitstellung von vortrainierten Modellen als Dienst Ja Ja
REST-API Ja Ja
Programmierbarkeit Python, Scala Weitere Informationen zu unterstützten Sprachen finden Sie unter Weitere Ressourcen
Unterstützt die Verarbeitung von Big Datasets und großen Dokumenten Ja Nein

NlP-Funktionen auf niedriger Ebene

Funktion von Annotatoren Spark-Dienst (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) mit Spark NLP Azure KI Services
Satzerkennung Ja Nein
Tiefe Satzerkennung Ja Ja
Tokenizer Ja Ja
N-Gramm-Generator Ja Nein
Wortsegmentierung Ja Ja
Wortstammerkennung Ja Nein
Lemmatisierung Ja Nein
Satzteilmarkierung Ja Nein
Abhängigkeitsparser Ja Nein
Sprachübersetzung Ja Nein
Stoppwortbereinigung Ja Nein
Rechtschreibkorrektur Ja Nein
Normalizer Ja Ja
Textabgleich Ja Nein
TF/IDF Ja Nein
Abgleich regulärer Ausdrücke Ja Eingebetteter Language Understanding Intelligent Service (LUIS). Wird nicht in Conversational Language Understanding (CLU), das LUIS ersetzt, unterstützt.
Datumsabgleich Ja Über DateTime-Erkennungen in LUIS und CLU möglich
Chunker Ja Nein

NlP-Funktionen auf hoher Ebene

Funktion Spark-Dienst (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) mit Spark NLP Azure KI Services
Rechtschreibprüfung Ja Nein
Zusammenfassung Ja Ja
Fragen und Antworten Ja Ja
Stimmungserkennung Ja Ja
Emotionserkennung Ja Unterstützt Opinion Mining
Tokenklassifizierung Ja Ja, über benutzerdefinierte Modelle
Textklassifizierung Ja Ja, über benutzerdefinierte Modelle
Textdarstellung Ja Nein
NER Ja Ja – Textanalyse bietet einen Satz von NER und benutzerdefinierte Modelle sind in der Entitätserkennung
Entitätserkennung Ja Ja, über benutzerdefinierte Modelle
Spracherkennung Ja Ja
Unterstützt neben Englisch noch andere Sprachen Ja, unterstützt mehr als 200 Sprachen Ja, unterstützt mehr als 97 Sprachen

Einrichten von Spark NLP in Azure

Um Spark NLP zu installieren, verwenden Sie den folgenden Code, ersetzen sie jedoch <version> durch die neueste Versionsnummer. Weitere Informationen finden Sie in der Spark NLP-Dokumentation.

# Install Spark NLP from PyPI.
pip install spark-nlp==<version>

# Install Spark NLP from Anacodna or Conda.
conda install -c johnsnowlabs spark-nlp

# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP as an external JAR after compiling and building Spark NLP by using sbt assembly.
spark-shell --jars spark-nlp-assembly-3 <version>.jar

Entwickeln von NLP-Pipelines

Für die Ausführungsreihenfolge einer NLP-Pipeline folgt Spark NLP demselben Entwicklungskonzept wie herkömmliche Spark ML Machine Learning-Modelle. Spark NLP wendet jedoch NLP-Techniken an.

Diagramm, das N L P-Pipelinephasen zeigt, z. B. Dokumentzusammenstellung, Satzerkennung, Tokenisierung, Normalisierung und Worteinbettung.

Die Kernkomponenten einer Spark NLP-Pipeline sind:

  • DocumentAssembler: Ein Transformator, der Daten vorbereitet, indem sie in ein Format geändert werden, das Spark NLP verarbeiten kann. Diese Phase ist der Einstiegspunkt für jede Spark NLP-Pipeline. DocumentAssembler kann entweder eine String-Spalte oder ein Array[String] lesen. Sie können setCleanupMode verwenden, um den Text vorab zu verarbeiten. Standardmäßig ist dieser Modus deaktiviert.

  • SentenceDetector: Ein Annotator, der Satzgrenzen erkennt, indem er den angegebenen Ansatz verwendet. Dieser Annotator kann jeden extrahierten Satz in einem Array zurückgeben. Er kann auch jeden Satz in einer anderen Zeile zurückgeben, wenn Sie explodeSentences auf "true" festlegen.

  • Tokenizer: Ein Annotator, der rohen Text in Token trennt, oder Einheiten wie Wörter, Zahlen und Symbole, und die Token in einer TokenizedSentence-Struktur zurückgibt. Diese Klasse ist nicht angepasst. Wenn Sie einen Tokenizer anpassen, verwendet das interne RuleFactory die Eingabekonfiguration zum Einrichten von Tokenisierungsregeln. Tokenizer verwendet offene Standards zum Identifizieren von Token. Wenn die Standardeinstellungen Ihre Anforderungen nicht erfüllen, können Sie Regeln hinzufügen, um Tokenizer anzupassen.

  • Normalizer: Ein Annotator, der Token bereinigt. Normalizer erfordert Stämme. Normalizer verwendet reguläre Ausdrücke und ein Wörterbuch, um Text zu transformieren und schmutzige Zeichen zu entfernen.

  • WordEmbeddings: Nachschlageannotatoren, die Token zu Vektoren zuordnen. Sie können setStoragePath verwenden, um ein benutzerdefiniertes Token-Nachschlagewörterbuch für Einbettungen angeben. Jede Zeile Ihres Wörterbuchs muss ein Token und seine Vektordarstellung enthalten – getrennt durch Leerzeichen. Wenn ein Token im Wörterbuch nicht gefunden wird, ist das Ergebnis ein Nullvektor derselben Dimension.

Spark NLP verwendet Spark MLlib-Pipelines, die MLflow nativ unterstützt. MLflow ist eine Open-Source-Plattform für den Machine-Learning-Lebenszyklus. Ihre Komponenten umfassen Folgendes:

  • MLflow-Nachverfolgung: Aufzeichnung von Experimenten und Bereitstellung einer Möglichkeit zum Abfragen von Ergebnissen.
  • MLflow-Projekte: Ermöglicht die Ausführung von Data Science-Code auf jeder Plattform.
  • MLflow-Modelle: Stellt Modelle für verschiedene Umgebungen bereit.
  • Modellregistrierung: Verwaltet Modelle, die Sie in einem zentralen Repository speichern.

MLflow ist in Azure Databricks integriert. Sie können MLflow in jeder anderen Spark-basierten Umgebung installieren, um Ihre Experimente nachzuverfolgen und zu verwalten. Sie können auch die MLflow-Modellregistrierung verwenden, um Modelle für Produktionszwecke zur Verfügung zu stellen.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautoren:

Nächste Schritte