ReiderMx commited on
Commit
dc774cb
1 Parent(s): 965159b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+ from transformers import pipeline
4
+
5
+ # Configurar el clasificador de sentimientos multilingüe
6
+ classifier = pipeline(task="zero-shot-classification", model="facebook/bart-large-mnli")
7
+
8
+ # Función para analizar los sentimientos de una lista de textos
9
+ def analyze_sentiments(texts):
10
+ if not texts:
11
+ return 0.0, 0.0, 0.0 # Manejar el caso donde no hay textos para analizar
12
+
13
+ positive, negative, neutral = 0, 0, 0
14
+ for text in texts:
15
+ results = classifier(text, ["positive", "negative", "neutral"], multi_label=True)
16
+ mx = max(results['scores'])
17
+ ind = results['scores'].index(mx)
18
+ result = results['labels'][ind]
19
+ if result == "positive":
20
+ positive += 1
21
+ elif result == "negative":
22
+ negative += 1
23
+ else:
24
+ neutral += 1
25
+ total = len(texts)
26
+ positive_percent = (positive / total) * 100
27
+ negative_percent = (negative / total) * 100
28
+ neutral_percent = (neutral / total) * 100
29
+ return positive_percent, negative_percent, neutral_percent
30
+
31
+ # Función para cargar el archivo CSV y analizar los primeros 100 comentarios
32
+ def analyze_sentiment_from_csv():
33
+ try:
34
+ # Intentar leer el archivo CSV con diferentes opciones para manejar errores de formato
35
+ df = pd.read_csv('SHAREit_BD.csv', delimiter=',')
36
+ print(df.head()) # Imprimir las primeras filas del DataFrame para verificar su contenido
37
+ if 'content' not in df.columns:
38
+ raise ValueError("El archivo CSV no contiene una columna 'content'")
39
+ texts = df['content'].head(100).tolist() # Tomar solo los primeros 100 comentarios
40
+ return analyze_sentiments(texts)
41
+ except pd.errors.ParserError as e:
42
+ print(f"Error al analizar el archivo CSV: {e}")
43
+ return "Error al analizar el archivo CSV", "", ""
44
+ except Exception as e:
45
+ print(f"Error inesperado: {e}")
46
+ return str(e), "", ""
47
+
48
+ # Configurar la interfaz de Gradio
49
+ demo = gr.Interface(
50
+ fn=analyze_sentiment_from_csv,
51
+ inputs=[], # No hay necesidad de entradas porque los datos están incrustados
52
+ outputs=[gr.Textbox(label="Positive Percentage"), gr.Textbox(label="Negative Percentage"), gr.Textbox(label="Neutral Percentage")], # Mostrar los porcentajes como salidas
53
+ title="Analizador de Sentimientos Multilingüe",
54
+ description="Porcentaje de comentarios positivos, negativos y neutrales"
55
+ )
56
+
57
+ demo.launch()