Ist NER robust gegenüber OCR Fehlern?

Der Eiffelturm in Paris. Photo by Chris Karidis on Unsplash.

Wir haben schon mehrfach die Behauptung gehört, dass Named Entity Recognition (NER) robust gegenüber OCR Fehlern ist. Daher werden wir in diesem Beitrag die Named Entity Recognition anhand einiger Beispiele genauer betrachten.

NER ist ein intuitiv einfach wirkendes Verfahren, um Schlagwörter aus Texten zu extrahieren und zu kategorisieren. Dabei sind die Fähigkeiten von NER abhängig von den Trainingsdaten und der Art, wie das Modell trainiert wurde.

Wir verwenden für unsere Beispiele spaCy und flairNLP in Kombination mit einem deutschsprachigen Sprachmodell. Diese Modelle können die vier Klassen Personen (PER), Orte (LOC), Organisationen (ORG) und Sonstiges (MISC) unterscheiden. Das ist recht wenig im Vergleich zu Modellen für die englische Sprache, wo zum Beispiel mit den auf OntoNotes basierten Modellen 18 Klassen unterschieden werden können. Das liegt an der fehlenden Verfügbarkeit von öffentlichen Trainingsdaten für die deutsche Sprache.

Die Visualisierungen in diesem Artikel wurden mit displaCy erstellt. Mit der Online Demo von displaCy können die Beispiele selbst nachvollzogen werden.

Beispiele mit spaCy

Zum Trainieren der Sprachmodelle liegen menschlich und/oder heuristisch annotierte Beispiele/Sätze vor.

Adam PER arbeitet bei der britischen MISC Example Inc ORG in Paris LOC .

Anhand solcher Beispiele kann ein Sprachmodell lernen, was ein Named Entity ist und wie es kategorisiert werden soll. Mit genügend Beispielen lernt das Sprachmodell, dass es sich bei Adam und eine Person handelt und bei Paris um einen Ort. 1

Aber das ist noch nicht alles. Nehmen wir einen einfachen Beispielsatz und mutieren einzelne Buchstaben, wie es bei OCR Fehlern vorkommt. Anschließend wenden wir die NER Komponenten von spaCy auf die Beispiele an.

  1. Adam PER lebt in Paris LOC .
  2. Adam PER lebt im Paris LOC .
  3. Adam PER lebt in Pares LOC .
  4. Adam PER libt in Pares LOC .

Es scheint so, als ob NER “robust” gegenüber diesen Mutationen ist. Aber bevor wir uns über dieses stabile Verfahren freuen, schauen wir uns ein weiteres Beispiel an.

  1. Adam PER lebt im Pares.

Was ist hier passiert?

Das Sprachmodell von spaCy hat vermutlich gelernt, dass es sich bei Paris um ein Named Entity der Kategorie Ort handelt und markiert es entsprechend in den Beispielen 1 und 2.

Es hat möglicherweise auch gelernt, dass zum Beispiel die Konstruktion “in ABC” einen Ort kennzeichnet und markiert entsprechend Pares in den Beispielen 3 und 4.

Im Beispiel 5 haben wir zwei Fehler kombiniert, wodurch das Sprachmodell weder Paris, noch die Konstruktion “in ABC” erkennen konnte. 2

Interessant dabei ist, dass das Sprachmodell basierend auf der Satzkonstruktion auch die Beispiele 6 und 7 erkennt.

  1. Adam PER lebt in Bxyueqty LOC .
  2. Xoyietzqgf PER lebt in Bxyueqty LOC .

Hier können wir davon ausgehen, dass die Begriffe Xoyietzqgf und Bxyueqty nicht in den Trainingsdaten vorkommen. Die Bestimmung der Entities erfolgt aus der Satzkonstruktion und zeigt die Übertragbarkeit der gelernten Inhalte auf unbekannte Beispiele.

Vergleich mit flairNLP

Nicht alle Sprachmodelle lernen die gleichen Regeln aus den Trainingsdaten. Beispielsweise hat flairNLP ein Problem mit unserem Beispiel 4 (8), erkennt Beispiel 5 (9) aber korrekt.

  1. Adam PER libt in Pares.
  2. Adam PER lebt im Pares LOC .

Vielleicht hat das Sprachmodell von flairNLP gelernt, dass die Konstruktion “lebt … ABC” einen Ort kennzeichnet. 3

NER und Mehrdeutigkeit

Ein interessantes Feld ist auch das Auflösung von Mehrdeutigkeiten. So ist für den menschlichen Leser klar, dass es sich bei Paris in Beispiel 10 um eine Person handelt. SpaCy kennzeichnet Paris in Beispiel 10 als Ort.

  1. Adam PER liebt Paris LOC . Sie ist wirklich nett.

Da die meisten Sprachmodelle auf einzelne Sätze trainiert werden, fehlt ihnen die Möglichkeit den umgebenden Kontext mit in Betracht zu ziehen.

Für flairNLP gibt es die FLERT Modelle, die mehrere Sätze gleichzeitig betrachten und daher den Kontext mit in Betracht ziehen können. Beispiel 11 wurde mit einem FLERT Model markiert.

  1. Adam PER liebt Paris LOC . Sie ist wirklich nett.

Überraschenderweise wurde hier auch Paris als Ort markiert. Laut flairNLP/flair#2193 wurde für Version 0.8.0 das Sprachmodell neu trainiert und erkennt Paris als Ort, wo es bei früheren Versionen Paris noch korrekt als Person erkannte.

Versuchen wir es mit einem anderen Beispiel (12 und 13), was zwar nicht zu unserem Paris Beispiel passt, jedoch die Fähigkeiten der FLERT Modelle zeigt:

  1. Adam PER liebt Buxtehude LOC .
  2. Adam PER liebt Buxtehude PER . Adam PER und Buxtehude PER sind verheiratet.

Fazit

Es ist nicht transparent, welche exakten Regeln ein Sprachmodell aus den Trainingsdaten ableitet. Es können einzelne Begriffe sein, die als Named Entity erkannt werden, oder eine bestimmte Wortkonstruktion (“in ABC”). Manchmal wird auch die Struktur und die Grammatik des Satzes beim Training und der Anwendung mit berücksichtigt (Beispiel 14). Oder anstatt auf einzelnen Sätzen wird auf größeren Textabschnitten trainiert, wie es bei den FLERT Modellen der Fall ist.

  1. AdamPROPNlebtVERBinADPParis.PROPNsbmonk

Die vermeintliche Robustheit von NER gegenüber OCR Fehlern kommt von der Fähigkeit der Sprachmodelle auf Basis der Satzstruktur auch unbekannte oder mit OCR Fehlern versehene Entities zu erkennen. OCR Fehler im Entity sind also nicht problematisch. Ein simpler OCR Fehler außerhalb des Entity, wie ein fehlendes Leerzeichen, kann abhängig vom Sprachmodell die Erkennung massiv stören (Beispiel 15).

  1. Adam lebtin Paris PER .

Von daher ist für uns die Aussage “NER ist robust gegenüber OCR Fehlern” zu unspezifisch.


  1. Auf die Mehrdeutigkeit des Begriffs Paris, welches auch als Vorname verwendet wird, gehen wir am Ende des Artikels ein. ↩︎

  2. Für diese Beispiele haben wir das Sprachmodell de-core-news-sm in Version 3.0.0 verwendet. In Version 2.3.0 wurde Beispiel 5 noch richtig erkannt. ↩︎

  3. Für diese Beispiele haben wir das Sprachmodell ner-german-large in Version 0.8.0 verwendet. ↩︎

Benjamin Rosemann
Benjamin Rosemann
Data Scientist

Ich evaluiere KI- und Software-Lösungen und integriere sie in den Archivalltag.

Ähnliches