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

Kend præcis, hvilke persondata der erskjult i filerne.

En flersproget NLP-motor, der scanner dokumenter allerede indekseret i Elasticsearch, registrerer navne, steder og datoer, klassificerer derefter følsomt sprog i GDPR's særlige kategorier og skriver hvert fund tilbage på dokumentet. Dataene forlader aldrig kundens eget søgekluster.

Afsøg, profileer, gem. Gentag.

15+dedikerede sprogmodeller
3detektionsalgoritmer
9følsomme kategorier
1kopgavekødybde
Afsnit 01Oversigt

Én motor, to indgange

Den samme detektionskerne (handle_doc) driver både en højvolumen baggrundspipeline og et live-anmodningsendepunkt. Batcharbejde flyder fra venstre mod højre gennem scheduleren, en afgrænset kø og en pulje af spaCy-arbejdsprocesser; realtidsendepunktet sender et enkelt stykke tekst direkte ind i kernen og returnerer JSON.

KILDE SCHEDULER ARBEJDSPROCESSER KERNE DESTINATION Elasticsearch index: data DS_Status: REQUEST_AI Scheduler afsøger ved hver cyklus search-after, 50/side maxsize 1000 Arbejdsprocesspulje spaCy spaCy SPACY_WORKERS: 2 handle_doc detektionskernen 1 · sikkerhedsregler 2 · sprogdirigering 3 · matchere Elasticsearch DS_Status: FINISHED POST /profile-text realtid, enkelt tekst efter behov JSON retur
Batch-datasti Realtidsendepunkt Arbejdsproces / resultat Detektionskerne
Afsnit 02Opgaven

Find de følsomme data, mærk dem, og returner demtilbage

Profileren læser dokumenter, der allerede er indekseret i Elasticsearch. For hvert dokument registrerer den navne, steder og datoer og søger derefter efter sprog, der afslører særlige kategorier af persondata: helbred, religion, politik, seksuel orientering, etnicitet, kriminel historik, fagforeningsmedlemskab og ansættelsesforhold. Hvert match mærkes med en type, den matchede tekst og dens position og gemmes derefter tilbage på dokumentet, så compliancearbejdet tager udgangspunkt i fakta frem for gætværk.

Afsnit 03To indgange

En pipeline og etendepunkt

Tilstand A

Planlagt pipeline

En baggrundstråd afsøger løbende Elasticsearch for dokumenter markeretDS_Status: REQUEST_AI og sender dem til en pulje af arbejdsprocesser. Dette er den metode, hvormed bulkarkiver profileres.

Tilstand B

REST-endepunkt

EnPOST /profile-text -rute profilerer et enkelt stykke tekst efter behov og returnerer farvekodede matches som JSON. En/health -rute rapporterer systemtilgængelighed.

Afsnit 04Batch-pipelinen

Fra markeret dokument til færdigprofil

Ved opstart venter applikationen på, at Elasticsearch-klusteret bliver tilgængeligt, og starter derefter scheduleren og arbejdsprocesspuljen. Nedenstående cyklus gentages i det uendelige.

  • 01 Scheduler forespørger Elasticsearch. Hver cyklus scanner den data indekset for dokumenter, hvor DS_Status = REQUEST_AI, og henter 50 ad gangen med search-after.
  • 02 Hvert dokument bliver en opgave. Dokumenter pakkes som opgaver og placeres i en delt multiprocessing-kø. Hvis køen fyldes, sætter scheduler på pause, hvilket giver et naturligt modtryk, så hukommelsesforbruget holdes begrænset.
  • 03 Arbejdsprocesser henter opgaver. En pulje af spaCy-arbejdsprocesser (2 som standard) henter opgaver parallelt, kører detektionskernen og sammenfletler eventuelle eksisterende etiketter på dokumentet.
  • 04 Detektionskerne kører. Teksten screenes, sprogdirigeres og sendes igennem op til tre detektionsalgoritmer. Dette er handle_doc, som beskrives nærmere nedenfor.
  • 05 Resultater skrives tilbage. Fund af-duplikeres og masseopdateres på dokumentet, og status sættes til FINISHED. Selv ved fejl skifter status til FINISHED, så intet genbehandles uendeligt.
Skrevet tilbage

Per dokument

DS_EntryType_Count
DS_EntryType_List
DS_EntryType_Values
DS_EntryType_Index
DS_ProfiledAt
DS_Status = FINISHED
Modtryk på en 1000 enheder dyb kø holder hele pipeline inden for en fast hukommelsesramme, uanset hvor stort arkivet er.
Section 05Inden i kernen

Screen, dirigér, derefter match

Inden nogen model kører, handle_doc filtrerer arbejde fra, som ikke bør udføres, og vælger derefter det rette værktøj til sproget. Først herefter aktiveres matcherne.

dokumenttekst + detekteret sprog Sikkerhedsforanstaltninger kun godkendte typer spring json · xml · log over afkort > 20.000 tegn udelad ukendt sprog Dirigering har dependency mønstre? ja → hel tekst nej → opdel sætninger Matchere NER nøgleordssætninger dependency-grammatik af-duplikér + sammenflet etiketter → skriv tilbage
Trin 1

Afgør hvad der skal behandles

Kun godkendte dokumenttyper profileres (doc, docx, pdf, eml, txt og flere). Strukturerede formater som json, xml og log springes over. Tekst, der er længere end 20.000 tegn, markeres og afkortes, og indhold på ukendt sprog udelades.

Trin 2

Vælg sprogstrategi

Hvis et sprog har grammatiske dependency-mønstre, analyseres hele teksten på én gang. Ellers opdeles teksten i sætninger, og hver enkelt analyseres separat, med den flersprogede model som universel reserve.

Section 06Detektionsalgoritmer

Tre perspektiver på den samme tekst

Hvert fund bærer en præfikset etiket, så downstream-systemer ved, hvordan det blev fundet. De tre perspektiver kører over den samme sætning, og deres resultater sammensmeltes.

"Jane was treated for diabetes." én sætning, tre perspektiver Navngiven enhedsgenkendelse statistisk model · personer, datoer Nøgleordssætnings-matcher lemma-bevidst · fanger bøjninger Dependency-grammatik subjekt + sensitivt objekt S_PER · S_PER_FULL · S_DATE "Jane" forfremmet til et navnefund S_K_HEALTH "diabetes" fra sundhedsordbogen S_S_HEALTH subjekt "Jane" + objekt "diabetes" bekræftet
01 · NER

Navngivne enheder

spaCy's statistiske model identificerer personer, organisationer, steder, datoer og tidspunkter. Navne af den rette form (to til tre distinkte alfabetiske ord, ingen cifre) forfremmes til fuldnavns-fund.

etiketter: S_PER, S_PER_FULL, S_ORG, S_GPE, S_LOC, S_DATE
02 · Nøgleord

Sætningsmatching

En lemma-bevidst sætningsmatching scanner efter termer fra kundespecifikke ordbøger over følsomt vokabular og opfanger derved bøjede former frem for udelukkende præcise strenge.

labels: S_K_<TYPE>
03 · Grammatik

Afhængighedsmatching

Grammatiske mønstre bekræfter, at der er tale om et reelt udsagn: en person eller et tilladt pronomen er subjekt, og et følsomt nøgleord er objekt. Dette reducerer falske positiver ved at kræve kontekst frem for blot et ord.

labels: S_S_<TYPE>
Section 07Hvad det registrerer

Særlige kategorier og identifikatorer

De præcise kategorier styres af kundespecifikke ordbøger indlæst fra Elasticsearch, så hvert abonnement kun kan aktivere de typer, der er relevante for den pågældende kunde.

GDPR's særlige kategorier

Følsomme personoplysninger

Helbred og symptomerReligiøs overbevisningPolitisk overbevisning Seksuel orienteringEtnisk oprindelseKriminel adfærd FagforeningsmedlemskabAfskedigelse af medarbejderAdvarsel til medarbejder
Navngivne entiteter

Personlige identifikatorer

PersonFuldt navnOrganisationLokation Sted / GPEDatoTidspunktNationalitet / gruppe
Section 08Rækkevidde

Bygget til skalering og rækkevidde

15+sprogmodeller
3detektionsmetoder
1kopgavekødybde
9følsomme kategorier

Dedikerede modeller leveres til engelsk, dansk, tysk, nederlandsk, fransk, italiensk, spansk, svensk, norsk, finsk, polsk, portugisisk, litauisk, kroatisk (der også dækker serbisk, bosnisk og montenegrinsk) samt ukrainsk, suppleret af en flersproget model der dækker alt øvrigt og en universel sætningsopdeler i bunden.

Section 09Under motorhjelmen

Teknologi-stakken

WeblagFlask + Gunicorn :8000
NLP-motorspaCy 3.8 + Torch (CPU)
Samtidighedmultiprocessing pool
DatalagerElasticsearch 8.11
Ordbøgerper-company, via IAM service
PakningDocker, python:3.12
Robusthedprocess recycle every 12h
Støjkontrolfalse-positive suppression lists
I én linje

Hent, analysér, gem. Gentag.

AI Profiler omdanner et stille arkiv af dokumenter til et mærket kort over personoplysninger – alt sammen inden for kundens eget søgekluster – så compliance-arbejdet tager udgangspunkt i fakta frem for gætværk.

github.com/dataandmore/ai-profiler