-module(utils). -export([stemming/2]). stemming(Word, SuffixesList) when is_binary(Word) -> string_stemming(Word, SuffixesList); stemming(Word, SuffixesList) -> string_stemming(Word, SuffixesList). string_stemming(Word, []) -> Word; string_stemming(Word, [H|T]) -> %check to see if Word ends with Head's key Suffix = element(1, H), Replacement = element(2, H), case word_ends_with(Word, Suffix) of true -> case Replacement of [] -> Word1 = string:substr(Word, 1, string:len(Word) - string:len(Suffix)), string_stemming(Word1, []); _ -> Word1 = string:concat(string:substr(Word, 1, string:len(Word) - string:len(Suffix)), Replacement), string_stemming(Word1, []) end; _ -> string_stemming(Word, T) end. word_ends_with(Word, Suffix) -> case string:len(Word) > string:len(Suffix) of true -> case (string:substr(Word, string:len(Word) - string:len(Suffix) + 1)) =:= Suffix of true -> true; false -> false end; false -> false end.