Iterando a través de la palabra String a la vez en Python

Tengo un búfer de cadena de un gran archivo de texto. Tengo que buscar palabras / frases dadas en el búfer de cadena. ¿Cuál es la forma eficiente de hacerlo?

Intenté usar coincidencias con el módulo re. Pero como tengo un gran corpus de texto que tengo que buscar. Esto está tomando una gran cantidad de tiempo.

Dado un diccionario de palabras y frases.

I iterar a través de cada archivo, leerlo en cadena, buscar todas las palabras y frases en el diccionario e incrementar el recuento en el diccionario si se encuentran las claves.

Una pequeña optimización que pensamos era ordenar el diccionario de frases / palabras con el número máximo de palabras al más bajo. Y luego compare la posición de inicio de cada palabra desde el búfer de cadena y compare la lista de palabras. Si se encuentra una frase, no buscamos las otras frases (ya que coincide con la frase más larga, que es lo que queremos)

¿Puede alguien sugerir cómo hacer palabra por palabra en el búfer de cadena? (Iterar el buffer de cadena palabra por palabra)?

Además, ¿hay alguna otra optimización que se pueda hacer al respecto?

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()

Respuestas a la pregunta(8)

Su respuesta a la pregunta