Add a word substitution
        :param word: The word to replace
        :type  word: str

        :param substitution: The word's substitution
        :type  substitution: str

def set_substitution(self, word, substitution):
        """
        Add a word substitution
        :param word: The word to replace
        :type  word: str

        :param substitution: The word's substitution
        :type  substitution: str
        """
        # Parse the word and its substitution
        raw_word = re.escape(word)
        raw_substitution = substitution

        case_word = re.escape(normalize(word, preserve_case=True))
        case_substitution = normalize(substitution, preserve_case=True)

        word = re.escape(normalize(word))
        substitution = normalize(substitution)

        # Compile and group the regular expressions
        raw_sub = (re.compile(r'\b{word}\b'.format(word=raw_word), re.IGNORECASE), raw_substitution)
        case_sub = (re.compile(r'\b{word}\b'.format(word=case_word), re.IGNORECASE), case_substitution)
        sub = (re.compile(r'\b{word}\b'.format(word=word), re.IGNORECASE), substitution)

        sub_group = (sub, case_sub, raw_sub)

        # Make sure this substitution hasn't already been processed and add it to the substitutions list
        if sub_group not in self._substitutions:
            self._log.info('Appending new word substitution: "{word}" => "{sub}"'.format(word=word, sub=substitution))
            self._substitutions.append(sub_group)