Bei der Entwicklung von NLP-Anwendungen in der Praxis sind Sie oft mit begrenzten (markierten) Daten, Latenzanforderungen, Kostenbeschränkungen usw. konfrontiert, die die Ausschöpfung des vollen Potenzials Ihrer Lösung behindern.
Ein hybrider Aufbau, bei dem Sie Fachwissen nutzen , um die Genauigkeit, Effizienz, Zuverlässigkeit und/oder Interpretierbarkeit zu verbessern, wäre perfekt.
Aber es ist alles andere als offensichtlich, wie man eine solche hybride Lösung entwickeln kann.
Das ist so wenig offensichtlich, dass wir beschlossen haben, am 17. Oktober 2022 ein Webinar zu diesem Thema zu veranstalten. Wenn Sie dies vor diesem Datum lesen, können Sie sich hier anmelden!
Schauen wir uns einige gängige hybride NLP-Entwurfsmuster an und betrachten Beispiele dafür, wann Sie sich für welches Muster entscheiden sollten.
Das erste Muster, das wir betrachten, ist der kontradiktorische Fall: Sie wählen entweder eine rein regelbasierte oder eine rein ML-basierte Lösung.
Betrachten wir einige Beispiele, bei denen diese Entwurfsmuster sehr sinnvoll sind:
Named Entity Recognition (NER): Die Entscheidung für oder gegen einen ML-basierten Ansatz läuft im Wesentlichen darauf hinaus, wie kontextbezogen die Entitäten sind.
Datumsangaben können beispielsweise auf eine bestimmte Weise strukturiert sein (z. B. "TT/MM/JJJJ"). Wenn eine Entität diesem Format folgt, ist sie ein Datum, andernfalls ist sie es nicht. Es handelt sich also um eine sehr "kontextunabhängige Entität", d. h. ein konkretes festes Muster bestimmt, ob es sich um ein Datum handelt oder nicht, unabhängig vom Kontext.
Es ist einfach, diese Art von Entitäten mit Hilfe einfacher Regeln zu extrahieren.
Nehmen wir jedoch an, Sie wollen nur Geburtsdaten extrahieren und keine anderen Datumsarten. Nun haben wir es mit einer sehr "kontextabhängigen Entität" zu tun: Geburtsdaten und andere Datumsarten sehen genau gleich aus; ohne Kontext wäre man nicht in der Lage, zwischen den beiden zu unterscheiden.
Es ist sehr schwierig, diese Entitäten auf regelbasierte Weise zu extrahieren, daher ist ein rein ML-basierter Ansatz am besten geeignet.
Textklassifizierung: In Anwendungsfällen der Textklassifizierung sind die zugrundeliegenden Merkmale, die bestimmen, zu welcher Klasse ein Text gehört, oft sehr latent. Da regelbasierte Systeme in diesen Szenarien in der Regel nicht gut abschneiden, ist ein rein ML-basiertes Entwurfsmuster in der Regel der richtige Weg. Das Gleiche gilt für komplexe Aufgaben wie die Extraktion von Schlüsselwörtern, Textzusammenfassungen usw.
Das nächste Muster, das wir uns ansehen werden, hat einen sequentiellen Charakter: Die Geschäftsregeln fungieren entweder als erster Filter oder als Nachbearbeitungsschritt für das ML-Modell.
Schauen wir uns noch einige Beispiele an:
Hochpassfilter: Angenommen, Sie möchten Geburtsdaten und keine anderen Daten extrahieren, dann könnten Sie sich für einen reinen ML-Ansatz entscheiden (siehe oben). Allerdings enthält nur ein Bruchteil Ihrer Daten tatsächlich Datumsangaben, so dass eine Inferenz für jede einzelne Instanz eine ziemliche Verschwendung wäre.
Wir wissen, dass jedes Geburtsdatum auch ein Datum ist und dass Daten einem festen Muster folgen. Wir können also zunächst mit einer einfachen Geschäftsregel prüfen, ob ein Text ein Datum enthält, und dann nur in den Fällen, in denen dies der Fall ist, eine Inferenz durchführen.
Mit ein paar einfachen Regeln können Sie die von Ihnen genutzte Rechenleistung oft drastisch reduzieren, ohne dass die Leistung darunter leidet.
(Semantische) Suche: In ähnlicher Weise wie oben beschrieben können Sie die Datenmenge, die Sie für eine semantische Suche verarbeiten, reduzieren, indem Sie zunächst die Ergebnisse herausfiltern, bei denen Sie (fast) sicher sind, dass sie nicht relevant sind (z. B. einen TF-IDF-Score von (fast) Null haben). Diese Art von Aufbau wird als "Abrufen und neu einordnen"-Architektur bezeichnet.
Je nach Datenlage ist eine Verringerung der Latenzzeit um einen zweistelligen Prozentsatz möglich, wobei die Auswirkungen auf die Suchleistung vernachlässigbar sind.
Entitätsverknüpfung: Nehmen wir an, wir möchten Produktnamen zusammen mit Verkaufspreisen extrahieren und die beiden Entitäten miteinander verknüpfen (d. h. herausfinden, welcher Verkaufspreis zu welchem Produktnamen gehört). Wir kennen unsere Daten und gehen einfach davon aus, dass ein Verkaufspreis zum nächstgelegenen Produktnamen gehört.
Dies ist ein regelbasierter Nachbearbeitungsschritt ("Verknüpfung"), der nach der ML-basierten Extraktion von Verkaufspreisen und Produktnamen erfolgt.
Bei diesem Muster wird versucht, die Ergebnisse von Regeln und ML als Ensemble zu kombinieren.
Auch hierfür gibt es Beispiele:
Mehr Determinismus: Nicht alle Fehler sind gleich. Vielleicht gibt es einige Muster, von denen Sie wissen, dass sie richtig sind, und Sie wollen, dass Ihre Lösung jedes Mal richtig ist.
In diesem Szenario können Sie ein restriktives regelbasiertes System einsetzen, das sicherstellt, dass diese kritischen Situationen abgedeckt sind, und parallel dazu ein verallgemeinerbares ML-basiertes System, das die anderen (komplexen) Fälle erfassen soll.
Sie können zum Beispiel ein Verzeichnis von Namen anlegen, von denen Sie wissen, dass sie sauber und korrekt sind. Diese Namen werden immer erkannt. Die (ungewöhnlichen) Namen, die nicht in diese Liste fallen, werden vom ML-Modell erfasst.
Optimierung für Recall/Präzision: Da Sie im Wesentlichen mehrere Vorhersagen kombinieren, können Sie durch die Wahl des "Abstimmungsschemas" (d. h. die Art und Weise, wie Sie von mehreren Einzelvorhersagen zu einer endgültigen Vorhersage gelangen) den Recall oder die Präzision optimieren.
Eine Nischensituation könnte sein, dass Ihr Anwendungsfall wirklich ein regelbasiertes System erfordert - sei es aus regulatorischen Gründen (z. B. das "Recht auf Erklärung" der GDPR ) oder aus anderen Gründen - aber dass diese Regeln sehr schwer zu bestimmen sind.
In diesem Szenario könnten Sie maschinelles Lernen einsetzen, um optimale (RegEx-)Regeln zu erstellen.
Es gibt mehrere Möglichkeiten, dies zu erreichen - von natürlichsprachlichen Seq2Seq-Modellen wie SemRegex bis hin zu Modellen, die auf gelabelten Daten trainiert werden, wie der evolutionäre RegexGenerator-Algorithmus, und Modellen wie TransRegex, die sowohl natürliche Sprache als auch gelabelte Beispiele verwenden.
Auch bei diesem Muster geht es darum, Regeln und ML zu kombinieren, doch geschieht dies durch die Suche nach einer geeigneten Darstellung der RegEx-Ergebnisse und die echte Integration des Domänenwissens in die Modellarchitektur.
Theoretisch ist dies eine sehr saubere Lösung, aber in der Praxis werden solche Architekturen nicht (weit) verbreitet eingesetzt. Zumindest noch nicht.
Wenn Sie eine Vorstellung davon bekommen wollen, wie so etwas aussehen könnte, lesen Sie dieses Papier. Zum Zeitpunkt der Erstellung dieses Dokuments würden wir ein solches Entwurfsmuster jedoch nicht empfehlen.
Zusammenfassend lässt sich sagen, dass hybrides NLP das Potenzial hat, die Genauigkeit, Effizienz, Zuverlässigkeit und/oder Interpretierbarkeit Ihrer Lösung drastisch zu verbessern, insbesondere bei wenig gelabelten Daten. Das heißt, wenn man es richtig macht.
Die Wahl des richtigen Aufbaus ist von Natur aus sehr daten- und problemspezifisch, aber ich hoffe, die obigen Beispiele haben Ihnen ein Gefühl dafür vermittelt, welcher Ansatz zu wählen ist.