Tech Talk: Documentclassificatie en -voorspelling met behulp van een geïntegreerde toepassing (deel 1)

Tekstclassificatie is een van de belangrijke taken in Natural Language Processing. Het is het proces van het classificeren van tekststrings of documenten in verschillende categorieën, afhankelijk van de inhoud van de strings. Tekst- of documentclassificatie heeft verschillende toepassingen, zoals het detecteren van de onderzoeksgebieden van wetenschappelijke artikelen, het classificeren van een e-mail, het classificeren van blogberichten in verschillende categorieën, het automatisch taggen van klantvragen, enz.

Het project dat we hier zullen illustreren is een toepassingssysteem waarmee we vele soorten documenten kunnen classificeren op basis van Deep Learning/Machine learning Natural Language Processing (NLP) modellen. In een tweede fase voorspelt de toepassing de klasse van nieuwe, ongelabelde documenten. Om de workflow, de verwerking en het gebruik te optimaliseren, hebben we het huidige project opgevat als twee afzonderlijke Flask RESTful API's gekoppeld aan een gebruikersinterface (met CSS/HTML en JavaScript):

  1. Applicatie voor het classificeren en voorspellen van documenten: deze app bevat de volledige workflow van het project, inclusief het trainen van de classificatiemodellen op basis van een dataset met gelabelde documenten en, in de tweede fase, het voorspellen - op basis van het eerder getrainde model - van nieuwe, ongelabelde documenten. De app kan draaien op een lokale machine en een virtuele machine met GPU-mogelijkheden (nodig voor het trainen van de modellen).

  2. Applicatie voor het voorspellen van documenten: de tweede applicatie bevat de workflow voor het voorspellen van documenten en we hebben deze gemaakt als een multi-label webapplicatie die overal kan worden uitgevoerd. Om de app te laten draaien, moeten de specificaties van het eerder getrainde model (bijv. de gewichten en biases van het model) worden geüpload.

Opmerking: De dataset die we aan het systeem presenteren moet een map zijn die alle documenten bevat met submappen als labelnamen. In het geval van multi-label documentclassificatie (d.w.z. wanneer een document tot meer dan één categorie kan behoren), moet je multi-gelabelde documenten dupliceren in alle submappen waartoe ze behoren.

Projectkenmerken

We zullen de vijf belangrijkste projectkenmerken voor documentclassificatie schetsen:

1. Geschikt voor een grote verscheidenheid aan documenten: zowel native documentformaten als gescande documenten/afbeeldingen (met OCR);

2. Geschikt voor een grote verscheidenheid aan datasets: een soort 'one-size-fits-all' modellen die kunnen omgaan met binaire, multiklasse en multi-label classificatie;

3. Zowel naïeve als ervaren gebruikers kunnen het gebruiken: gebruiksgemak (gebruiksvriendelijke interface), maar technische informatie voor verbetering (bv. prestatiecijfers, verwarringmatrix, ROC-curve, ...);

4. Goed presteren: op zoek gaan naar goede/geavanceerde praktijken (bijv. BERT deep learning transformers model);

5. In staat om overal te draaien: gedeeltelijk ingezet in de cloud (tweede app met de voorspellingsworkflow).

De juiste modellen kiezen voor documentclassificatie

Een van de grootste uitdagingen van het huidige project was het construeren van classificatiemodellen die geschikt zijn voor een grote verscheidenheid aan dataset types (voor binaire, multiklasse en multi-label classificaties). Dat zou goede prestaties opleveren, zelfs in realistische omstandigheden (met beperkte middelen). Niet alle potentiële klanten zullen immers noodzakelijkerwijs beschikken over enorme datasets met documenten van hoge kwaliteit om de modellen te trainen en verder goede voorspellingen te doen.

Tegelijkertijd hebben we ons ingespannen om gegevens van hoge kwaliteit aan de modellen te leveren en de meest geschikte methoden voor tekstopschoning/voorverwerking te gebruiken voor de specifieke taak van het classificeren van documenten. NLP omvat namelijk een breed scala aan functies (o.a. vertalen, tekstaanvullen, onderwerpen modelleren, samenvatten, Named-Entity-Recognition, ...), en niet alle methoden voor tekstopschoning/voorverwerking zijn geschikt voor alle NLP-taken. In de huidige projectcontext was Part-Of-Speech tagging bijvoorbeeld niet relevant omdat documentclassificatie niet afhankelijk is van woordvolgorde of zinsstructuur. Bovendien moeten we in sommige gevallen de methoden voor het opschonen/voorbewerken van tekst aanpassen aan het type taak en het specifieke model dat wordt gebruikt.

Opties voor documentclassificatiemodellen

Sommige recente voorgetrainde tekstmodellen (zoals BERT, Roberta of XLNet) hebben hun eigen tokenizer/vectorizer en het gebruik van een standaardvectorizer (zoals TF-IDF) is niet relevant. Op dezelfde manier is het stamatiseren van woorden niet van toepassing bij het gebruik van BERT (BertForSequenceClassification). Het vocabulaire van BERT bestaat uit echte woorden (en subwoorden) die niet overeenkomen met een substantieel deel van de stemmatizeerwoorden.

We hebben de literatuur doorgespit op zoek naar best practices en state-of-the-art tekstclassificatie- en opschoningsmethoden voor al deze doeleinden. In de voorbereidende fase van het project en met dit in gedachten, hebben we verschillende potentiële goede kandidaatmodellen vooraf getest van zowel machine learning raamwerken (d.w.z., gaussian naive bayes, support vector machine, XGBoost) als deep learning raamwerken (d.w.z., BERT, RoBERTa, XLNet). Na deze pre-testfase hielden we twee modellen over om de volgende redenen:

  • Deep learning BERT-model (BertForSequenceClassification) levert de beste prestaties van alle geteste modellen en neigt niet naar overfit, zelfs niet met een toenemend aantal epochs (in tegenstelling tot RoBERTa en XLNet);

  • Het XGBoost-model (XGBClassifier) voor machinaal leren levert uitstekende prestaties en vergt veel minder rekencapaciteit dan BERT (en werkt daarom veel sneller).

Modelkeuze bevestigen

Om onze keuze te bevestigen, hebben we deze twee modellen getest met verschillende (type) datasets. Bijvoorbeeld, getraind op de DBPedia dataset (een dataset bestaande uit 342.782 Wikipedia artikelen met hiërarchische categorieën), leverde BERT een f1-score van 99% op het eerste klasse niveau (9 categorieën) en van 96% op het tweede klasse niveau (70 categorieën).

Met het oog op een realistische bedrijfscontext hebben we het model ook getest op twee pdf-datasets van beperkte omvang (een multiklasse en de andere multilabel) die speciaal voor het project zijn gemaakt en afkomstig zijn van de denktank van het Europees Parlement. De documenten hebben betrekking op de EU-wetgeving en zijn gesorteerd op verschillende gebieden (bijv. cultuur, milieu, economische en monetaire kwesties, enz.)

We hebben er bewust voor gekozen om datasets van beperkte omvang te bouwen om de prestaties van het model uit te dagen. De multiklasse dataset bestond uit 261 pdf's en de multilabel dataset uit 313 pdf's met 33 documenten met meerdere labels (met 6 categorieën en minder dan 60 documenten per categorie). Het BERT-model geeft een f1-score van 97%, terwijl het XGBoost-model een f1-score van 92% geeft bij training op de multiklasse dataset.

Volgende...

In deel 2 van dit artikel over documentclassificatie behandelen we het workflowontwerp, Python-programmering, navigatie door de gebruikersinterface van de ontworpen webapp en mogelijke toepassingen.

Vorige
Vorige

Tech Talk: Documentclassificatie en -voorspelling met behulp van een geïntegreerde toepassing (deel 2)

Volgende
Volgende

Tech Talk: Een complete aanpak voor het automatiseren van documentinformatie-extractie