LordCoffee commited on
Commit
57f9a5f
verified
1 Parent(s): 9e35165

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -0
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer
3
+ from sklearn.metrics.pairwise import cosine_similarity
4
+ from sklearn.feature_extraction.text import TfidfVectorizer
5
+ import numpy as np
6
+
7
+ # Modelos para an谩lisis de texto y similitud
8
+ sentiment_analysis = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
9
+ similarity_model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
10
+ similarity_tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
11
+
12
+ # Respuestas esperadas
13
+ expected_responses = {
14
+ 'question1': ['respuesta1a', 'respuesta1b', 'respuesta1c'],
15
+ 'question2': ['respuesta2a', 'respuesta2b', 'respuesta2c'],
16
+ 'question3': ['respuesta3a', 'respuesta3b', 'respuesta3c'],
17
+ 'question4': ['respuesta4a', 'respuesta4b', 'respuesta4c'],
18
+ 'question5': 'an谩lisis de texto para la pregunta 5',
19
+ 'question6': 'an谩lisis de texto para la pregunta 6'
20
+ }
21
+
22
+ # Funci贸n para calcular la similitud de respuestas
23
+ def calculate_similarity(response, expected_responses):
24
+ vectorizer = TfidfVectorizer().fit_transform([response] + expected_responses)
25
+ vectors = vectorizer.toarray()
26
+ cosine_similarities = cosine_similarity(vectors[0:1], vectors[1:])
27
+ return float(max(cosine_similarities[0]))
28
+
29
+ # Funci贸n para evaluar una sola respuesta
30
+ def evaluate_response(response, expected_responses):
31
+ return calculate_similarity(response, expected_responses)
32
+
33
+ # Funci贸n para evaluar an谩lisis de texto
34
+ def analyze_text(response):
35
+ analysis = sentiment_analysis(response)
36
+ return analysis[0]
37
+
38
+ # Funci贸n para evaluar todas las respuestas
39
+ def evaluate_all_responses(responses):
40
+ results = {}
41
+ for i, response in enumerate(responses[:4]):
42
+ question_key = f'question{i+1}'
43
+ results[question_key] = evaluate_response(response, expected_responses[question_key])
44
+
45
+ for i, response in enumerate(responses[4:]):
46
+ question_key = f'question{i+5}'
47
+ results[question_key] = analyze_text(response)
48
+
49
+ return results
50
+
51
+ # Interfaz Gradio
52
+ def evaluate(responses):
53
+ if len(responses) != 6:
54
+ return {'error': 'Se esperan 6 respuestas'}
55
+ results = evaluate_all_responses(responses)
56
+ return results
57
+
58
+ input_texts = [gr.Textbox(label=f"Pregunta {i+1}") for i in range(6)]
59
+ output_text = gr.JSON(label="Resultados")
60
+
61
+ demo = gr.Interface(
62
+ fn=evaluate,
63
+ inputs=input_texts,
64
+ outputs=output_text,
65
+ title="Evaluaci贸n de Respuestas",
66
+ description="Ingrese las respuestas para las 6 preguntas."
67
+ )
68
+
69
+ if __name__ == "__main__":
70
+ demo.launch()