docs: def split_words(sentence, modify=True, keep_shorts=False):
      """
      Extract and yield the keywords from the sentence:
      - Drop keywords that are too short (keep_shorts=False)
      - Drop the accents (modify=True)
      - Make everything lower case (modify=True)
      - Try to separate the words as much as possible (using 2 list of
        separators, one being more complete than the others)
      """
      if (sentence == "*"):
          yield sentence
          return
  
      # TODO: i18n
      if modify:
          sentence = sentence.lower()
          sentence = strip_accents(sentence)
  
      words = FORCED_SPLIT_KEYWORDS_REGEX.split(sentence)
      if keep_shorts:
          word_iter = words
      else:
          word_iter = __cleanup_word_array(words)
      for word in word_iter:
          can_split = True
          can_yield = False
          subwords = WISHED_SPLIT_KEYWORDS_REGEX.split(word)
          for subword in subwords:
              if subword == "":
                  continue
              can_yield = True
              if not keep_shorts and len(subword) < MIN_KEYWORD_LEN:
                  can_split = False
                  break
          if can_split:
              for subword in subwords:
                  if subword == "":
                      continue
                  if subword[0] == '"':
                      subword = subword[1:]
                  if subword[-1] == '"':
                      subword = subword[:-1]
                  yield subword
          elif can_yield:
              if word[0] == '"':
                  word = word[1:]
              if word[-1] == '"':
                  word = word[:-1]
              yield word