Spaces:
Running
Running
| import gradio as gr | |
| import pandas as pd | |
| import plotly.express as px | |
| headers = [ | |
| "Modelo", | |
| "Promedio", | |
| "Español Mexicano", | |
| "Español España", | |
| "Español Argentino", | |
| "Español Cubano", | |
| "Español Colombiano", | |
| "Español Chileno" | |
| ] | |
| data = [ | |
| ["Gemini 2.5 Flash", 55.56, 53.33, 65.00, 40.00, 46.67, 66.67, 61.67], | |
| ["Gemini 2.5 Flash Lite", 51.94, 43.33, 61.67, 41.67, 41.67, 70.00, 53.33], | |
| ["Kimi K2 Instruct 0905", 47.22, 43.33, 53.33, 41.67, 45.00, 50.00, 50.00], | |
| ["DeepSeek V3.1 Terminus", 46.94, 43.33, 50.00, 38.33, 41.67, 56.67, 51.67], | |
| ["Llama 4 Maverick", 43.89, 40.00, 43.33, 38.33, 36.67, 58.33, 46.67], | |
| ["Qwen 3 Next 80b", 40.00, 35.00, 38.33, 36.67, 35.00, 53.33, 41.67], | |
| ["Qwen 3 235b A22b", 39.72, 36.67, 48.33, 30.00, 35.00, 48.33, 40.00], | |
| ["GPT OSS 120b", 38.89, 30.00, 35.00, 28.33, 31.67, 55.00, 53.33], | |
| ["Qwen 3 32b", 36.67, 30.00, 35.00, 35.00, 40.00, 41.67, 38.33], | |
| ["Llama 3.1 8b", 26.67, 25.00, 26.67, 30.00, 28.33, 23.33, 26.67] | |
| ] | |
| df_results = pd.DataFrame(data, columns=headers) | |
| intro_md = """ | |
| # BBS 3: Barcenas Benchmark Spanish | |
| ### Evaluación de LLMs en Diferentes Variantes del Español | |
| """ | |
| info_text = """ | |
| ### 📚 Acerca de BBS 3 | |
| Bienvenido a la tercera edición del **Barcenas Benchmark Spanish (BBS 3)**. | |
| #### 🎯 Objetivo | |
| El propósito de este benchmark es evaluar y comparar el rendimiento de Modelos de Lenguaje de Gran Tamaño (LLMs) específicamente en su capacidad para entender y generar diversas **variantes dialectales del idioma español**. | |
| En esta versión, se ha incorporado además la evaluación de conocimiento cultural, necesitará identificar que tweet corresponde a cierta variante del español. | |
| #### 🔬 Metodología | |
| * **Modelos Evaluados:** Se utilizaron APIs de Cerebras, Nvidia y Google (Gemini) para ejecutar las pruebas. | |
| * **Protocolo de Prueba:** Se presentó a cada LLM una serie de 60 preguntas por cada variante del español. Las preguntas son de opción múltiple (tipo test: A, B, C, D) y consisten en identificar qué tweet o frase corresponde mejor a un dialecto específico (mexicano, español peninsular, argentino, etc.). | |
| * **Configuración:** Se utilizó una temperatura de `0.3` y un Top-p de `1.0` para garantizar consistencia. | |
| * **Métrica:** Se calculó el promedio de precisión sobre todas las variantes evaluadas. | |
| #### 📊 Interpretación de Resultados Preliminares | |
| * **Dominio de Gemini:** Los modelos de la familia Gemini muestran un rendimiento superior consistente en la detección de matices dialectales del español, superando notablemente a sus competidores en esta fase. | |
| * **Desempeño de Qwen y Modelos Abiertos:** A pesar de su buen rendimiento general en otros benchmarks, los modelos Qwen y el modelo open source GPT OSS 120b muestran dificultades con las sutilezas regionales del español. En el caso del modelo OSS, esto podría deberse a una alta dependencia de datos sintéticos en su entrenamiento, que a menudo carecen de riqueza cultural. | |
| #### 🚀 Próximos Pasos | |
| * **Expansión:** Inclusión de modelos propietarios de OpenAI (GPT-5), Anthropic (Claude 4.5) y xAI (Grok 4) conforme los recursos de API lo permitan. | |
| --- | |
| **Agradecimientos:** | |
| * A **Ismael Medina Muñoz** (Solutions Architect en Databricks) por la idea de investigar el rendimiento en español en los LLMs. | |
| * A los autores del paper *"Es igual pero no es lo mismo: ¿Distinguen los LLMs las variedades del español?"*, cuyo trabajo sirvió de inspiración para segmentos de BBS 3. | |
| **Hecho con ❤️ por Danielbrdz** | |
| """ | |
| def create_plot(df): | |
| fig = px.bar( | |
| df, | |
| x="Promedio", | |
| y="Modelo", | |
| orientation='h', | |
| title="Rendimiento Promedio por Modelo", | |
| text="Promedio", | |
| color="Promedio", | |
| color_continuous_scale="Viridis" | |
| ) | |
| fig.update_layout(yaxis={'categoryorder':'total ascending'}) | |
| fig.update_traces(texttemplate='%{text:.2f}', textposition='outside') | |
| return fig | |
| custom_css = """ | |
| h1 { | |
| text-align: center; | |
| display: block; | |
| } | |
| h3 { | |
| text-align: center; | |
| display: block; | |
| } | |
| .gradio-container { | |
| font-family: 'Helvetica Neue', Arial, sans-serif; | |
| } | |
| """ | |
| theme = gr.themes.Soft( | |
| primary_hue="orange", | |
| secondary_hue="slate", | |
| ) | |
| with gr.Blocks(theme=theme, css=custom_css) as demo: | |
| gr.Markdown(intro_md) | |
| with gr.Tabs(): | |
| with gr.Tab("🏆 Resultados (Leaderboard)"): | |
| with gr.Row(): | |
| plot = gr.Plot(value=create_plot(df_results), label="Comparativa Visual") | |
| with gr.Row(): | |
| gr.Markdown("### 📋 Tabla Detallada") | |
| with gr.Row(): | |
| gr.DataFrame( | |
| value=df_results, | |
| headers=headers, | |
| datatype=["str"] + ["number"] * 7, | |
| interactive=False, | |
| wrap=True, | |
| column_widths=["200px"] | |
| ) | |
| with gr.Tab("ℹ️ Metodología e Info"): | |
| with gr.Column(variant="panel"): | |
| gr.Markdown(info_text) | |
| demo.launch() |