┃A projekt
Nagy mennyiségű online újságcikk feldolgozása és kategorizálása jellemzőik alapján, a cím, a tartalom, a szerző és a dátum megállapításával.
┃Probléma
Ügyfelünknek (egy magyar startup) egy megbízható, robusztus és folyamatosan működő adatfeldolgozó rendszerre volt szüksége, amely skálázható is. Többszáz hírportál és egyéb weboldal teljes tartalmát kellett valósidőben menteni. Az elmentett adatokon az ügyfél saját szolgáltatását, valamilyen analitikai feladatot végzett el.
Ehhez a feladathoz egy olyan rendszerre volt szükségük, amely beazonosítja az online cikkek főbb építőköveit, vagyis a címet, a szerzőt, a dátumot, és a tartalmi részt, majd ezeket megfelelő kategóriák alatt el is menti. Minden más adatot (beleértve például a képeket, banner hirdetéseket) “más” indexeléssel kellett ellátni és figyelmen kívül hagyni.
Mivel az új tartalmak áradata sosem szűnik meg, ezért végtelen skálázhatóságra volt szükség.
Ezen kívül egy összekötő megoldást is ki kellett dolgoznunk, ami lehetővé teszi, hogy az általunk gyűjtött adat automatikusan, erőfeszítés nélkül és folyamatosan be legyen csatornázva az ügyfél analitikai rendszerébe.
┃Megoldás
Építettünk egy ún. scraping eszközt, amely előre meghatározott webcímeket keres fel, ott megnyit minden egyes linket, azokat priorizálva, amelyeket cikk-ként azonosít. Először a legfrissebbekkel kezd. Ha a linkelt oldalon talál linket, azt is megnyitja. Egészen addig folytatja ezt, amíg a linkelt oldalon már nem talál további linket.
A Proof of Concept jól működött, bebizonyította, hogy az alkalmazott gépi tanulásos modell megfelelő megoldást kínál. Ezután el kellett érni, hogy a modell végtelenül skálázható és folyamatosan működőképes legyen. Ehhez a felhőtechnológia alkalmazása tűnt járható útnak. Az AWS segítségével elértük a dinamikus skálázhatóságot, amire egy fizikai szerver nem lenne képes. A projekthez ugyanakkor egy hibrid “serverless” metódusra is szükség volt, mivel bizonyos adatokat folyamatosan elérhetően kellett tárolni.
┃Metódus
Létrehoztunk egy gépi tanulás modellt, és az online cikkek DOM elemeinek (a weboldalak xml és html fájljai logikai faalakzatban) indexálásával betanítottuk. Azt is megtanítottuk a modellnek, hogy a cikk elemei jellemzően hogyan helyezkednek el egymáshoz képest.
Miután a szoftver megnyitja egy adott portál főoldalát, majd az összes további linket az oldalon, ellenőrzi az alábbi paramétereket:
1. Felhasznált font típusa, szavak száma
2. Szöveg színe, központozási jelek típusai
3. a TextNode doboz értékei (alak és méret)
4. TextNode Class és Parent Tag
5. DOM szekvencia relatív pozíciói
Ez a modell létrehoz egy kategória-valószínűségi vektort.
A szoftver megbecsli a kategóriáját az adott DOM-nak. A tanítási fázis során megmutatjuk a helyes megoldást, tehát a tanítási folyamat ebben az esetben “supervised”, ellenőrzött.
A modell ezután elmenti a megoldást (“helyes volt a becslés vagy nem?”), újrakalibrál és átlép a következő DOM-ra, már egy kicsivel magasabb sikerességi eséllyel.
A metódus sikeresnek bizonyult, megbízhatóan mentette el a megfelelő kategória alatt az adatokat.
┃Eredmények
Az ügyfél 5-10 ezer webcímet szkennelt minden nap. A szoftvert nem kellett leállítani a folyamatos fejlesztés közben sem. Folyamatosan monitoroztuk a memóriafelhasználást és egyéb paramétereket. 15 “crawler” dolgozott 45 szálon, mint egy 100 Gb adatot generálva óránként.
A metódus sikeresen átment a stresszteszteken és még mindig használatban van, kevesebb, mint 1 százalékos hibarátával.