Spaces:
Sleeping
Sleeping
Download app.py from ELHACHYMI/bert-ner-demo: direct link, hf CLI and curl.
- Browser
- Download file 3.58 kB
-
https://huggingface.co/spaces/ELHACHYMI/bert-ner-demo/resolve/main/app.py
- Command line
-
hf download hf://spaces/ELHACHYMI/bert-ner-demo/app.py
-
curl -L -o app.py https://huggingface.co/spaces/ELHACHYMI/bert-ner-demo/resolve/main/app.py
3.58 kB
| import gradio as gr | |
| from transformers import pipeline | |
| # -------------------------------------- | |
| # MODEL CONFIGURATION | |
| # -------------------------------------- | |
| model_name = "ELHACHYMI/bert-ner" | |
| default_example = "Bill Gates founded Microsoft in the United States." | |
| example_list = [ | |
| "Elon Musk is the CEO of SpaceX and Tesla.", | |
| "I am ELHACHYMI Ahmed Yassine and i am from Morocco", | |
| "Paris is the capital of France.", | |
| "Othmane AJI student at ENIAD", | |
| ] | |
| # Correct mapping from LABEL_X to real entity names | |
| ENTITY_MAP = { | |
| "LABEL_0": "O", | |
| "LABEL_1": "PER", | |
| "LABEL_2": "PER", | |
| "LABEL_3": "ORG", | |
| "LABEL_4": "ORG", | |
| "LABEL_5": "LOC", | |
| "LABEL_6": "LOC", | |
| "LABEL_7": "MISC", | |
| "LABEL_8": "MISC", | |
| } | |
| # Model info for README block | |
| model_info = { | |
| model_name: { | |
| "link": f"https://huggingface.co/{model_name}", | |
| "usage": f"""from transformers import pipeline | |
| ner = pipeline("ner", model="{model_name}", aggregation_strategy="simple") | |
| text = "{default_example}" | |
| print(ner(text))""" | |
| } | |
| } | |
| # Load NER pipeline | |
| ner_pipeline = pipeline("ner", model=model_name, aggregation_strategy="simple") | |
| # -------------------------------------- | |
| # DISPLAY MODEL INFO | |
| # -------------------------------------- | |
| def display_model_info(model_name): | |
| info = model_info[model_name] | |
| usage_code = info["usage"] | |
| model_link = f"[Open model page: {model_name}]({info['link']})" | |
| return usage_code, model_link | |
| # -------------------------------------- | |
| # HIGHLIGHTED MODE FUNCTION | |
| # -------------------------------------- | |
| def analyze_highlight(text): | |
| results = ner_pipeline(text) | |
| highlighted = [] | |
| last_idx = 0 | |
| for ent in results: | |
| start, end = ent["start"], ent["end"] | |
| # Map LABEL_X → real label | |
| raw_label = ent["entity_group"] | |
| label = ENTITY_MAP.get(raw_label, raw_label) | |
| # Do NOT highlight label "O" | |
| if label == "O": | |
| label = None | |
| # Add normal text before the entity | |
| if start > last_idx: | |
| highlighted.append((text[last_idx:start], None)) | |
| # Add entity text (highlight only if label != None) | |
| highlighted.append((text[start:end], label)) | |
| last_idx = end | |
| # Add remaining text | |
| if last_idx < len(text): | |
| highlighted.append((text[last_idx:], None)) | |
| return highlighted | |
| # -------------------------------------- | |
| # GRADIO UI | |
| # -------------------------------------- | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# Named Entity Recognition Demo using BERT") | |
| gr.Markdown("### Model: ELHACHYMI/bert-ner") | |
| text_input = gr.Textbox( | |
| label="Enter Text", | |
| lines=5, | |
| value=default_example, | |
| placeholder="Type a sentence to analyze." | |
| ) | |
| # Example buttons | |
| with gr.Row(): | |
| for ex in example_list: | |
| gr.Button(ex).click(lambda x=ex: x, outputs=text_input) | |
| # Run button | |
| analyze_button = gr.Button("Run NER Analysis") | |
| # Only one output: HighlightedText | |
| output_highlight = gr.HighlightedText( | |
| label="NER Result", | |
| combine_adjacent=True | |
| ) | |
| # Code + link | |
| code_output = gr.Code(label="How to use this model") | |
| link_output = gr.Markdown() | |
| # Load model info on startup | |
| demo.load( | |
| fn=display_model_info, | |
| inputs=[gr.Textbox(value=model_name, visible=False)], | |
| outputs=[code_output, link_output] | |
| ) | |
| # Run analysis | |
| analyze_button.click( | |
| analyze_highlight, | |
| inputs=text_input, | |
| outputs=output_highlight | |
| ) | |
| demo.launch(ssr_mode=False) |