code: def set_substitution(self, word, substitution):
          
          # 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)
docs: Add a word substitution
          :param word: The word to replace
          :type  word: str
  
          :param substitution: The word's substitution
          :type  substitution: str