Spaces:
Runtime error
Runtime error
from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer | |
from sklearn.metrics.pairwise import cosine_similarity | |
from sklearn.feature_extraction.text import TfidfVectorizer | |
import numpy as np | |
import gradio as gr | |
# Modelos para an谩lisis de texto y similitud | |
sentiment_analysis = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english") | |
similarity_model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") | |
similarity_tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") | |
# Respuestas esperadas para las preguntas | |
expected_responses = { | |
'question1': ['respuesta1a', 'respuesta1b', 'respuesta1c'], | |
'question2': ['respuesta2a', 'respuesta2b', 'respuesta2c'], | |
'question3': ['respuesta3a', 'respuesta3b', 'respuesta3c'], | |
'question4': ['respuesta4a', 'respuesta4b', 'respuesta4c'], | |
} | |
# Funci贸n para calcular la similitud de respuestas usando TF-IDF y cosine similarity | |
def calculate_similarity(response, expected_responses): | |
vectorizer = TfidfVectorizer().fit_transform([response] + expected_responses) | |
vectors = vectorizer.toarray() | |
cosine_similarities = cosine_similarity(vectors[0:1], vectors[1:]) | |
return float(max(cosine_similarities[0])) | |
# Funci贸n para evaluar una sola respuesta | |
def evaluate_response(response, expected_responses): | |
return calculate_similarity(response, expected_responses) | |
# Funci贸n para evaluar an谩lisis de texto | |
def analyze_text(response): | |
analysis = sentiment_analysis(response) | |
return analysis[0] | |
# Funci贸n para evaluar todas las respuestas | |
def evaluate_all_responses(responses): | |
results = {} | |
for i, response in enumerate(responses[:4]): | |
question_key = f'question{i+1}' | |
results[question_key] = evaluate_response(response, expected_responses[question_key]) | |
for i, response in enumerate(responses[4:]): | |
question_key = f'question{i+5}' | |
results[question_key] = analyze_text(response) | |
return results | |
# Interfaz Gradio | |
def evaluate(*responses): | |
if len(responses) != 6: | |
return {'error': 'Se esperan 6 respuestas'} | |
results = evaluate_all_responses(responses) | |
return results | |
# Definir los cuadros de texto para las respuestas de las preguntas | |
input_texts = [gr.Textbox(label=f"Pregunta {i+1}") for i in range(6)] | |
# Definir la salida como un JSON para mostrar los resultados | |
output_text = gr.JSON(label="Resultados") | |
# Crear la interfaz Gradio | |
demo = gr.Interface( | |
fn=evaluate, | |
inputs=input_texts, | |
outputs=output_text, | |
title="Evaluaci贸n de Respuestas y An谩lisis de Texto", | |
description="Ingrese las respuestas para las 6 preguntas y obtenga evaluaciones de similitud y an谩lisis de sentimientos.", | |
) | |
# Lanzar la aplicaci贸n | |
if __name__ == "__main__": | |
demo.launch() | |