1. A method, comprising: receiving, using one or more data processors, a plurality of offensive words, wherein each respective offensive word in the plurality of offensive words is associated with a severity score identifying the offensiveness of the respective word; receiving, using the one or more data processors, a string of words, wherein a candidate word is selected from the string of words; calculating, using the one or more data processors, for each respective offensive word in the plurality of offensive words, a distance between the candidate word and the respective offensive word; calculating, using the one or more data processors, a plurality of offensiveness scores for the candidate word, each offensiveness score in the plurality of offensiveness scores based upon (i) the calculated distance between the candidate word and an offensive word in the plurality of offensive words and (ii) the severity score of the offensive word, wherein the plurality of offensiveness scores are calculated according to one or more of: 
 offensiveness score= A *(( B−C )/ B ); 
 offensiveness score= A *(( B−( 1/ C ))/ B ); 
 offensiveness score=Max((( A−C )/ A ),0); and 
 offensiveness score=((( B−C )/ B )> T ); wherein, A is the severity score for an offensive word in the plurality of offensive words; B is a function of a length of the offensive word; C is the calculated distance between the candidate word and the offensive word; and T is a threshold value; and determining, using the one or more data processors, whether the candidate word is an offender word based on whether the highest offensiveness score in the plurality of offensiveness scores for the candidate word exceeds an offensiveness threshold value.