Data & MoreNLP Engineeringgithub.com/dataandmore/ai-profiler

Wissen Sie genau, welche personenbezogenen Daten sich verbergen in den Dateien befinden.

Eine mehrsprachige NLP-Engine, die bereits in Elasticsearch indexierte Dokumente scannt, Namen, Orte und Daten erkennt, sensible Sprache in besondere DSGVO-Kategorien klassifiziert und jeden Fund direkt auf das Dokument zurückschreibt. Die Daten verlassen dabei niemals den eigenen Such-Cluster des Kunden.

Abfragen, analysieren, speichern. Wiederholen.

15+dedizierte Sprachmodelle
3Erkennungsalgorithmen
9sensible Kategorien
1kAufgabenwarteschlangentiefe
Abschnitt 01Überblick

Eine Engine, zwei Eingangstüren

Derselbe Erkennungskern (handle_doc) betreibt sowohl eine Hintergrundpipeline für hohe Volumen als auch einen Echtzeit-Endpunkt. Batch-Aufgaben fließen von links nach rechts durch den Scheduler, eine begrenzte Warteschlange und einen Pool von spaCy-Workern; der Echtzeit-Endpunkt leitet einen einzelnen Text direkt in den Kern und gibt JSON zurück.

QUELLE SCHEDULER WARTESCHLANGE WORKER KERN ZIEL Elasticsearch index: data DS_Status: REQUEST_AI Scheduler fragt jeden Zyklus ab search-after, 50/Seite Warteschlange maxsize 1000 Worker-Pool spaCy spaCy SPACY_WORKERS: 2 handle_doc der Erkennungskern 1 · Schutzmaßnahmen 2 · Sprachweiterleitung 3 · Matcher Elasticsearch DS_Status: FINISHED POST /profile-text Echtzeit, einzelner Text auf Anfrage JSON als Antwort
Batch-Datenpfad Echtzeit-Endpunkt Worker / Ergebnis Erkennungskern
Abschnitt 02Die Aufgabe

Sensible Daten finden, kennzeichnen und zurückübergeben

Der Profiler liest bereits in Elasticsearch indexierte Dokumente. Für jedes Dokument erkennt er Namen, Orte und Daten und sucht anschließend nach Sprache, die besondere Kategorien personenbezogener Daten offenbart: Gesundheit, Religion, politische Ansichten, sexuelle Orientierung, Ethnizität, Vorstrafen, Gewerkschaftsmitgliedschaft und arbeitsrechtliche Maßnahmen. Jeder Treffer wird mit einem Typ, dem übereinstimmenden Text und seiner Position versehen und anschließend auf dem Dokument gespeichert, sodass Compliance-Arbeit auf Fakten statt auf Vermutungen basiert.

Abschnitt 03Zwei Zugangswege

Eine Pipeline und ein Endpunkt

Modus A

Geplante Pipeline

Ein Hintergrund-Thread fragt Elasticsearch kontinuierlich nach als DS_Status: REQUEST_AI markierten Dokumenten ab und leitet sie an einen Pool von Worker-Prozessen weiter. So werden umfangreiche Archive analysiert.

Modus B

REST-Endpunkt

Eine POST /profile-text Route analysiert auf Anfrage einen einzelnen Text und gibt farblich gekennzeichnete Treffer als JSON zurück. Eine /health Route gibt Auskunft über den Betriebsstatus.

Abschnitt 04Die Batch-Pipeline

Vom markierten Dokument zum fertigen Profil

Beim Start wartet die Anwendung, bis der Elasticsearch-Cluster betriebsbereit ist, und startet anschließend den Scheduler sowie den Worker-Pool. Der folgende Zyklus wiederholt sich kontinuierlich.

  • 01 Der Scheduler fragt Elasticsearch ab. In jedem Durchlauf durchsucht es den data Index nach Dokumenten, bei denen DS_Status = REQUEST_AI, seitenweise zu je 50 Einträgen mit search-after.
  • 02 Jedes Dokument wird zu einer Aufgabe. Dokumente werden als Aufgaben verpackt und in eine gemeinsame Multiprocessing-Queue eingereiht. Falls die Queue voll ist, hält der Scheduler an und sorgt so für einen natürlichen Gegendruck, damit der Speicherverbrauch begrenzt bleibt.
  • 03 Worker nehmen Aufgaben entgegen. Ein Pool von spaCy-Arbeitsprozessen (standardmäßig 2) übernimmt Aufgaben parallel, führt den Erkennungskern aus und führt bereits vorhandene Labels des Dokuments zusammen.
  • 04 Der Erkennungskern wird ausgeführt. Der Text wird geprüft, sprachlich zugeordnet und durch bis zu drei Erkennungsalgorithmen verarbeitet. Dies ist handle_doc, nachfolgend näher erläutert.
  • 05 Ergebnisse werden zurückgeschrieben. Ergebnisse werden dedupliziert und per Bulk-Update in das Dokument geschrieben, und der Status wird auf FINISHED gesetzt. Selbst im Fehlerfall wechselt der Status zu FINISHED, sodass kein Dokument endlos erneut verarbeitet wird.
Zurückgeschrieben

Pro Dokument

DS_EntryType_Count
DS_EntryType_List
DS_EntryType_Values
DS_EntryType_Index
DS_ProfiledAt
DS_Status = FINISHED
Der Gegendruck bei einer 1000 Einträge tiefen Queue hält die gesamte Pipeline innerhalb eines festen Speicherrahmens – unabhängig von der Größe des Archivs.
Section 05Im Inneren des Kerns

Prüfen, zuordnen, dann abgleichen

Bevor ein Modell ausgeführt wird, handle_doc filtert Arbeit heraus, die nicht verarbeitet werden soll, und wählt dann das geeignete Werkzeug für die jeweilige Sprache. Erst danach werden die Matcher ausgeführt.

Dokumenttext + erkannte Sprache Leitplanken nur freigegebene Typen json · xml · log überspringen bei > 20.000 Zeichen kürzen unbekannte Sprache verwerfen Zuordnung gibt es Abhängigkeits- muster? ja → gesamter Text nein → Sätze aufteilen Matcher NER Schlüsselwortphrasen Abhängigkeitsgrammatik deduplizieren + Labels zusammenführen → zurückschreiben
Schritt 1

Festlegen, was verarbeitet wird

Nur freigegebene Dokumenttypen werden profiliert (doc, docx, pdf, eml, txt und weitere). Strukturierte Formate wie json, xml und log werden übersprungen. Texte mit mehr als 20.000 Zeichen werden gekennzeichnet und gekürzt, und Inhalte in unbekannter Sprache werden verworfen.

Schritt 2

Die Sprachstrategie auswählen

Verfügt eine Sprache über grammatikalische Abhängigkeitsmuster, wird der gesamte Text auf einmal analysiert. Andernfalls wird der Text in Sätze aufgeteilt und jeder Satz wird einzeln analysiert, wobei das mehrsprachige Modell als universeller Fallback dient.

Section 06Erkennungsalgorithmen

Drei Perspektiven auf denselben Text

Jeder Fund trägt ein Präfix-Label, damit nachgelagerte Systeme erkennen können, wie er gefunden wurde. Die drei Perspektiven werden auf denselben Satz angewendet und ihre Ergebnisse zusammengeführt.

„Jane wurde wegen Diabetes behandelt." ein Satz, drei Perspektiven Erkennung benannter Entitäten statistisches Modell · Personen, Datumsangaben Schlüsselwortphrasen-Matcher lemma-bewusst · erkennt Flexionsformen Abhängigkeitsgrammatik Subjekt + sensibles Objekt S_PER · S_PER_FULL · S_DATE „Jane" wird zu einem Namensfund hochgestuft S_K_HEALTH „diabetes" aus dem Gesundheitswörterbuch S_S_HEALTH Subjekt „Jane" + Objekt „diabetes" bestätigt
01 · NER

Benannte Entitäten

Das statistische Modell von spaCy erkennt Personen, Organisationen, Orte, Datumsangaben und Uhrzeiten. Namen mit der richtigen Struktur (zwei bis drei verschiedene alphabetische Wörter, keine Ziffern) werden zu Vollnamen-Funden hochgestuft.

Labels: S_PER, S_PER_FULL, S_ORG, S_GPE, S_LOC, S_DATE
02 · Schlüsselwörter

Phrasenabgleich

Ein lemma-bewusster Phrasen-Matcher durchsucht Texte nach Begriffen aus kundenspezifischen Wörterbüchern sensibler Vokabeln und erkennt dabei flektierte Formen statt ausschließlich exakter Zeichenketten.

labels: S_K_<TYPE>
03 · Grammatik

Abhängigkeitsabgleich

Grammatikalische Muster bestätigen eine tatsächliche Aussage: Eine Person oder ein zulässiges Pronomen ist das Subjekt, und ein sensibler Begriff ist das Objekt. Dies reduziert Falschmeldungen, da Kontext verlangt wird und nicht nur ein einzelnes Wort.

labels: S_S_<TYPE>
Abschnitt 07Was erkannt wird

Besondere Kategorien und Identifikatoren

Die genauen Kategorien werden durch kundenspezifische Wörterbücher gesteuert, die aus Elasticsearch geladen werden, sodass jedes Abonnement nur die relevanten Typen aktivieren kann.

Besondere Kategorien der DSGVO

Sensible personenbezogene Daten

Gesundheit & SymptomeReligiöse AusrichtungPolitische Ausrichtung Sexuelle OrientierungEthnische HerkunftKriminelles Verhalten GewerkschaftsmitgliedschaftKündigung von MitarbeitendenVerwarnung von Mitarbeitenden
Benannte Entitäten

Persönliche Identifikatoren

PersonVollständiger NameOrganisationStandort Ort / GPEDatumUhrzeitNationalität / Gruppe
Abschnitt 08Reichweite

Entwickelt für Skalierung und Reichweite

15+Sprachmodelle
3Erkennungsmethoden
1kAufgabenwarteschlangentiefe
9Sensible Kategorien

Dedizierte Modelle stehen für Englisch, Dänisch, Deutsch, Niederländisch, Französisch, Italienisch, Spanisch, Schwedisch, Norwegisch, Finnisch, Polnisch, Portugiesisch, Litauisch, Kroatisch (auch für Serbisch, Bosnisch und Montenegrinisch) sowie Ukrainisch zur Verfügung, ergänzt durch ein mehrsprachiges Modell für alle weiteren Sprachen und einen universellen Satztrenner als Grundlage.

Abschnitt 09Hinter den Kulissen

Der Stack

Web-SchichtFlask + Gunicorn :8000
NLP-EnginespaCy 3.8 + Torch (CPU)
Parallelverarbeitungmultiprocessing pool
DatenspeicherElasticsearch 8.11
Wörterbücherper-company, via IAM service
BereitstellungDocker, python:3.12
Ausfallsicherheitprocess recycle every 12h
Rauschunterdrückungfalse-positive suppression lists
Kurz zusammengefasst

Abfragen, analysieren, speichern. Wiederholen.

Der AI Profiler verwandelt ein stilles Dokumentenarchiv in eine gekennzeichnete Übersicht personenbezogener Daten – vollständig innerhalb des eigenen Such-Clusters des Kunden – sodass Compliance-Arbeit auf Fakten statt auf Vermutungen basiert.

github.com/dataandmore/ai-profiler