A collection of text algorithms: Levenshtein, Soundex, Metaphone, Double Metaphone, Porter Stemming