0:05
Főoldal | Rénhírek
A web jövője 3.

A Mindenható és a juhászkutya, avagy a névelemek titkai

Isten személy-e, szervezet, vagy valami más? Az emberi olvasók sem feltétlenül tudják eldönteni, hogyan kategorizálják a szavakat, nemhogy a számítógépprogramok... A számítógépes szövegértelmezésnek sok a buktatója, de egyre többen küzdenek meg sikerrel a kihívással!

Takács Boglárka | 2013. április 25.

A webes keresés jövőjével foglalkozó sorozatunkban azt kezdtük el legutóbb fejtegetni, hogyan lehet információt kinyerni egy weboldal szövegéből. Elmagyaráztuk, hogy első lépésben meg kell tisztítani a szöveget, amit elemezni szeretnénk: ne legyenek benne a weblapokon általában előforduló, de számunkra fölösleges elemek. Bemutattunk néhány rendkívül egyszerű módszert arra, hogyan lehet fontos információkat kinyerni a szövegből. Azt is láthattuk azonban, hogy ezeknek a módszereknek megvannak a maguk korlátai. Most továbblépünk és bonyolultabb megoldásokat is mutatunk. Közben esetlegesen előfordulhatnak különböző vallások istenei, török bevándorlók, sőt német juhászkutyák is.

Német juhászkutya úszik
Német juhászkutya úszik
(Forrás: Wikimedia Commons / Tony Hicks / CC BY 3.0)

Sekély e kéj

Mennyire kell alaposan feldolgozni egy szöveget? Ez leginkább attól függ, mi a célunk. Ha például az üzleti hírekből szeretnénk kinyerni cégek neveit, akkor valószínűleg nincsen szükségünk minden mondat teljes nyelvtani szerkezetének elemzésére, és az előző részben bemutatott technikák is elegendőnek bizonyulhatnak. Ha viszont azt szeretnénk tudni, részvényeik értéke emelkedett-e vagy csökkent, akkor már kicsit bonyolultabb elemzésre van szükség.

A szöveg szerkezetének számítógépes nyelvészeti elemzése különböző mélységű lehet. Ha internetes keresési alkalmazásokról van szó, gyakran elég az úgynevezett sekély elemzés (shallow parsing). Ez már csak azért is hasznos, mert a mélyebb elemzés igen erőforrásigényes lehet. De ha csak néhány információ kell a mondatokból, mi az, amire mindenképpen szükségünk van?

Sekély víz. Nem kell mélyre merülni a mondattanba
Sekély víz. Nem kell mélyre merülni a mondattanba
(Forrás: Wikimedia Commons)

A Nyelv és a Tudomány?

A named entityre nincsen általánosan bevett magyar fordítás, a számítógépes nyelvészek a legtöbbször az angol kifejezést használják. Mi talán a névelem magyarítást láttuk legtöbbször. Gyakran egyszerűen tulajdonnévnek fordítják, de ez nem teljesen pontos, mert vannak olyan névelemek, amelyek nem tulajdonnevek, habár a két fogalom nagyban átfed. Igaz viszont, hogy a névelemek közül a tulajdonnevek kikeresése a legnehezebb feladat.

Az információkinyeréshez nagyon fontos megtalálni az úgynevezett névelemeket (named entities). Mik azok a névelemek? Ebbe a kategóriába tartoznak a tulajdonnevek, a dátumok, emailcímek, a különböző számértékek és így tovább – minden, ami a mondatainkban egy konkrét, létező dolog neve. A dátumokat vagy emailcímeket az előző részben ismertetett regexekkel kinyerhetjük a szövegből, a tulajdonnevek esetében azonban már sokkal bonyolultabb a helyzet.

Milyen problémákat kell itt megoldani? Például nem egyértelmű, hol van a névelemek határa – a „Nyelv és Tudomány”-t szeretnénk egyben tartani és nem külön „Nyelv”-ként meg „Tudomány”-ként szerepeltetni az adatbázisunkban. A névelemek ráadásul más névelemeket is tartalmazhatnak: a „Pécsi Tudományegyetem” egy intézmény, de tartalmazza a Pécs elemet is, egy település nevét. (Sorozatunk első, bevezető részében találhatunk még hasonló példákat.)

Ide nekem a korpuszt is!

Jelenleg is rendkívül aktív kutatási területről van szó, így most nem a legnagyobb újdonságokat mutatjuk be, hanem inkább egyfajta tipikus esetet járunk körül. A névelemek automatizált felismeréséhez általában először készíteni szokás egy adatbázist, amiben a meglévő szövegek kézzel jelölt névelemei találhatóak. (A szövegeket tartalmazó adatbázisokat a nyelvészek korpuszoknak nevezik.) Ez munkaigényes feladat, de megéri befektetni az energiát, mert a későbbiekben a különböző gépi tanuló eljárások mind képesek lesznek használni ezeket az adatokat, nem kell minden esetben újra és újra megcsinálni ezt az úgynevezett tanulókorpuszt. Már számos hasonló adatbázis létezik nemcsak a legnagyobb világnyelveken, hanem akár magyarul is.

Lássunk egy valós példát! A következő mondat a Magyar Nemzeti Szövegtár HVG-alkorpuszából származik, ebben a HVG egyes cikkei találhatóak. A Szegedi Tudományegyetem kutatói egy projektjükben kézzel jelölték a következő névelem-kategóriákat: személy, szervezet, hely és egyéb. Kicsit átformáztuk a szöveget, hogy emberi fogyasztásra alkalmassá tegyük; íme:

Ha valakinek három generációval ezelőtt került valamelyik őse mondjuk a távoli Kaukázusba [hely], s neki magának a német múlttal való kapcsolata jószerivel egy német juhászkutya tartására korlátozódott, akkor is több esélye volt a német állampolgárság megszerzésére, mint annak a török gyereknek, aki Németországban [hely] született, ott járt iskolába, ízes bajor vagy sváb dialektusban beszélte Goethe [személy] nyelvét, majd ott dolgozott, ott fizetett adót – ám anyakönyvileg mindig török maradt.

Ebben a hosszú mondatban viszonylag egyértelmű, mik a névelemek. De vannak olyan esetek, amikor maguk az emberi olvasók sem értenek egyet abban, mik a névelemek és pontosan melyik kategóriába tartoznak. Egy angol nyelvű szakcikkben találkoztunk a következő bibliai példával: „Halljad Izrael, az Örökkévaló, a mi Istenünk, az Örökkévaló egy!” (5Móz 6:4, Dr. Bernstein Béla ford.) Az értékelők nem tudtak megegyezni abban, Izrael szervezet-e, hely-e, vagy pedig személy... A Bibliában mindenesetre mindhárom értelemben előfordul. És akkor még arról nem is beszéltünk, micsoda Isten! Talán személy, vagy ha a keresztény Szentháromságra gondolunk, szervezet? A zsidó vallásban ráadásul Isten egyik neve egyenesen háMákom, ’a hely’!

Azért „a hely”, mert minden helyet tartalmaz, de túl is van azokon
Azért „a hely”, mert minden helyet tartalmaz, de túl is van azokon
(Forrás: Wikimedia Commons)

A névelemkinyerő eljárásoktól nem várják el, hogy tökéletesek legyenek, hiszen még az emberi olvasók sem nyújtanak 100 százalékos teljesítményt – az emberek nagyjából 96-97 százalékos pontossággal dolgoznak. Ráadásul talán az előző példából is látszik, hogy nem is lehet minden esetben mindenkit kielégítő megoldást találni.

Fontos és furcsa tulajdonságok

Ahhoz, hogy névelemkinyerőt készíthessünk, először is el kell dönteni, milyen típusú névelemeket akarunk felismertetni. A fenti négy kategória a leggyakoribb, de mást is választhatunk, területtől függően. (Egy orvosi cikkeket értelmező rendszerben külön kategória lehet akár a gyógyszerek neve.) Ha ez megvan, akkor meg kell állapítani, milyen tulajdonságok jellemzőek a névelemek általunk kiválasztott csoportjaira. Ezeket a tulajdonságokat fogja aztán felhasználni a gépi tanuló eljárás.

A tulajdonságok kapcsolódhatnak a helyesíráshoz: „nagy kezdőbetűvel kezdődik” vagy akár „csupa nagybetűből áll”. Kihasználhatják korábbról meglévő adatbázisainkat: „szerepel az országok listáján”, „benne van a telefonkönyvben”. De vannak kevésbé egyértelmű tulajdonságok is, például azt is rögzítheti egy rendszer, hogy a szó maga milyen szófajú, vagy környezetében milyen szófajú szavak vannak. (Ehhez az kell, hogy előtte lefusson az adatokon egy szófaj-megállapító eljárás, de ilyenek léteznek.)

Régi telefonkönyvek
Régi telefonkönyvek
(Forrás: Wikimedia Commons / Gentle / CC BY-SA 3.0)

Fentebbi példáinkban már megfigyelhettük, hogy a névelemek gyakran toldalékolva szerepelnek a szövegben, ez külön megoldandó probléma. Szerencsére a lehetséges toldalékok száma véges, így egyszerűen egy szótárban tárolhatók, amivel aztán összehasonlítjuk a névelemeket. Legfeljebb akkor adódik probléma, amikor egy névelem toldalékhoz hasonlóan végződik. A Szuper Ribizli nevű gyümölcslé (kitalált példa) semmiképp sem egy szuper, Ribizlben gyártott gyümölcslé!

A Tokaji Aszú viszont tényleg Tokaj környékén készül
A Tokaji Aszú viszont tényleg Tokaj környékén készül
(Forrás: Wikimedia Commons / KathmanduFoodies / CC BY-SA 3.0)

Modell a fejünkben és a gépben

A tanuló eljárások általában valamilyen előre megadott matematikai módszer szerint veszik figyelembe a tulajdonságokat. Számos különböző módszer létezik; ezeknek a működési elve meglehetősen bonyolult is lehet. Most nem fogjuk őket részletesen ismertetni, csak egy rendkívül leegyszerűsített példát mondunk: ha egy szó végig nagybetűkkel íródik (ez egy számítógép által is könnyen feldolgozható tulajdonság), és nem szerepel a köznevek szótárában (ez egy másik ilyen tulajdonság), akkor valószínűbb, hogy szavunk névelem és nem egyszerűen arról van szó, hogy VALAKI KIABÁL.

Mérges szfinxmacska. Ha gépelni tudna...
Mérges szfinxmacska. Ha gépelni tudna...
(Forrás: Wikimedia Commons / Trilobite2 / CC BY-SA 3.5)

Az eljárás először végighalad a tanulókorpuszon és megállapítja, hogy az emberek által névelemnek besorolt elemekre milyen tulajdonságkombinációk jellemzőek. Ez maga a tanulás, és végeredményeképp létrejön egy modell, ami tartalmazza a program „elképzeléseit” arról, milyenek azok a névelemek.

 Tulajdonképpen amikor mi, emberek bejelölgetjük a névelemeket a szövegben, nekünk is van a fejünkben egy modell. A számítógépprogram feladata hasonló teljesítményt nyújtani... Persze ettől még lehet, hogy a számítógépes modell egészen máshogy épül fel, mint a mi gondolkodásunk.

A modellt aztán új szövegekre alkalmazva az eljárás viszonylag jó hatásfokkal megmondja, mik a szövegben a névelemek. A legjobb névelem-felismerő eljárások ma már az emberekhez hasonló teljesítményt nyújtanak – igaz, általában csak egy konkrét részterületen, például gazdasági cikkek vagy biológiai tanulmányok értelmezése terén. A legnehezebb talán olyan névelem-felismerőt készíteni, ami tetszőleges weblapon sikerrel tudja teljesíteni a feladatát.

Ha egy rendszer sikeresen kinyerte a névelemeket, még további feladatok várnak rá, hogy ezt az információt végül mi, emberek a keresésben is hasznosítani tudjuk. Elsősorban meg kell állapítania, hogy milyen viszonyban vannak ezek a névelemek egymással... De erről már csak a következő részben írunk!

További olvasnivaló, felhasznált irodalom

Design Challenges and Misconceptions in Named Entity Recognition

A survey of named entity recognition and classification

Szeged NER

Machine Learning Techniques for Applied Information Extraction (angolul, de magyar példákkal)

Néhány online névelem-kinyerő, sajnos csak angolul

AlchemyAPI

Illinois NER

NLTK (szófajmegállapítást is végez)

Kapcsolódó tartalmak:

Hasonló tartalmak:

Hozzászólások:

Követem a cikkhozzászólásokat (RSS)
Még nincs hozzászólás, legyen Ön az első!