Spaces:
Running
Fix UI issues and improve model presentation accuracy
Browse filesThe interface had critical usability problems that prevented effective use
of the demo. The dark mode was rendering checkboxes invisible and making
the interface hard to read. Additionally, the performance qualifiers
(Snelste/Beste kwaliteit/Gebalanceerd) were misleading users since all
three models have nearly identical SARI scores (66.44-67.80).
This commit resolves these issues by:
- Switching to Default light theme to ensure consistent visibility
- Adding full 'Leesplank Noot' branding to model names for clarity
- Removing misleading performance qualifiers that suggest false differences
- Simplifying to Dutch-only interface as this is a Dutch-specific tool
- Improving layout with clickable example cards in a two-column design
These changes make the demo more honest about model capabilities and more
usable for its target audience of Dutch government communication teams.
π€ Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
|
@@ -8,9 +8,9 @@ import random
|
|
| 8 |
|
| 9 |
# Model configurations - ordered as requested
|
| 10 |
MODEL_ORDER = [
|
| 11 |
-
("EuroLLM-1.7b", "UWV/leesplank-noot-eurollm-1.7b"),
|
| 12 |
-
("Granite-3.3-2b", "UWV/leesplank-noot-granite-3.3-2b"),
|
| 13 |
-
("Llama-3.2-3b", "UWV/leesplank-noot-llama-3.2-3b")
|
| 14 |
]
|
| 15 |
|
| 16 |
# System prompt for Llama and Granite models
|
|
@@ -115,7 +115,7 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
|
|
| 115 |
"""Simplify text using multiple models sequentially with progressive updates"""
|
| 116 |
|
| 117 |
if not text.strip():
|
| 118 |
-
empty_result = "Voer tekst in om te vereenvoudigen
|
| 119 |
yield (empty_result, "") + ("", "") * 2
|
| 120 |
return
|
| 121 |
|
|
@@ -123,7 +123,7 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
|
|
| 123 |
models_to_run = [(name, path) for name, path in MODEL_ORDER if name in selected_models]
|
| 124 |
|
| 125 |
if not models_to_run:
|
| 126 |
-
empty_result = "Selecteer minstens één model
|
| 127 |
yield (empty_result, "") + ("", "") * 2
|
| 128 |
return
|
| 129 |
|
|
@@ -132,12 +132,12 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
|
|
| 132 |
for name, _ in MODEL_ORDER:
|
| 133 |
if name in selected_models:
|
| 134 |
results[name] = {
|
| 135 |
-
"text": "β³ Wachten op verwerking
|
| 136 |
"metrics": ""
|
| 137 |
}
|
| 138 |
else:
|
| 139 |
results[name] = {
|
| 140 |
-
"text": "Model niet geselecteerd
|
| 141 |
"metrics": ""
|
| 142 |
}
|
| 143 |
|
|
@@ -155,7 +155,7 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
|
|
| 155 |
# Run models sequentially and update progressively
|
| 156 |
for name, path in models_to_execute:
|
| 157 |
# Update status to processing
|
| 158 |
-
results[name]["text"] = "π Verwerken
|
| 159 |
|
| 160 |
# Yield current state
|
| 161 |
output_tuple = []
|
|
@@ -197,118 +197,119 @@ def simplify_text_sequential(text: str, selected_models: List[str]):
|
|
| 197 |
def create_interface():
|
| 198 |
"""Create Gradio interface with enhanced UX"""
|
| 199 |
|
| 200 |
-
#
|
| 201 |
-
uwv_theme = gr.themes.
|
| 202 |
-
primary_hue=gr.themes.
|
| 203 |
-
c50="#E8F4F8",
|
| 204 |
-
c100="#C7E9F1",
|
| 205 |
-
c200="#99D4E4",
|
| 206 |
-
c300="#66B1CF",
|
| 207 |
-
c400="#3397BF",
|
| 208 |
-
c500="#01689B",
|
| 209 |
-
c600="#01547D",
|
| 210 |
-
c700="#01405F",
|
| 211 |
-
c800="#002B41",
|
| 212 |
-
c900="#001623",
|
| 213 |
-
c950="#000B12"
|
| 214 |
-
),
|
| 215 |
-
secondary_hue=gr.themes.Color(
|
| 216 |
-
c50="#FFF4E6",
|
| 217 |
-
c100="#FFE9CC",
|
| 218 |
-
c200="#FCE1BF",
|
| 219 |
-
c300="#FFBC66",
|
| 220 |
-
c400="#FFA633",
|
| 221 |
-
c500="#E17000",
|
| 222 |
-
c600="#B45A00",
|
| 223 |
-
c700="#874400",
|
| 224 |
-
c800="#5A2D00",
|
| 225 |
-
c900="#2D1700",
|
| 226 |
-
c950="#170B00"
|
| 227 |
-
),
|
| 228 |
font=[gr.themes.GoogleFont("Open Sans"), "Arial", "sans-serif"]
|
| 229 |
).set(
|
| 230 |
-
body_background_fill="#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 231 |
button_primary_background_fill="#01689B",
|
|
|
|
| 232 |
button_primary_background_fill_hover="#01547D",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 233 |
block_title_text_color="#01689B",
|
|
|
|
| 234 |
block_label_text_color="#333333",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 235 |
panel_background_fill="#FFFFFF",
|
| 236 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
)
|
| 238 |
|
| 239 |
with gr.Blocks(
|
| 240 |
title="Leesplank Noot - UWV Innovatie Hub",
|
| 241 |
theme=uwv_theme,
|
| 242 |
css="""
|
| 243 |
-
|
| 244 |
-
font-family: 'Open Sans', Arial, sans-serif !important;
|
| 245 |
-
background: linear-gradient(180deg, #E8F4F8 0%, #FFFFFF 100%);
|
| 246 |
-
}
|
| 247 |
h1 {
|
| 248 |
-
color: #01689B
|
| 249 |
border-top: 4px solid #01689B;
|
| 250 |
padding-top: 1.5rem;
|
| 251 |
-
margin-top: 0;
|
| 252 |
-
}
|
| 253 |
-
h2 {
|
| 254 |
-
color: #01547D !important;
|
| 255 |
}
|
|
|
|
| 256 |
.author-block {
|
| 257 |
background: linear-gradient(135deg, #FCE1BF 0%, #FFE9CC 100%);
|
| 258 |
padding: 1.5rem;
|
| 259 |
border-left: 4px solid #01689B;
|
| 260 |
margin: 1.5rem 0;
|
| 261 |
border-radius: 0 8px 8px 0;
|
| 262 |
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
| 263 |
}
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
|
|
|
|
|
|
|
|
|
| 267 |
padding: 1.5rem;
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
.model-title {
|
| 273 |
-
color: #01689B;
|
| 274 |
-
font-weight: bold;
|
| 275 |
-
font-size: 1.1em;
|
| 276 |
-
margin-bottom: 1rem;
|
| 277 |
-
padding-bottom: 0.5rem;
|
| 278 |
-
border-bottom: 1px solid #E8F4F8;
|
| 279 |
-
}
|
| 280 |
-
.checkbox-group {
|
| 281 |
-
background: #FCE1BF;
|
| 282 |
-
padding: 1rem;
|
| 283 |
border-radius: 8px;
|
| 284 |
-
margin: 1rem 0;
|
| 285 |
}
|
| 286 |
-
.
|
| 287 |
-
border-
|
| 288 |
-
|
| 289 |
-
margin-top: 3rem;
|
| 290 |
-
padding-top: 2rem;
|
| 291 |
-
}
|
| 292 |
-
.examples-section {
|
| 293 |
-
background: #FFF4E6;
|
| 294 |
-
padding: 1rem;
|
| 295 |
-
border-radius: 8px;
|
| 296 |
-
margin: 1rem 0;
|
| 297 |
}
|
| 298 |
"""
|
| 299 |
) as demo:
|
| 300 |
gr.Markdown("""
|
| 301 |
# π Leesplank Noot
|
| 302 |
-
## Nederlandse Tekstvereenvoudiging
|
| 303 |
-
|
| 304 |
-
<div class="author-block">
|
| 305 |
-
<strong>Ontwikkeld door / Developed by:</strong> UWV Innovatie Hub<br>
|
| 306 |
-
<strong>Contact:</strong> <a href="mailto:innovatie@uwv.nl">innovatie@uwv.nl</a><br>
|
| 307 |
-
<strong>Mede mogelijk gemaakt door / Partly funded by:</strong> IDO 2024 (Innovatie en Digitalisering Ontwikkelingen)
|
| 308 |
-
</div>
|
| 309 |
-
|
| 310 |
-
Vergelijk tekstvereenvoudiging van drie AI-modellen tegelijk.
|
| 311 |
-
*Compare text simplification from three AI models simultaneously.*
|
| 312 |
""")
|
| 313 |
|
| 314 |
with gr.Row():
|
|
@@ -317,28 +318,73 @@ def create_interface():
|
|
| 317 |
model_checkboxes = gr.CheckboxGroup(
|
| 318 |
choices=[name for name, _ in MODEL_ORDER],
|
| 319 |
value=[name for name, _ in MODEL_ORDER], # All selected by default
|
| 320 |
-
label="Selecteer modellen
|
| 321 |
-
info="Kies welke modellen
|
| 322 |
)
|
| 323 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 324 |
with gr.Row():
|
| 325 |
with gr.Column(scale=1):
|
| 326 |
input_text = gr.Textbox(
|
| 327 |
-
label="
|
| 328 |
-
placeholder="
|
| 329 |
-
lines=
|
|
|
|
| 330 |
)
|
| 331 |
|
| 332 |
simplify_btn = gr.Button(
|
| 333 |
-
"π Vereenvoudig
|
| 334 |
variant="primary",
|
| 335 |
-
|
| 336 |
)
|
| 337 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 338 |
# Three-column layout for results
|
| 339 |
with gr.Row(equal_height=True):
|
| 340 |
with gr.Column(scale=1, visible=True) as col_eurollm:
|
| 341 |
-
gr.Markdown('<div class="model-title">π EuroLLM-1.7b
|
| 342 |
output_eurollm = gr.Textbox(
|
| 343 |
label="",
|
| 344 |
lines=10,
|
|
@@ -347,7 +393,7 @@ def create_interface():
|
|
| 347 |
metrics_eurollm = gr.Markdown("")
|
| 348 |
|
| 349 |
with gr.Column(scale=1, visible=True) as col_granite:
|
| 350 |
-
gr.Markdown('<div class="model-title">π Granite-3.3-2b
|
| 351 |
output_granite = gr.Textbox(
|
| 352 |
label="",
|
| 353 |
lines=10,
|
|
@@ -356,7 +402,7 @@ def create_interface():
|
|
| 356 |
metrics_granite = gr.Markdown("")
|
| 357 |
|
| 358 |
with gr.Column(scale=1, visible=True) as col_llama:
|
| 359 |
-
gr.Markdown('<div class="model-title">π¦ Llama-3.2-3b
|
| 360 |
output_llama = gr.Textbox(
|
| 361 |
label="",
|
| 362 |
lines=10,
|
|
@@ -364,33 +410,26 @@ def create_interface():
|
|
| 364 |
)
|
| 365 |
metrics_llama = gr.Markdown("")
|
| 366 |
|
| 367 |
-
with gr.
|
| 368 |
-
gr.Examples(
|
| 369 |
-
examples=EXAMPLES,
|
| 370 |
-
inputs=input_text,
|
| 371 |
-
label="Voorbeelden / Examples"
|
| 372 |
-
)
|
| 373 |
-
|
| 374 |
-
with gr.Accordion("βΉοΈ Over deze demo / About this demo", open=False):
|
| 375 |
gr.Markdown("""
|
| 376 |
-
##
|
| 377 |
|
| 378 |
Deze demo toont drie Nederlandse tekstvereenvoudigingsmodellen ontwikkeld door **UWV Innovatie Hub** als onderdeel van het Leesplank Noot project.
|
| 379 |
|
| 380 |
-
### Modellen
|
| 381 |
-
- **EuroLLM-1.7b**:
|
| 382 |
-
- **Granite-3.3-2b**:
|
| 383 |
-
- **Llama-3.2-3b**:
|
| 384 |
|
| 385 |
Alle modellen zijn getraind op 1.89M Nederlandse Wikipedia-vereenvoudigingen en produceren tekst op B1-niveau voor betere toegankelijkheid van overheidscommunicatie.
|
| 386 |
|
| 387 |
-
### Ontwikkeling
|
| 388 |
- **Ontwikkeld door:** UWV Innovatie Hub
|
| 389 |
- **Projectleiding:** innovatie@uwv.nl
|
| 390 |
- **Financiering:** Dit project is mede mogelijk gemaakt door **IDO 2024** (Innovatie en Digitalisering Ontwikkelingen)
|
| 391 |
- **Licentie:** Apache 2.0
|
| 392 |
|
| 393 |
-
### Doel
|
| 394 |
Het verbeteren van de toegankelijkheid van overheidsteksten voor burgers met leesmoeilijkheden, in lijn met de Wet digitale overheid en EU toegankelijkheidsrichtlijnen.
|
| 395 |
""")
|
| 396 |
|
|
@@ -415,6 +454,12 @@ def create_interface():
|
|
| 415 |
]
|
| 416 |
)
|
| 417 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 418 |
# Footer
|
| 419 |
gr.Markdown("""
|
| 420 |
<div class="footer-section">
|
|
|
|
| 8 |
|
| 9 |
# Model configurations - ordered as requested
|
| 10 |
MODEL_ORDER = [
|
| 11 |
+
("Leesplank Noot EuroLLM-1.7b", "UWV/leesplank-noot-eurollm-1.7b"),
|
| 12 |
+
("Leesplank Noot Granite-3.3-2b", "UWV/leesplank-noot-granite-3.3-2b"),
|
| 13 |
+
("Leesplank Noot Llama-3.2-3b", "UWV/leesplank-noot-llama-3.2-3b")
|
| 14 |
]
|
| 15 |
|
| 16 |
# System prompt for Llama and Granite models
|
|
|
|
| 115 |
"""Simplify text using multiple models sequentially with progressive updates"""
|
| 116 |
|
| 117 |
if not text.strip():
|
| 118 |
+
empty_result = "Voer tekst in om te vereenvoudigen"
|
| 119 |
yield (empty_result, "") + ("", "") * 2
|
| 120 |
return
|
| 121 |
|
|
|
|
| 123 |
models_to_run = [(name, path) for name, path in MODEL_ORDER if name in selected_models]
|
| 124 |
|
| 125 |
if not models_to_run:
|
| 126 |
+
empty_result = "Selecteer minstens één model"
|
| 127 |
yield (empty_result, "") + ("", "") * 2
|
| 128 |
return
|
| 129 |
|
|
|
|
| 132 |
for name, _ in MODEL_ORDER:
|
| 133 |
if name in selected_models:
|
| 134 |
results[name] = {
|
| 135 |
+
"text": "β³ Wachten op verwerking...",
|
| 136 |
"metrics": ""
|
| 137 |
}
|
| 138 |
else:
|
| 139 |
results[name] = {
|
| 140 |
+
"text": "Model niet geselecteerd",
|
| 141 |
"metrics": ""
|
| 142 |
}
|
| 143 |
|
|
|
|
| 155 |
# Run models sequentially and update progressively
|
| 156 |
for name, path in models_to_execute:
|
| 157 |
# Update status to processing
|
| 158 |
+
results[name]["text"] = "π Verwerken..."
|
| 159 |
|
| 160 |
# Yield current state
|
| 161 |
output_tuple = []
|
|
|
|
| 197 |
def create_interface():
|
| 198 |
"""Create Gradio interface with enhanced UX"""
|
| 199 |
|
| 200 |
+
# Use Default theme which is light by default
|
| 201 |
+
uwv_theme = gr.themes.Default(
|
| 202 |
+
primary_hue=gr.themes.colors.blue,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
font=[gr.themes.GoogleFont("Open Sans"), "Arial", "sans-serif"]
|
| 204 |
).set(
|
| 205 |
+
body_background_fill="#FFFFFF",
|
| 206 |
+
body_background_fill_dark="#FFFFFF",
|
| 207 |
+
background_fill_primary="#F7F9FB",
|
| 208 |
+
background_fill_primary_dark="#F7F9FB",
|
| 209 |
+
background_fill_secondary="#FFFFFF",
|
| 210 |
+
background_fill_secondary_dark="#FFFFFF",
|
| 211 |
button_primary_background_fill="#01689B",
|
| 212 |
+
button_primary_background_fill_dark="#01689B",
|
| 213 |
button_primary_background_fill_hover="#01547D",
|
| 214 |
+
button_primary_background_fill_hover_dark="#01547D",
|
| 215 |
+
button_primary_text_color="#FFFFFF",
|
| 216 |
+
button_primary_text_color_dark="#FFFFFF",
|
| 217 |
+
block_background_fill="#FFFFFF",
|
| 218 |
+
block_background_fill_dark="#FFFFFF",
|
| 219 |
block_title_text_color="#01689B",
|
| 220 |
+
block_title_text_color_dark="#01689B",
|
| 221 |
block_label_text_color="#333333",
|
| 222 |
+
block_label_text_color_dark="#333333",
|
| 223 |
+
body_text_color="#333333",
|
| 224 |
+
body_text_color_dark="#333333",
|
| 225 |
+
body_text_color_subdued="#666666",
|
| 226 |
+
body_text_color_subdued_dark="#666666",
|
| 227 |
panel_background_fill="#FFFFFF",
|
| 228 |
+
panel_background_fill_dark="#FFFFFF",
|
| 229 |
+
panel_border_color="#E0E0E0",
|
| 230 |
+
panel_border_color_dark="#E0E0E0",
|
| 231 |
+
input_background_fill="#FFFFFF",
|
| 232 |
+
input_background_fill_dark="#FFFFFF",
|
| 233 |
+
input_background_fill_focus="#FFFFFF",
|
| 234 |
+
input_background_fill_focus_dark="#FFFFFF",
|
| 235 |
+
input_background_fill_hover="#FFFFFF",
|
| 236 |
+
input_background_fill_hover_dark="#FFFFFF",
|
| 237 |
+
input_border_color="#E0E0E0",
|
| 238 |
+
input_border_color_dark="#E0E0E0",
|
| 239 |
+
input_border_color_focus="#01689B",
|
| 240 |
+
input_border_color_focus_dark="#01689B",
|
| 241 |
+
input_border_color_hover="#01689B",
|
| 242 |
+
input_border_color_hover_dark="#01689B",
|
| 243 |
+
input_placeholder_color="#999999",
|
| 244 |
+
input_placeholder_color_dark="#999999",
|
| 245 |
+
checkbox_background_color="#FFFFFF",
|
| 246 |
+
checkbox_background_color_dark="#FFFFFF",
|
| 247 |
+
checkbox_background_color_focus="#FFFFFF",
|
| 248 |
+
checkbox_background_color_focus_dark="#FFFFFF",
|
| 249 |
+
checkbox_background_color_hover="#FFFFFF",
|
| 250 |
+
checkbox_background_color_hover_dark="#FFFFFF",
|
| 251 |
+
checkbox_background_color_selected="#01689B",
|
| 252 |
+
checkbox_background_color_selected_dark="#01689B",
|
| 253 |
+
checkbox_border_color="#01689B",
|
| 254 |
+
checkbox_border_color_dark="#01689B",
|
| 255 |
+
checkbox_border_color_focus="#01689B",
|
| 256 |
+
checkbox_border_color_focus_dark="#01689B",
|
| 257 |
+
checkbox_border_color_hover="#01547D",
|
| 258 |
+
checkbox_border_color_hover_dark="#01547D",
|
| 259 |
+
checkbox_border_color_selected="#01689B",
|
| 260 |
+
checkbox_border_color_selected_dark="#01689B",
|
| 261 |
+
checkbox_label_background_fill="#FFFFFF",
|
| 262 |
+
checkbox_label_background_fill_dark="#FFFFFF",
|
| 263 |
+
checkbox_label_background_fill_hover="#F7F9FB",
|
| 264 |
+
checkbox_label_background_fill_hover_dark="#F7F9FB",
|
| 265 |
+
checkbox_label_background_fill_selected="#E8F4F8",
|
| 266 |
+
checkbox_label_background_fill_selected_dark="#E8F4F8",
|
| 267 |
+
checkbox_label_text_color="#333333",
|
| 268 |
+
checkbox_label_text_color_dark="#333333",
|
| 269 |
+
checkbox_label_text_color_selected="#01689B",
|
| 270 |
+
checkbox_label_text_color_selected_dark="#01689B"
|
| 271 |
)
|
| 272 |
|
| 273 |
with gr.Blocks(
|
| 274 |
title="Leesplank Noot - UWV Innovatie Hub",
|
| 275 |
theme=uwv_theme,
|
| 276 |
css="""
|
| 277 |
+
/* Minimal UWV styling - let Gradio handle most things */
|
|
|
|
|
|
|
|
|
|
| 278 |
h1 {
|
| 279 |
+
color: #01689B;
|
| 280 |
border-top: 4px solid #01689B;
|
| 281 |
padding-top: 1.5rem;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 282 |
}
|
| 283 |
+
|
| 284 |
.author-block {
|
| 285 |
background: linear-gradient(135deg, #FCE1BF 0%, #FFE9CC 100%);
|
| 286 |
padding: 1.5rem;
|
| 287 |
border-left: 4px solid #01689B;
|
| 288 |
margin: 1.5rem 0;
|
| 289 |
border-radius: 0 8px 8px 0;
|
|
|
|
| 290 |
}
|
| 291 |
+
|
| 292 |
+
/* Simple styling for example text cards */
|
| 293 |
+
.example-text-card {
|
| 294 |
+
background: linear-gradient(135deg, #FCE1BF 0%, #FFE9CC 100%);
|
| 295 |
+
border: 2px solid #E8F4F8;
|
| 296 |
+
color: #333;
|
| 297 |
padding: 1.5rem;
|
| 298 |
+
min-height: 140px;
|
| 299 |
+
line-height: 1.6;
|
| 300 |
+
white-space: pre-wrap;
|
| 301 |
+
cursor: pointer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 302 |
border-radius: 8px;
|
|
|
|
| 303 |
}
|
| 304 |
+
.example-text-card:hover {
|
| 305 |
+
border-color: #01689B;
|
| 306 |
+
transform: translateY(-2px);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 307 |
}
|
| 308 |
"""
|
| 309 |
) as demo:
|
| 310 |
gr.Markdown("""
|
| 311 |
# π Leesplank Noot
|
| 312 |
+
## Nederlandse Tekstvereenvoudiging
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 313 |
""")
|
| 314 |
|
| 315 |
with gr.Row():
|
|
|
|
| 318 |
model_checkboxes = gr.CheckboxGroup(
|
| 319 |
choices=[name for name, _ in MODEL_ORDER],
|
| 320 |
value=[name for name, _ in MODEL_ORDER], # All selected by default
|
| 321 |
+
label="Selecteer modellen",
|
| 322 |
+
info="Kies welke modellen je wilt vergelijken"
|
| 323 |
)
|
| 324 |
|
| 325 |
+
with gr.Column(scale=1):
|
| 326 |
+
gr.HTML("""
|
| 327 |
+
<div class="author-block">
|
| 328 |
+
<strong>Ontwikkeld door:</strong> UWV Innovatie Hub<br>
|
| 329 |
+
<strong>Contact:</strong> <a href="mailto:innovatie@uwv.nl">innovatie@uwv.nl</a><br>
|
| 330 |
+
<strong>Mede mogelijk gemaakt door:</strong> IDO 2024 (Innovatie en Digitalisering Ontwikkelingen)
|
| 331 |
+
</div>
|
| 332 |
+
""")
|
| 333 |
+
|
| 334 |
+
gr.Markdown("""
|
| 335 |
+
Vergelijk tekstvereenvoudiging van drie AI-modellen naast elkaar.
|
| 336 |
+
""")
|
| 337 |
+
|
| 338 |
with gr.Row():
|
| 339 |
with gr.Column(scale=1):
|
| 340 |
input_text = gr.Textbox(
|
| 341 |
+
label="Voer je tekst in",
|
| 342 |
+
placeholder="Typ of plak hier de tekst die je wilt vereenvoudigen...",
|
| 343 |
+
lines=12,
|
| 344 |
+
max_lines=20
|
| 345 |
)
|
| 346 |
|
| 347 |
simplify_btn = gr.Button(
|
| 348 |
+
"π Vereenvoudig tekst",
|
| 349 |
variant="primary",
|
| 350 |
+
size="lg"
|
| 351 |
)
|
| 352 |
|
| 353 |
+
with gr.Column(scale=2):
|
| 354 |
+
gr.Markdown("### π Voorbeeldteksten")
|
| 355 |
+
|
| 356 |
+
with gr.Row():
|
| 357 |
+
with gr.Column(scale=1):
|
| 358 |
+
btn1 = gr.Button(
|
| 359 |
+
f"π¬ FYSICA\n\n{EXAMPLES[0][:120]}...",
|
| 360 |
+
elem_classes="example-text-card",
|
| 361 |
+
size="lg"
|
| 362 |
+
)
|
| 363 |
+
with gr.Column(scale=1):
|
| 364 |
+
btn2 = gr.Button(
|
| 365 |
+
f"βοΈ NATUURKUNDE\n\n{EXAMPLES[1][:120]}...",
|
| 366 |
+
elem_classes="example-text-card",
|
| 367 |
+
size="lg"
|
| 368 |
+
)
|
| 369 |
+
|
| 370 |
+
with gr.Row():
|
| 371 |
+
with gr.Column(scale=1):
|
| 372 |
+
btn3 = gr.Button(
|
| 373 |
+
f"𧬠BIOLOGIE\n\n{EXAMPLES[2][:120]}...",
|
| 374 |
+
elem_classes="example-text-card",
|
| 375 |
+
size="lg"
|
| 376 |
+
)
|
| 377 |
+
with gr.Column(scale=1):
|
| 378 |
+
btn4 = gr.Button(
|
| 379 |
+
f"π» INFORMATICA\n\n{EXAMPLES[3][:120]}...",
|
| 380 |
+
elem_classes="example-text-card",
|
| 381 |
+
size="lg"
|
| 382 |
+
)
|
| 383 |
+
|
| 384 |
# Three-column layout for results
|
| 385 |
with gr.Row(equal_height=True):
|
| 386 |
with gr.Column(scale=1, visible=True) as col_eurollm:
|
| 387 |
+
gr.Markdown('<div class="model-title">π Leesplank Noot EuroLLM-1.7b</div>')
|
| 388 |
output_eurollm = gr.Textbox(
|
| 389 |
label="",
|
| 390 |
lines=10,
|
|
|
|
| 393 |
metrics_eurollm = gr.Markdown("")
|
| 394 |
|
| 395 |
with gr.Column(scale=1, visible=True) as col_granite:
|
| 396 |
+
gr.Markdown('<div class="model-title">π Leesplank Noot Granite-3.3-2b</div>')
|
| 397 |
output_granite = gr.Textbox(
|
| 398 |
label="",
|
| 399 |
lines=10,
|
|
|
|
| 402 |
metrics_granite = gr.Markdown("")
|
| 403 |
|
| 404 |
with gr.Column(scale=1, visible=True) as col_llama:
|
| 405 |
+
gr.Markdown('<div class="model-title">π¦ Leesplank Noot Llama-3.2-3b</div>')
|
| 406 |
output_llama = gr.Textbox(
|
| 407 |
label="",
|
| 408 |
lines=10,
|
|
|
|
| 410 |
)
|
| 411 |
metrics_llama = gr.Markdown("")
|
| 412 |
|
| 413 |
+
with gr.Accordion("βΉοΈ Over deze demo", open=False):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 414 |
gr.Markdown("""
|
| 415 |
+
## Projectinformatie
|
| 416 |
|
| 417 |
Deze demo toont drie Nederlandse tekstvereenvoudigingsmodellen ontwikkeld door **UWV Innovatie Hub** als onderdeel van het Leesplank Noot project.
|
| 418 |
|
| 419 |
+
### Modellen:
|
| 420 |
+
- **Leesplank Noot EuroLLM-1.7b**: 1.7B parameters, SARI score: 66.44
|
| 421 |
+
- **Leesplank Noot Granite-3.3-2b**: 2B parameters, SARI score: 67.80
|
| 422 |
+
- **Leesplank Noot Llama-3.2-3b**: 3B parameters, SARI score: 67.50
|
| 423 |
|
| 424 |
Alle modellen zijn getraind op 1.89M Nederlandse Wikipedia-vereenvoudigingen en produceren tekst op B1-niveau voor betere toegankelijkheid van overheidscommunicatie.
|
| 425 |
|
| 426 |
+
### Ontwikkeling:
|
| 427 |
- **Ontwikkeld door:** UWV Innovatie Hub
|
| 428 |
- **Projectleiding:** innovatie@uwv.nl
|
| 429 |
- **Financiering:** Dit project is mede mogelijk gemaakt door **IDO 2024** (Innovatie en Digitalisering Ontwikkelingen)
|
| 430 |
- **Licentie:** Apache 2.0
|
| 431 |
|
| 432 |
+
### Doel:
|
| 433 |
Het verbeteren van de toegankelijkheid van overheidsteksten voor burgers met leesmoeilijkheden, in lijn met de Wet digitale overheid en EU toegankelijkheidsrichtlijnen.
|
| 434 |
""")
|
| 435 |
|
|
|
|
| 454 |
]
|
| 455 |
)
|
| 456 |
|
| 457 |
+
# Example button handlers
|
| 458 |
+
btn1.click(fn=lambda: EXAMPLES[0], outputs=input_text)
|
| 459 |
+
btn2.click(fn=lambda: EXAMPLES[1], outputs=input_text)
|
| 460 |
+
btn3.click(fn=lambda: EXAMPLES[2], outputs=input_text)
|
| 461 |
+
btn4.click(fn=lambda: EXAMPLES[3], outputs=input_text)
|
| 462 |
+
|
| 463 |
# Footer
|
| 464 |
gr.Markdown("""
|
| 465 |
<div class="footer-section">
|