Técnica para eliminar palabras comunes (y sus versiones en plural) de una cadena

Estoy intentando encontrar etiquetas (palabras clave) para una receta analizando una larga cadena de texto. El texto contiene los ingredientes de la receta, las instrucciones y una breve reseña.

¿Cuál crees que sería la forma más eficiente de eliminar palabras comunes de la lista de etiquetas?

Por palabras comunes, me refiero a palabras como: 'the', 'at', 'there', 'their', etc.

Tengo 2 metodologías que puedo usar, ¿cuál crees que es más eficiente en términos de velocidad y conoces una forma más eficiente de hacerlo?

Metodología 1:
- Determine el número de veces que aparece cada palabra (usando las colecciones de la biblioteca)
- Tenga una lista de palabras comunes y elimine todas las 'Palabras comunes' del objeto Colección al intentar eliminar esa clave del objeto Colección si existe.
- Por lo tanto, la velocidad estará determinada por la longitud de la variable delims

import collections from Counter
delim     = ['there','there\'s','theres','they','they\'re'] 
# the above will end up being a really long list!
word_freq = Counter(recipe_str.lower().split())
for delim in set(delims):
    del word_freq[delim]
return freq.most_common()

Metodología 2:
- Para palabras comunes que pueden ser plurales, mire cada palabra en la cadena de la receta y verifique si contiene parcialmente la versión no plural de una palabra común. P.ej; Para la cadena "Hay una prueba", verifique cada palabra para ver si contiene "allí" y elimínela si es así.

delim         = ['this','at','them'] # words that cant be plural
partial_delim = ['there','they',] # words that could occur in many forms
word_freq     = Counter(recipe_str.lower().split())
for delim in set(delims):
    del word_freq[delim]
# really slow 
for delim in set(partial_delims):
    for word in word_freq:
        if word.find(delim) != -1:
           del word_freq[delim]
return freq.most_common()

Respuestas a la pregunta(6)

Su respuesta a la pregunta