7.2. Szövegosztályozás
A neurális hálózatok másik tipikus alkalmazási területe a szövegosztályozás. Az interneten található szöveges dokumentumok számának rohamos növekedésével a témakör napjainkban egyre fontosabbá kezd válni. Felmerülő konkrét feladat például a témakör szerinti dokumentum-kategorizálás, a spam szűrés, vagy az automatikus e-mail megválaszolás (ahol egy előre rögzített készletből kell kiválasztani a felhasználó kérdéséhez leginkább illeszkedő választ).
Említettük már, hogy osztályozási feladatoknál kulcskérdés az adatreprezentáció. Szövegosztályozás esetén a szokásos megközelítés, hogy veszünk egy szótárt (pl. a tanító készlet szavainak összessége), amelynek minden szava külön jellemző. Minden szöveget egy valós vektorként reprezentálunk (x = [x1, …, xn]T), ahol a szövegben előforduló szavaknak megfelelő komponensek nemzérus értékűek. Tehát szövegosztályozásnál a minták általában sokdimenziós, ritka vektorok. A neuronhálók egyes típusai a sokdimenziós feladatokat eltérő hatékonysággal tudják kezelni. E téren két szélsőség az Albus CMAC háló és a szupport vektor gép, illetve általában a kernel gépek. Azáltal, hogy a sokdimenziós bemeneti térről vagy a jellemzőtérről áttérünk a kernel térre, a ténylegesen megoldandó feladat dimenzióját jelentősen redukáljuk. A szupport vektor gépek tehát jól kezelik azokat a feladatokat, ahol viszonylag kevés mintapontunk van, de ezek sokdimenziósak. A szövegosztályozás tipikusan ilyen feladat, így az SVM igen elterjedt ezeknél a feladatoknál. Ha az egyes szövegek vektorok, akkor a teljes tanító készlet reprezentálható egy mátrixként, amelyet dokumentum – term mátrixnak hívunk.
Szó a dokumentumban |
… |
(i – 1). dokumentum |
i. dokumentum |
(i + 1). dokumentum |
… |
… |
|||||
Sphere |
0 |
* |
0 |
||
Spice |
0 |
0 |
0 |
||
Spider |
* |
0 |
0 |
||
Spike |
0 |
0 |
* |
||
Spin |
0 |
0 |
* |
||
… |
A konkrét jellemzőértékek beállítását többféle módszer szerint lehet végezni. A legegyszerűbb, ha a nemzérus komponenseket egységesen 1-re állítjuk (bináris reprezentáció). Ennél kicsit kifinomultabb a TF (Term Freqency) reprezentáció, amikor xi = TF(i), vagyis az i-edik komponens értéke az i-edik szótárszó előfordulásainak száma az adott dokumentumban. Talán a leggyakrabban használt módszer a szöveges dokumentumok reprezentálására a TF–IDF (Term Frequency – Inverse Document Frequency) séma:
(7.1)
ahol |D| a dokumentumok száma, DF(i) pedig azon dokumentumok száma, amelyekben az i-edik szó előfordul.
Az elektronikus levélszemét (spam) kiszűrése az internetes levelezésből napjainkban igen aktuális gyakorlati feladat. A levelek osztályozása spam-ekre illetve normál levelekre nem oldható meg néhány előre rögzített, egyszerű szabály segítségével. A mintákból való tanulás képessége ezen a területen is igen hasznos tulajdonság, így természetes lehetőségként kínálkozik a neurális hálózatok alkalmazása. Az alábbiakban egy szupport vektor gépes megoldást ismertetünk [Dru99].
Egy spam kategorizáló rendszer (mint minden kétosztályos osztályozó rendszer) alapvetően kétféle hibát tud elkövetni: nem szűr ki egy spam-et, vagy a spam-ek közé helyez egy normál levelet (általánosan az első a téves negatív, a második a téves pozitív osztályozás). Jogos elvárás, hogy a felhasználó állíthassa be a szűrés szigorúságát, vagyis ő dönthesse el, hogy melyik típusú hibázást szeretné jobban elkerülni. Ehhez viszont az kell, hogy az osztályozó rendszer kimenete ne csak egy igen-nem típusú logikai érték legyen, hanem egy „valószínűség”, amely megadja, hogy az adott levél mekkora eséllyel számít spam-nek. A szupport vektor gépek automatikusan ilyen bizonyossági értékként is értelmezhető választ állítanak elő, hiszen a kimenetük az osztályozandó mintának az elválasztó hipersíktól vett (előjeles) távolságával arányos.
Az ismertetett spam kategorizáló rendszer a bináris és a TF szöveg-reprezentációt használta, néhány kis gyakorlatias módosítással. A szótárba csak azokat a szavakat vették be, amelyek tanító készlet dokumentumai közül legalább háromban szerepelnek. Így kiszűrhetők a szótárból az elírt ill. a ritka változatban használt szavak. Ezen kívül kísérleteztek tiltólista használatával a minden szövegben gyakran előforduló, kevés információt hordozó névelők, kötőszavak, stb. kiszűrésére.
Az osztályozók minősítésére a legegyszerűbb mérőszám a hibaarány. Bizonyos feladatoknál (pl. számjegyfelismerés) ez az egyetlen szám is eleget mond, mivel nem igazán érdekes a különböző típusú tévesztések aránya. Spam felismerés esetén azonban ez nincs így: itt érdemes külön lemérni a spam átengedési (téves negatív) ill. a normál levél kiszűrési (téves pozitív) arányt. Egy ésszerű megközelítés, ha a felhasználó beállíthatja, hogy legfeljebb mekkora normál levél kiszűrési arányt tolerál. A cél a spam átengedés minimalizálása a normál levél kiszűrésre vonatkozó feltétel betartása mellett.
A teszteléséhez használt adatbázis 3000 levelet tartalmazott. Ebből 850 volt spam, 2150 pedig normál üzenet. A rendszer teljesítményének mérésére 10-szeres kereszt kiértékelést alkalmaztak. Természetesen több különböző beállítást is kipróbáltak. Lemérték, hogy mennyire romlanak le az eredmények, ha a leveleknek csak a tárgy mezőjére (subject) vagy csak a törzsére (body) támaszkodnak. Megvizsgálták, hogy milyen változást okoz a tiltólista használata. A kapott eredményeket az alábbi táblázat foglalja össze:
TF reprezentáció |
Bin. reprezentáció |
|
Tárgy alapján, tiltólista nélkül |
54,9 % |
54,9 % |
Tárgy alapján, tiltólistával |
71,9 % |
75,8 % |
Törzs alapján, tiltólista nélkül |
9,6 % |
9,3 % |
Törzs alapján, tiltólistával |
12,0 % |
11,5 % |
Tárgy + törzs alapján, tiltólista nélkül |
1,8 % |
1,5 % |
Tárgy + törzs alapján, tiltólistával |
2,7 % |
3,2 % |
A legjobb eredményeket a bináris reprezentáció segítségével sikerült elérni, de volt olyan beállítás is, amelyben a TF reprezentáció bizonyult jobbnak. Érdekesség, hogy a tiltólista használata minden esetben rontott az eredményeken. Ez arra enged következtetni, hogy az SVM ügyesebben választotta ki, hogy mely jellemzőket érdemes figyelembe venni a döntésnél, mint a tiltólistát összeállító emberek.