GenaroRocha's picture
Making everything look fine (using valid files and valid app.py)
3d2732d
raw
history blame
2.59 kB
import gradio as gr
import pandas as pd
from transformers import pipeline
# Inicializa la pipeline de análisis de sentimientos
sentiment_pipeline = pipeline("sentiment-analysis")
# Función que toma un Dataframe y crea un gráfico visual con matplotlib
def plot_sentiment_distribution(df_category):
sentiment_counts = df_category['sentiment'].value_counts()
fig, ax = plt.subplots()
sentiment_counts.plot(kind='bar', ax=ax)
ax.set_title("Distribución de Sentimientos")
ax.set_xlabel("Sentimiento")
ax.set_ylabel("Número de reseñas")
return fig
# Mapeo de categorías a nombres de archivos
category_to_file_path = {
'Fashion': 'AMAZON_FASHION_5.json.gz',
'Appliances': 'Appliances_5.json.gz',
'Gift Cards': 'Gift_Cards_5.json.gz',
'Magazine subscriptions': 'Magazine_Subscriptions_5.json.gz',
'All beauty': 'All_Beauty_5.json.gz'
}
# Función para cargar los datos por categoría
def load_reviews(category):
# Asegúrate de que la categoría proporcionada es válida
if category not in category_to_file_path:
raise ValueError("Categoría no encontrada. Asegúrate de que la categoría sea correcta.")
file_name = category_to_file_path[category]
file_path = f"{file_name}" # Asegúrate de que este sea el path correcto a tus archivos
df = pd.read_json(file_path, lines=True, compression='gzip')
return df
# Función que realiza el análisis de sentimientos para una categoría específica
def sentiment_counts_by_category(category):
df_category = load_reviews(category)
df_category['sentiment'] = df_category['reviewText'].apply(lambda x: sentiment_pipeline(x[:512])[0]['label'])
# Ahora llama a la función de trazado y devuelve el gráfico
fig = plot_sentiment_distribution(df_category)
return fig
def show_first_five(category):
df_category = load_reviews(category)
return df_category.head(5) # Muestra las primeras 5 filas del DataFrame de la categoría
# Crear la interfaz usando gr.Blocks
with gr.Blocks() as demo:
with gr.Row():
category = gr.Dropdown(choices=list(category_to_file_path.keys()), label="Seleccione una categoría")
show_button = gr.Button("Mostrar Datos")
plot_button = gr.Button("Graficar Distribución de Sentimientos")
output_df = gr.Dataframe()
output_plot = gr.Plot()
show_button.click(show_first_five, inputs=category, outputs=output_df)
plot_button.click(sentiment_counts_by_category, inputs=category, outputs=output_plot)
# Lanza la interfaz
if __name__ == "__main__":
demo.launch()