SpaCy is al enkele jaren een de facto standaard voor elk bedrijf dat een entiteitextractieproject wil starten. Wat heeft spaCy zo populair gemaakt? En zijn er in 2023 goede spaCy-alternatieven voor iedereen die een entiteitextractieproject wil starten? Laten we deze punten in dit artikel bespreken.

De eerste SpaCy-versie werd uitgebracht in 2015 en het werd al snel een standaard raamwerk voor enterprise grade entity extraction (ook bekend als NER).
Als je een stuk ongestructureerde tekst hebt (bijvoorbeeld van het web) en je wilt er gestructureerde gegevens uit halen, zoals data, namen, plaatsen, enz. dan is spaCy een zeer goede oplossing.
SpaCy is interessant omdat er verschillende voorgetrainde modellen beschikbaar zijn in ongeveer 20 talen (zie meer hier). Dit betekent dat u niet noodzakelijk uw eigen model voor entiteitsextractie hoeft te trainen. Het betekent ook dat, als u uw eigen model wilt trainen, u kunt uitgaan van een vooraf getraind model in plaats van helemaal opnieuw te beginnen, wat u veel tijd kan besparen.
SpaCy wordt beschouwd als een "production grade" framework omdat het zeer snel en betrouwbaar is, en wordt geleverd met een uitgebreide documentatie.
Als de standaard door spaCy voorgetrainde modellen ondersteunde entiteiten echter niet voldoende zijn, moet u werken aan "gegevensannotatie" (ook bekend als "gegevenslabeling") om uw eigen model te trainen. Dit proces is uiterst tijdrovend en veel ondernemingsprojecten voor entiteitsextractie mislukken hierdoor.
Stel dat u functietitels uit een stuk tekst wilt halen (bijvoorbeeld uit een cv, of uit een webpagina van een bedrijf). Aangezien de voorgetrainde modellen van spaCy een dergelijke entiteit niet standaard ondersteunen, moet u spaCy leren hoe het functietitels kan herkennen. U zult een trainingsdataset moeten maken die enkele duizenden voorbeelden van functietitels bevat (en misschien nog wel veel meer!). U kunt een betaalde annotatiesoftware zoals Prodigy (gemaakt door het spaCy-team) gebruiken, maar er komt nog steeds veel mensenwerk bij kijken. Het is eigenlijk heel gebruikelijk dat bedrijven een stel aannemers inhuren voor enkele maanden om een data-annotatieproject uit te voeren. Zo'n klus is zo repetitief en saai dat de resulterende datasets vaak veel fouten bevatten...

Laten we eens kijken welke alternatieve oplossingen je in 2023 zou kunnen proberen!

De eerste versie van Stanford CoreNLP werd uitgebracht in 2013. Het is een Java-framework (terwijl spaCy een Python-framework is) waarmee u entiteitsextractie kunt uitvoeren met zeer goede resultaten.
Stanford CoreNLP stelt ook voorgetrainde modellen voor, maar minder dan spaCy (zie meer hier).
De nauwkeurigheid van dit kader is vergelijkbaar met spaCy, maar hangt af van de gegevens die u analyseert. Stanford CoreNLP geeft bijvoorbeeld betere resultaten op juridische gegevens. Ook moet worden opgemerkt dat sommige entiteiten iets anders worden aangesproken dan in spaCy (dit is bijvoorbeeld het geval met de entiteit GPE).
Wat de prestaties betreft, lijkt Stanford duidelijk langzamer dan spaCy, wat een probleem kan zijn als u een zeer hoge verwerkingscapaciteit probeert te bereiken.

Flair is een recenter Python framework (uitgebracht in 2018) gebaseerd op het PyTorch deep learning framework.
Het wint aan populariteit omdat het in veel talen een hogere nauwkeurigheid bereikt dan spaCy. Er zijn verschillende voorgetrainde modellen voorgesteld (zie meer hier).
Deze verbeterde nauwkeurigheid gaat echter ten koste van de snelheid. Uw verwerkingscapaciteit zal veel lager zijn dan bij spaCy.
Een paar jaar geleden begon een nieuw soort AI-modellen te verschijnen: generatieve modellen. Deze modellen werden aanvankelijk ontworpen voor tekstgeneratie (het begin van een stuk tekst schrijven en het model de rest laten genereren), maar men realiseerde zich al snel dat deze modellen zeer goed waren in allerlei toepassingen van natuurlijke taalverwerking, waaronder entiteitextractie.
De populairste generatieve modellen van dit moment zijn GPT-3, GPT-J, GPT-NeoX, T5 en Bloom. Al deze deep learning modellen maken gebruik van de Transformer architectuur, uitgevonden door Google in 2017.
Deze nieuwe generatie AI-modellen is zeer zwaar en duur om uit te voeren. Ze vereisen meestal high-end hardware gebaseerd op één of meerdere GPU's. Ook zijn ze langzamer dan frameworks als spaCy. Maar dankzij deze modellen is het nu mogelijk om elk soort entiteit te extraheren zonder een speciaal model te trainen!
Eender welke entiteit extraheren zonder een specifiek model te creëren is mogelijk dankzij few-shot learning. Bij deze techniek gaat het erom het model snel te laten zien wat u wilt doen door slechts een paar voorbeelden tijdens runtime te maken. Lees hier meer over het leren van enkele schoten.
Om terug te komen op ons voorbeeld van het extraheren van functietitels: als u met een model als GPT-J functietitels wilt extraheren, hoeft u geen gegevens te annoteren. Het bespaart u dan weken of maanden menselijk werk. En de nauwkeurigheid zal hoogstwaarschijnlijk veel hoger zijn dan die van een entiteitextractie met spaCy.
Zie ons artikel over hoe u gemakkelijk entiteitsextractie kunt uitvoeren met GPT-modellen.
SpaCy is een geweldig raamwerk voor natuurlijke taalverwerking dat tegenwoordig door veel bedrijven in productie wordt gebruikt voor entiteitsextractietaken.
SpaCy en alternatieven zoals Stanford CoreNLP of Flair zijn echter beperkt qua nauwkeurigheid, en ze vereisen vervelend annotatiewerk om nieuwe entiteiten te extraheren. In 2023 kunnen verschillende alternatieve modellen op basis van tekstgeneratie worden gebruikt voor entiteitsextractie zonder annotatie, zoals GPT-J, GPT-NeoX, GPT-3... Deze nieuwe modellen zullen meer en meer bedrijven echt helpen bij hun projecten voor entiteitsextractie.
Als u GPT-J en GPT-NeoX wilt gebruiken, aarzel dan niet om het te proberen op de NLP Cloud API. (probeer het hier)!
Juliette
Marketing manager bij NLP Cloud