Ali obstajajo čustva pri komunikaciji med aplikacijami?
Odkrivanje napak s klasifikacijo in tehniko obdelave naravnega jezika
Pri razvoju poslovno kritičnih aplikacij je ključnega pomena dobro, standardizirano in dovolj opisno izražanje napak. Napake v aplikacijah lahko nastanejo, ko so aplikacije napačno klicane, preobremenjene oz. jim manjkajo strojni viri ali pa so celo nedosegljive. Pri obsežnih in prepletenih informacijskih sistemih, kjer je v proces vpetih več različnih aplikacij ali servisov, poročanje o napakah lahko hitro postane nepregledno in težko obvladljivo. Razlogi so različni, od postopnega razvoja posameznih delov sistema do pomanjkanja standardizacije poročanja o napakah.
Prav napake pa so ključen podatek, ki ga potrebujemo za izboljšanje nekega sistema. Kadar so napačno zapisane in posredovane drugim sistemom, je iskanje vzrokov za njihov nastanek zelo težavno. Če vso komunikacijo med različnimi sistemi preusmerimo v sistem za obvladovanje velepodatkov, lahko hitro vidimo, da imajo pridobljeni dnevniške zapisi, ki vsebujejo napake, bolj negativen prizvok, medtem ko v zapisih, ki ne vsebujejo napak, najdemo bolj pozitivno konotacijo. Sicer aplikacijam težko pripišemo čustvena stanja, vseeno pa lahko pozitivizem in negativizem v besedilu medsebojne komunikacije med aplikacijami pripomore k iskanju resničnih napak. Tako lahko, bolj za šalo kot zares, povežemo negativno oz. pozitivno valenco s trenutnim razpoloženjem aplikacij.
Kako odkriti nezaznane napake v sistemu?
S klasifikacijo napak se spopada sistem, katerega zasnovo predstavljamo tokrat. Predstavljen primer je v praksi rešitev, ki uporablja približno 200 medsebojno prepletenih aplikacij v 4 različnih okoljih (produkcijsko, pred-produkcijsko in dve testni okolji).

Vizualizacija prepletenosti aplikacij pri našem naročniku. Vir: Medius
Sistem smo razvili s pomočjo klasifikatorja napak in analize sentimenta odgovorov spletnih servisov SOAP, z njim pa operaterjem omogočimo boljši pregled zaznanih napak. Predstavljena rešitev je neodvisna od jezika in deluje tudi ob mešanju jezikov (preverjeno na mešanici slovenščine in angleščine), kar smo uporabili na sistemu enega od naših naročnikov. Se sprašujete, kako takšen sistem deluje? Berite dalje.
Na kakšen način smo prišli do uspešnega sistema?
Kar je enostavno za končne uporabnike, je ponavadi zapleteno v ozadju. To drži tudi pri sistemu za razvrščanje napak, ki smo ga zasnovali v več segmentih. Sistem deluje tako, da analizira vsebino sporočil, saj različni spletni servisi uporabljajo različne oblike in strukture zapisov, kar pomeni, da niso primerni za enostavno razčlenjevanje (ang. parsing), izziva pa ne reši niti uporaba iskalnih nizov. Zato smo zasnovali sistem, ki ni odvisen od strukture odgovora, ampak na podlagi analize sentimenta s pomočjo strojnega učenja odgovore razvrsti med tiste z in brez napake. Z drugimi besedami, izdelali smo sistem, ki zazna valenco v medsebojni komunikaciji aplikacij, torej take, ki imajo v svojih povratnih sporočil nekaj negativnih besednih zvez. Da se to zgodi, je potrebnih več korakov, a vas ne bomo preveč obremenjevali z matematiko in programerskimi izrazi. Če skrajšamo, rešitev vključuje strojno učenje in več različnih algoritmov, ki razčlenijo, analizirajo, prevajajo in ponovno osmislijo podatke iz sistema, vse to pa počnejo izredno hitro.
Kaj pa nam kažejo rezultati?
Za potrebe strojnega učenja smo uporabili ročno označeno zbirko izbranih napak, ki smo jih pridobili v sistemu za centralno zbiranje podatkov. Ta zbirka je bila osnova za izdelavo algoritma, ki učinkovito preverja in razvršča odgovore iz sistema z visoko natančnostjo. Po končnem preverjanju smo na podlagi označene zbirke odgovorov in s pomočjo našega algoritma dosegli povprečni uteženi priklic 0,977 in povprečno uteženo točnost 0,977, kar z drugimi besedami pomeni, da je sistem izjemno učinkovit in predvsem natančen. Kaj pa hitrost? V realnem času smo obdelali 750.000 odgovorov različnih spletnih servisov in aplikacij, dodatno pa odkrili 718 edinstvenih napak, ki smo jih pregledali ročno in potrdili, da gre za odgovore, ki vsebujejo podatke o različnih napakah.
Bi tudi vi radi spoznali, ali vaše aplikacije skrivajo nezaznane napake?
Naš sistem omogoča hitro in učinkovito delovanje. Sistem pomaga odkrivati napake v zapletenih in prepletenih informacijskih sistemih ne glede na strukturo in jezik, mogoče pa ga je implementirati v obstoječi centralni sistem podjetja. Ker je vpleteno strojno učenje, je za boljše delovanje in konstantno izboljšanje natančnosti potrebna čim večja količina razpoložljivih podatkov, s katerimi razpolagajo običajno večja podjetja. Naše eksperimentiranje se šele začenja, v naslednjih fazah pa bomo preverili tudi možnost uporabe nenadzorovanega pristopa k strojnemu učenju, kar bi pomenilo še en velik korak naprej za nas in naše naročnike.