Java exception matching in real time using fuzzy logic
Abstract: This thesis deals with the problem of matching Java exceptions thatoriginates from the same problem, but looks a bit dissimilar. The matchingmust be done within reasonable time to be able to be carried outautomatically. Different ways of utilizing fuzzy string matching logic isexamined in general and how to apply it to Java exceptions specifically.The exceptions are divided into separate logical parts and the analysisdeals with how to weight the importance of the parts and application offuzzy matching between them. Java exceptions can be linked in "causedby" chains depending on where they occur and what effects they have. Inshort - an exception can cause other exceptions to occur, and thus thefirst exception is a "caused by exception" to the second one.In this thesis the resulting algorithm groups exceptions together withtheir "caused by":s and compares the top and bottom exceptions of thechain with other top and bottom exceptions to find matches. To determinedegree of similarity a number of fuzzy string matching algorithmswhere examined including "Levenshtein", "Damerau-Levenshtein","Needleman-Wunch", "Jaro-Winkler", "Bitap", "Boyer-Moore" and in somedegree "Ukkonen". In the end, a modified version of the original Levenshteinalgorithm - utilizing lazy evaluation and thresholding - was determinedthe best suited comparison algorithm for this problem.
Sammanfattning
Den här examenstesen berör problemet om att matcha avbrott i Java(eng: exceptions) som härrör från samma problem, men av olika anledningarser lite olika ut. Matchningen måste göras inom rimlig tid för attkunna användas automatiskt av andra applikationer i realtid. För attlösa detta undersöks olika sätt att applicera s.k. fuzzy string matchingalgoritmerpå Java-avbrott.Java-avbrott är uppdelade i olika logiska delar och analysen handlarom hur man kan vikta hur viktiga de olika delarna är och hur fuzzy stringmatching kan användas för att få fram likheter. Java-avbrott kan ävenvara ihoplänkade i orsaks-kedjor (eng: caused by) beroende på var deuppstår och vilka effekter de har. Kortfattat kan ett avbrott orsaka attett annat uppstår och då blir det första avbrottet ett orsaksavbrott tilldet andra.I den här tesen grupperas avbrott ihop med deras orsakande avbrottoch det översta i kedjan sätts ihop med det understa och jämförs medandra topp- och bottenavbrott. För att avgöra graden av likhet mellande olika delarna har ett antal "fuzzy string matching"-algoritmer jämförts: "Levenshtein", "Damerau-Levenshtein", "Needleman-Wunch", "Jaro-Winkler", "Bitap", "Boyer-Moore" och i viss mån "Ukkonen". Slutligen haren modifierad variant av Levenshteinalgoritmen visats vara bäst lämpadför det här problemet - en Levenshtein med modifikationen att den använder "Lazy evaluation" samt ett tröskelvärde för hur olika strängar fårvara som mest innan de kastas bort.
CLICK HERE TO DOWNLOAD THE WHOLE ESSAY. (in PDF format)