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