Last active
June 24, 2018 13:45
-
-
Save monipip3/db734cc3e216357b89c7fae7603d269e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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