Iterando a Palavra String por vez no Python

Eu tenho um buffer de seqüência de caracteres de um arquivo de texto enorme. Eu tenho que procurar um determinado palavras / frases no buffer de seqüência de caracteres. Qual é a maneira eficiente de fazer isso?

Eu tentei usar correspondências re module. Mas como eu tenho um corpus de texto enorme pelo qual preciso pesquisar. Isso está demorando muito tempo.

Dado um dicionário de palavras e frases.

Eu percorro cada arquivo, leio isso em string, pesquiso todas as palavras e frases no dicionário e incremento a contagem no dicionário se as chaves forem encontradas.

Uma pequena otimização que pensávamos era ordenar o dicionário de frases / palavras com o número máximo de palavras para o menor. E, em seguida, compare cada posição inicial da palavra no buffer de cadeias e compare a lista de palavras. Se uma frase for encontrada, não procuramos as outras frases (pois ela corresponde à frase mais longa, que é o que queremos)

Alguém pode sugerir como proceder palavra por palavra no buffer de cadeias. (Iterar o buffer da string palavra por palavra)?

Além disso, existe alguma outra otimização que possa ser feita sobre isso?

data = str(file_content)
for j in dictionary_entity.keys():
    cnt = data.count(j+" ")
    if cnt != -1:
        dictionary_entity[j] = dictionary_entity[j] + cnt
f.close()