Spaces:
Running
Running
import re | |
import gradio as gr | |
# Simulated GLiNER output | |
SIMULATED_ENTITIES = { | |
"Household Survey Data": "named dataset", | |
"Ethiopia": "data geography", | |
"2020": "reference year", | |
"World Bank": "publisher" | |
} | |
def highlight_text(text): | |
""" | |
Return a dict with the original text and a list of start/end/label spans. | |
""" | |
entities = [] | |
for phrase, label in SIMULATED_ENTITIES.items(): | |
# find all occurrences of phrase | |
for m in re.finditer(re.escape(phrase), text): | |
entities.append({ | |
"start": m.start(), | |
"end": m.end(), | |
"label": label | |
}) | |
return {"text": text, "entities": entities} | |
with gr.Blocks() as demo: | |
gr.Markdown("## Simulated GLiNER Entity Highlighter\n" | |
"Type a sentence (or use the default) then hit **Highlight Entities** or press Enter.") | |
text_input = gr.Textbox( | |
label="Input Text", | |
lines=3, | |
value="The Household Survey Data for Ethiopia in 2020 was published by the World Bank." | |
) | |
highlight_btn = gr.Button("Highlight Entities") | |
highlighted = gr.HighlightedText(label="Highlighted Entities") | |
# Wire up both the button and pressing Enter to our highlighter | |
highlight_btn.click(fn=highlight_text, inputs=text_input, outputs=highlighted) | |
text_input.submit(fn=highlight_text, inputs=text_input, outputs=highlighted) | |
# Also do an initial run on load so you immediately see highlights | |
demo.load(fn=highlight_text, inputs=text_input, outputs=highlighted) | |
gr.Markdown(""" | |
**Entity Legend** | |
- **named dataset**: Household Survey Data | |
- **data geography**: Ethiopia | |
- **reference year**: 2020 | |
- **publisher**: World Bank | |
""") | |
if __name__ == "__main__": | |
demo.launch(inline=True) | |