Necesitaría agregar más condiciones en los datos de limpieza, que incluyen la eliminación de palabras vacías, día de la semana y meses. Para el día de la semana y los meses creé una lista separada (no sé si ya hay algún paquete integrado en Python para incluirlos). Para los números, consideraría isdigit. Entonces algo como esto:

days=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
# need to put into lower case
months=['January','February','March', 'April','May','June','July','August','September','October','November','December']
# need to put into lower case

cleaned = [w for w in remove_punc.split() if w.lower() not in stopwords.words('english')]

¿Cómo podría incluirlo en el código anterior? Sé que se trata de declaraciones extra if para tener en cuenta, pero estoy luchando con eso.

0
user12907213 11 oct. 2020 a las 18:34

1 respuesta

La mejor respuesta

Puede convertir todas sus listas en conjuntos y tomar su unión para el conjunto final. Entonces solo se trata de comprobar la pertenencia de tu palabra al conjunto. Algo como lo siguiente funcionaría:

# existing code
from nltk.corpus import stopwords

days=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
# need to put into lower case
months=['January','February','March', 'April','May','June','July','August','September','October','November','December']
# need to put into lower case

# add these lines
stop_words = set(stopwords.words('english'))
lowercase_days = {item.lower() for item in days}
lowercase_months = {item.lower() for item in months}

exclusion_set = lowercase_days.union(lowercase_months).union(stop_words)

# now do the final check
cleaned = [w for w in remove_punc.split() if w.lower() not in exclusion_set and not w.isdigit()]
0
Bitswazsky 11 oct. 2020 a las 16:46