Estoy tratando de encontrar etiquetas (palabras clave) para una receta mediante el análisis de una larga cadena de texto. El texto contiene los ingredientes de la receta, instrucciones y una pequeña propaganda.Técnica para eliminar palabras comunes (y sus versiones plurales) de una cadena
¿Cuál crees que sería la forma más eficaz de eliminar palabras comunes de la lista de etiquetas?
Por palabras comunes, me refiero a palabras como: 'el', 'en', 'no', 'su' etc.
tengo 2 metodologías que puedo usar, que crees que es más eficiente en términos de velocidad y ¿sabes de una manera más eficiente que podría hacer esto?
Metodología 1:
- Determinar el número de veces que ocurre cada palabra (usando las colecciones de la biblioteca)
- Tener una lista de palabras comunes y eliminar todas las 'palabras comunes' del objeto Collection, tratando de eliminar esa clave del objeto Collection si existe.
- Por lo tanto, la velocidad será determinado 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 las palabras comunes que pueden ser plural, mirar cada palabra de la cadena receta, y comprobar si contiene parcialmente la versión no plural de una palabra común. P.ej; Para la cadena "Hay una prueba", compruebe cada palabra para ver si contiene "allí" y elimínela si lo hace.
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()
No puedo darle una respuesta completa aquí, pero sí quería mencionar algo que podría ayudarlo. Al hacer cualquier clase de análisis textual, generalmente se desea poder tratar las pluralizaciones, las conjugaciones y otras transformaciones como todas relacionadas con la misma 'palabra'. Por ejemplo: es posible que desee tratar delimitar, delimitar, delimitar, delimitar, delimitar ... como lo mismo. Este proceso se llama 'derivación' y hay una serie de algoritmos bien investigados, con ejemplos de una variedad de lenguajes de programación, que intentarán hacer esto por usted. ¡Buena suerte! Ojalá pudiera ser más ayuda. – soundslikeneon
En realidad, recomendaría más o menos lo contrario. Si la intención es simplemente "eliminar" las palabras "comunes" predefinidas, simplemente crearía la lista completa, completa con todas las variaciones de cada palabra que desee eliminar. No te preocupes por qué palabras son plurales de los cuales. Mucho más simple/más rápido/menos propenso a errores. –