import pandas as pd import numpy as np import nltk from nltk.tokenize import word_tokenize, RegexpTokenizer from nltk.corpus import stopwords from sklearn.feature_extraction.text import CountVectorizer import csv nltk.download('stopwords') nltk.download('punkt') stopwords_es = stopwords.words('spanish') def eliminar_puntuacion(articulo): deletetion_symbols = ['!','(',')',"'",'-','[',']','{','}',';',':','"','“','’','”',"'",'`','‘','``','\\' ,'/','|',',','|','<','>','.','..','...','?','@',"#",'$','^','&','*','_','~','+','%','=','¿','¡',"''"] new_articulo = "" for x in articulo: if x not in deletetion_symbols: new_articulo += x return new_articulo def eliminar_stopwords(articulo): articulo_splitted=articulo.split() new_articulo = "" for x in articulo_splitted: if x not in stopwords_es: new_articulo += " " + x return new_articulo def limpieza_articulos(df): df_titulos=pd.DataFrame(df['titulo'], columns=['titulo']) # Colocando texto en minusculas df_titulos['titulo']= df_titulos['titulo'].apply(lambda x: x.lower()) # Eliminando signos de puntuacion df_titulos['titulo']= df_titulos['titulo'].apply(lambda x: eliminar_puntuacion(x)) # Eliminando palabras vacias (stopwords) utilizando el corpus para estos fines que tiene nltk df_titulos['titulo']= df_titulos['titulo'].apply(lambda x: eliminar_stopwords(x)) all_text = ' '. join(df_titulos['titulo']) vocab= np.unique(word_tokenize(all_text)) return vocab