Danielbrdz commited on
Commit
6389500
·
verified ·
1 Parent(s): b5965d3

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +127 -0
  2. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+ import plotly.express as px
4
+
5
+ headers = [
6
+ "Modelo",
7
+ "Promedio",
8
+ "Español Mexicano",
9
+ "Español España",
10
+ "Español Argentino",
11
+ "Español Cubano",
12
+ "Español Colombiano",
13
+ "Español Chileno"
14
+ ]
15
+
16
+ data = [
17
+ ["Gemini 2.5 Flash", 55.56, 53.33, 65.00, 40.00, 46.67, 66.67, 61.67],
18
+ ["Gemini 2.5 Flash Lite", 51.94, 43.33, 61.67, 41.67, 41.67, 70.00, 53.33],
19
+ ["Kimi K2 Instruct 0905", 47.22, 43.33, 53.33, 41.67, 45.00, 50.00, 50.00],
20
+ ["DeepSeek V3.1 Terminus", 46.94, 43.33, 50.00, 38.33, 41.67, 56.67, 51.67],
21
+ ["Llama 4 Maverick", 43.89, 40.00, 43.33, 38.33, 36.67, 58.33, 46.67],
22
+ ["Qwen 3 Next 80b", 40.00, 35.00, 38.33, 36.67, 35.00, 53.33, 41.67],
23
+ ["Qwen 3 235b A22b", 39.72, 36.67, 48.33, 30.00, 35.00, 48.33, 40.00],
24
+ ["GPT OSS 120b", 38.89, 30.00, 35.00, 28.33, 31.67, 55.00, 53.33],
25
+ ["Qwen 3 32b", 36.67, 30.00, 35.00, 35.00, 40.00, 41.67, 38.33],
26
+ ["Llama 3.1 8b", 26.67, 25.00, 26.67, 30.00, 28.33, 23.33, 26.67]
27
+ ]
28
+
29
+ df_results = pd.DataFrame(data, columns=headers)
30
+
31
+ intro_md = """
32
+ # BBS 3: Barcenas Benchmark Spanish
33
+ ### Evaluación de LLMs en Diferentes Variantes del Español
34
+ """
35
+
36
+ info_text = """
37
+ ### 📚 Acerca de BBS 3
38
+ Bienvenido a la tercera edición del **Barcenas Benchmark Spanish (BBS 3)**.
39
+
40
+ #### 🎯 Objetivo
41
+ 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**.
42
+
43
+
44
+ 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.
45
+
46
+ #### 🔬 Metodología
47
+ * **Modelos Evaluados:** Se utilizaron APIs de Cerebras, Nvidia y Google (Gemini) para ejecutar las pruebas.
48
+ * **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.).
49
+ * **Configuración:** Se utilizó una temperatura de `0.3` y un Top-p de `1.0` para garantizar consistencia.
50
+ * **Métrica:** Se calculó el promedio de precisión sobre todas las variantes evaluadas.
51
+
52
+ #### 📊 Interpretación de Resultados Preliminares
53
+ * **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.
54
+ * **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.
55
+
56
+ #### 🚀 Próximos Pasos
57
+ * **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.
58
+ ---
59
+ **Agradecimientos:**
60
+ * A **Ismael Medina Muñoz** (Solutions Architect en Databricks) por la idea de investigar el rendimiento en español en los LLMs.
61
+ * 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.
62
+
63
+ **Hecho con ❤️ por Danielbrdz**
64
+ """
65
+
66
+ def create_plot(df):
67
+ fig = px.bar(
68
+ df,
69
+ x="Promedio",
70
+ y="Modelo",
71
+ orientation='h',
72
+ title="Rendimiento Promedio por Modelo",
73
+ text="Promedio",
74
+ color="Promedio",
75
+ color_continuous_scale="Viridis"
76
+ )
77
+ fig.update_layout(yaxis={'categoryorder':'total ascending'})
78
+ fig.update_traces(texttemplate='%{text:.2f}', textposition='outside')
79
+ return fig
80
+
81
+ custom_css = """
82
+ h1 {
83
+ text-align: center;
84
+ display: block;
85
+ }
86
+ h3 {
87
+ text-align: center;
88
+ display: block;
89
+ }
90
+ .gradio-container {
91
+ font-family: 'Helvetica Neue', Arial, sans-serif;
92
+ }
93
+ """
94
+
95
+ theme = gr.themes.Soft(
96
+ primary_hue="orange",
97
+ secondary_hue="slate",
98
+ )
99
+
100
+ with gr.Blocks(theme=theme, css=custom_css) as demo:
101
+
102
+ gr.Markdown(intro_md)
103
+
104
+ with gr.Tabs():
105
+ with gr.Tab("🏆 Resultados (Leaderboard)"):
106
+
107
+ with gr.Row():
108
+ plot = gr.Plot(value=create_plot(df_results), label="Comparativa Visual")
109
+
110
+ with gr.Row():
111
+ gr.Markdown("### 📋 Tabla Detallada")
112
+
113
+ with gr.Row():
114
+ gr.DataFrame(
115
+ value=df_results,
116
+ headers=headers,
117
+ datatype=["str"] + ["number"] * 7,
118
+ interactive=False,
119
+ wrap=True,
120
+ column_widths=["200px"]
121
+ )
122
+
123
+ with gr.Tab("ℹ️ Metodología e Info"):
124
+ with gr.Column(variant="panel"):
125
+ gr.Markdown(info_text)
126
+
127
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio
2
+ pandas
3
+ plotly