Mi az a névesített entitás felismerés
Eddig főként a szövegosztályozással foglalkoztunk, vagyis azzal a feladattal, amikor egy egész szöveghez rendelünk egyetlen címkét. A nyelvfeldolgozásnak azonban van egy legalább ennyire fontos ága, amit névesített entitás felismerésnek, angolul named entity recognition-nek, röviden NER-nek hívnak. A NER célja, hogy a szövegen belül azonosítsa a konkrét entitásokat, tehát a személyneveket, a helyszíneket, a dátumokat és időintervallumokat, a szervezetneveket, vagy akár olyan speciális kifejezéseket is, mint a kémiai képletek.
Képzeljünk el egy intelligens chatbotot, amilyen az Amazon Alexa vagy a Google Assistant. Az ilyen rendszerek úgy próbálják megérteni a felhasználó kérését, hogy a beírt vagy elmondott mondaton szövegosztályozást futtatnak, és ennek eredményeként megállapítják az úgynevezett szándékot, vagyis azt, mit szeretne elérni a felhasználó. Ha valaki az időjárásról kérdez, a felhasználó ugyanakkor gyakran meg is ad kiegészítő paramétereket, például egy helyszínt vagy egy dátumot. A chatbotnak fel kell ismernie ezeket az entitásokat ahhoz, hogy a megfelelő paraméterekkel tudja végrehajtani a kérést. Pontosan ez az a pont, ahol a NER a képbe kerül.
Hasonló a helyzet a tudományos vagy orvosi szövegek elemzésénél is. Egy orvosi cikkből ki szeretnénk nyerni a betegségneveket és a gyógyszerhatóanyagokat. Néhány gyakori betegségnév ugyan kigyűjthető egyszerű szövegrészlet kereséssel is, az összetettebb entitások, mint a kémiai vegyületek vagy a ritkább gyógyszernevek felismerése azonban már komolyabb, tanult modellt igényel.
A NER mint token klasszifikáció
A NER modellek lényegében token klasszifikációs modellek. Ez azt jelenti, hogy nem egyetlen címkét rendelünk a teljes mondathoz, hanem minden egyes tokenről, azaz minden egyes szóhoz vagy szórészlethez külön eldöntjük, hogy egy entitáshoz tartozik-e, és ha igen, melyik entitástípushoz.
Vegyük például ezt a mondatot egy orvosi cikk címéből, "tricuspidalis billentyű elégtelenség és lítium-karbonát toxicitás egy újszülött csecsemőben". Ebben a mondatban három entitást találunk. A "tricuspidalis billentyű elégtelenség" egy betegség, a "lítium-karbonát" egy kémiai anyag, a "toxicitás" pedig szintén betegségre utaló kifejezés.
Fontos észrevenni, hogy egy entitás gyakran több egymást követő tokenből áll, és a modellnek meg kell tudnia különböztetni két egymás után következő, de különálló entitást is. Erre a célra terjedt el az úgynevezett BIO címkézés, más néven IOB címkézés. Ennek lényege, hogy minden entitástípushoz két külön címkét használunk. A "B-" előtag (beginning) az entitás első tokenjét jelöli, az "I-" előtag (inner) az entitás folytatását, a mondat minden más, entitáshoz nem tartozó szava pedig az "O" (other) címkét kapja. A fenti példamondat így nézne ki BIO címkézéssel.
- tricuspidalis - B-DIS
- billentyű - I-DIS
- elégtelenség - I-DIS
- és - O
- lítium-karbonát - B-CHEM
- toxicitás - B-DIS
- egy - O
- újszülött - O
- csecsemőben - O
Mivel a feladat lényege, hogy minden bemeneti tokenhez pontosan egy kimeneti címkét rendeljünk, a NER egy úgynevezett sok a sokhoz típusú szekvenciafeladatnak számít, ahol a bemeneti szekvencia hossza és a kimeneti szekvencia hossza mindig megegyezik.
Milyen modellel oldható meg a feladat
Mivel a NER lényegében token klasszifikáció, ugyanazokat a rekurrens neurális hálókat, RNN-eket használhatjuk erre a feladatra, amelyeket a korábbi leckékben már megismertünk, csak most nem a szekvencia végén, hanem minden egyes lépésben szükségünk van egy kimenetre. Egy LSTM alapú háló minden egyes bemeneti tokenhez rögtön kiadja a hozzá tartozó címkét, így a bemenet és a kimenet szekvenciái párhuzamosan futnak végig a hálón.
A gyakorlatban ma leginkább transzformer alapú modelleket, például a BERT-et vagy annak leszármazottait használjuk erre a célra, mivel ezek sokkal jobban megragadják a szó körüli szövegkörnyezetet, ami a NER esetében kritikus fontosságú. Egy szó jelentése és entitástípusa ugyanis gyakran csak a mondat egészének ismeretében állapítható meg egyértelműen. A modell architektúrája szempontjából a lényeg változatlan marad, minden tokenhez egy osztályozó réteg rendeli hozzá a legvalószínűbb BIO címkét, csak a token reprezentációját adó háló cserélődik LSTM-ről transzformerre.
A tanításhoz olyan adatra van szükség, ahol minden szót már előre felcímkéztek a megfelelő BIO taggel. Ez jóval munkaigényesebb annotációt igényel, mint egy egyszerű szövegosztályozási feladat, hiszen nem elég egy címkét adni egy egész dokumentumhoz, hanem szavanként kell megjelölni, mi micsoda. Emiatt a NER modellek tanításánál gyakran kisebb, de gondosan annotált szakterületi adathalmazokat használnak, például kifejezetten orvosi vagy jogi szövegekre szakosodva.
Gyakorlati alkalmazások vállalati környezetben
A névesített entitás felismerés az egyik legpraktikusabb NLP technológia üzleti környezetben, mert lehetővé teszi, hogy strukturálatlan szövegből strukturált adatot nyerjünk ki. Néhány tipikus felhasználási terület a következő.
- Dokumentumfeldolgozás, ahol szerződésekből, számlákból vagy jelentésekből automatikusan kinyerhetők a szereplők nevei, dátumok, összegek és helyszínek.
- Ügyfélszolgálati chatbotok, ahol a NER segít kitölteni a beszélgetés során összegyűjtött paramétereket, például egy repülőjegy foglalásánál a dátumot és az úticélt.
- Keresőrendszerek és keresőmotor-optimalizálás, ahol az entitások felismerése pontosabb, kontextusérzékenyebb találatokat tesz lehetővé.
- Egészségügyi és tudományos szövegelemzés, ahol betegségeket, hatóanyagokat és orvosi eljárásokat azonosítunk nagy mennyiségű publikációban.
- Compliance és kockázatkezelés, ahol személyes adatok vagy érzékeny információk automatikus azonosítására és anonimizálására is használható a technológia.
Ezekben az esetekben a NER gyakran nem önmagában, hanem más NLP komponensekkel összekapcsolva ad valódi üzleti értéket, hiszen a kinyert entitások tovább táplálhatók egy keresőindexbe, egy adatbázisba vagy akár egy másik gépi tanulási modellbe. A jó minőségű entitáskinyerés így az információkinyerés és a dokumentumautomatizálás egyik alapköve.
Gyakorlati kód
Ha szeretnéd saját magad is kipróbálni egy NER modell tanítását, a Microsoft eredeti jegyzetfüzete TensorFlow-ban, lépésről lépésre bemutatja a folyamatot. Gyakorlati kód a GitHubon.
Forrás
Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.
Workshop
AI Transformation Day
Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.
Érdekel a program →