SpaCy-alternativ för utvinning av enheter (NER)

SpaCy har under flera år varit en de facto-standard för alla företag som vill starta ett projekt för utvinning av enheter. Vad gjorde SpaCy så populärt? Och finns det bra spaCy-alternativ år 2023 för alla som försöker starta ett projekt för utvinning av enheter? Låt oss diskutera dessa punkter i den här artikeln.

SpaCy

SpaCy för utvinning av enheter

Den första spaCy-versionen släpptes 2015 och blev snabbt ett standardramverk för utdragning av entiteter (även känt som NER) i företagsklass.

Om du har en ostrukturerad text (t.ex. från webben) och vill extrahera strukturerade data från den, t.ex. datum, namn, platser osv. är spaCy en mycket bra lösning.

SpaCy är intressant eftersom flera förtränade modeller finns tillgängliga på ett 20-tal språk. (se mer här). Det innebär att du inte nödvändigtvis behöver träna en egen modell för att extrahera enheter. Det betyder också att om du vill träna din egen modell kan du utgå från en förtränad modell i stället för att börja från början, vilket kan spara mycket tid.

SpaCy anses vara ett ramverk av "produktionsklass" eftersom det är mycket snabbt, tillförlitligt och har en omfattande dokumentation.

Men om de förvalda enheter som stöds av spaCys förtränade modeller inte räcker till måste du arbeta med "dataannotering" (även känd som "datamärkning") för att kunna träna din egen modell. Den här processen är extremt tidskrävande och många projekt för utdrag av entiteter misslyckas på grund av denna utmaning.

Låt oss säga att du vill extrahera jobbtitlar från en text (t.ex. från ett CV eller från en företagswebb). Eftersom spaCys förtränade modeller inte stöder en sådan enhet som standard måste du lära spaCy att känna igen jobbtitlar. Du måste skapa ett träningsdataset som innehåller flera tusen exempel på utdrag av jobbtitlar (och kanske till och med många fler!). Du kan använda en betald annotationsmjukvara som Prodigy (gjord av spaCy-teamet), men det innebär fortfarande mycket mänskligt arbete. Det är faktiskt ganska vanligt att företag anlitar ett gäng entreprenörer i flera månader för att genomföra ett dataannoteringsprojekt. Ett sådant arbete är så repetitivt och tråkigt att de resulterande datamängderna ofta innehåller många fel ...

Exempel på dataannotationer
Exempel på dataannotationer

Låt oss se vilka alternativa lösningar du kan prova år 2023!

Stanford CoreNLP

Stanford CoreNLP

Den första versionen av Stanford CoreNLP släpptes 2013. Det är ett Java-ramverk (medan spaCy är ett Python-ramverk) som gör det möjligt att utföra entitetsutvinning med mycket goda resultat.

Stanford CoreNLP föreslår också förtränade modeller, men mindre än spaCy. (se mer här).

Noggrannheten hos det här ramverket liknar den hos spaCy, men beror på vilka data du analyserar. Stanford CoreNLP ger till exempel bättre resultat på juridiska data. Det är också värt att notera att vissa enheter adresseras något annorlunda jämfört med spaCy (detta gäller till exempel enheten GPE).

När det gäller prestanda verkar Stanford klart långsammare än spaCy, vilket kan vara ett problem om du försöker nå en mycket hög genomströmning.

Flair

Flair NLP

Flair är ett nyare Pythonramverk (släppt 2018) som bygger på PyTorch-ramverket för djupinlärning.

Det har blivit mycket populärt eftersom det har en högre noggrannhet på många språk jämfört med spaCy. Flera förtränade modeller har föreslagits. (se mer här).

Denna förbättring av noggrannheten sker dock på bekostnad av hastigheten. Din genomströmning kommer att vara mycket lägre jämfört med spaCy.

Generativa AI-modeller (GPT-J, GPT-3...)

För ett par år sedan började en ny typ av AI-modeller dyka upp: generativa modeller. Dessa modeller skapades ursprungligen för textgenerering (man skriver början på en text och låter modellen generera resten), men man insåg snabbt att dessa modeller var mycket bra för alla typer av användningsområden för behandling av naturliga språk, inklusive utvinning av enheter.

De mest populära generativa modellerna idag är GPT-3, GPT-J, GPT-NeoX, T5 och Bloom. Alla dessa modeller för djupinlärning använder Transformer-arkitekturen, som uppfanns av Google 2017.

Denna nya generation av AI-modeller är mycket tunga och dyra att köra. De kräver vanligen avancerade hårdvaror baserade på en eller flera GPU:er. De är också långsammare än ramverk som spaCy. Men tack vare dessa modeller är det nu möjligt att extrahera alla typer av enheter utan att träna en särskild modell!

Det är möjligt att extrahera alla enheter utan att skapa en särskild modell tack vare inlärning med några få skott. Den här tekniken handlar om att snabbt visa modellen vad du vill göra genom att bara skapa ett par exempel vid körning. Lär dig mer om inlärning med några få skott här.

Om du vill extrahera jobbtitlar med en modell som GPT-J behöver du inte kommentera några data. Det sparar då veckor eller månader av mänskligt arbete. Och noggrannheten kommer troligen att vara mycket högre än vid utdragning av entiteter med spaCy.

Se vår artikel om hur du enkelt kan extrahera enheter med GPT-modeller.

Slutsats

SpaCy är ett utmärkt ramverk för behandling av naturliga språk som används av många företag i produktion för att extrahera enheter.

SpaCy och alternativ som Stanford CoreNLP eller Flair är dock begränsade när det gäller noggrannhet och kräver omständligt annoteringsarbete för att få fram nya enheter. År 2023 kan flera alternativa modeller baserade på textgenerering användas för att extrahera enheter utan annotering, t.ex. GPT-J, GPT-NeoX, GPT-3... Dessa nya modeller kommer verkligen att hjälpa allt fler företag att lyckas med sina projekt för utvinning av enheter.

Om du vill använda GPT-J och GPT-NeoX, tveka inte att prova NLP Cloud API. (Prova den här)!

Juliette
Marknadschef på NLP Cloud