Skip to content

Instantly share code, notes, and snippets.

@monipip3
Last active June 24, 2018 13:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save monipip3/db734cc3e216357b89c7fae7603d269e to your computer and use it in GitHub Desktop.
Save monipip3/db734cc3e216357b89c7fae7603d269e to your computer and use it in GitHub Desktop.
import pandas as pd
import nltk
from nltk.corpus import stopwords
from collections import OrderedDict
from nltk.tokenize import RegexpTokenizer
nltk.download('stopwords')
df = pd.read_csv('5StarReviews.csv')
#crear una función llamada bigrams que saca "bigrams" utilizando las funciónes de NLTK para extraer las pares de palabras mas mencionadas
def bigrams(df):
#colocar una columna y extraer cada frase en tipo de data llamada series que pertenece
#en el paquete pandas llamada una serie (tipo de data)
col_values = df.loc[:,'reviews_review'].values
#convertir de una series a una lista
col_str = list(col_values)
#convertir cada commentario en un tipo de data en una cadena de caracteres
col_str = [s if type(s) == str else 'nan' for s in col_str]
#juntar todos los caracteres y convertirlas en miniscula
col_str = ' '.join(col_str)
col_str = col_str.lower()
#stopwords es un archivo del NLTK que son palabras que no tienen gran valor eg: los Artículos
stop_words = set(stopwords.words('english'))
#separar los commentarios en palabras y retirar puntuación
tokenizer = RegexpTokenizer(r'\w+')
col_tokens = tokenizer.tokenize(col_str)
#retirar los stopwords
filtered_tokens = [w for w in col_tokens if not w in stop_words]
#crear un diccionario vacio
fdist_bigram_dict ={}
#juntar palabras en dos
tgs = nltk.bigrams(filtered_tokens)
#distribución de frecuencia de las palabras
fdist_bigram = nltk.FreqDist(tgs)
#añadir el diccionario con la tupla de combinación de palabras y la frecuencia de utilización
for k,v in fdist_bigram.items():
fdist_bigram_dict.update({k:v})
bigram_ordered_dict = OrderedDict(sorted(fdist_bigram_dict.items(), key=lambda t: t[1], reverse=True))
#pasar el matriz de las críticas del archivo en la función llamada bigrams
my_bigrams = bigrams(df)
#exportar los resultados al archivo csv
import csv
w = csv.writer(open("output.csv", "w"))
for key, val in my_bigrams.items():
w.writerow([key, val])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment