File size: 1,810 Bytes
d5d2a07 5436b2b d5d2a07 e1c577b d5d2a07 e1c577b 5436b2b e1c577b 5436b2b c126670 d20062f 5436b2b d5d2a07 5436b2b d20062f d5d2a07 5436b2b d5d2a07 5436b2b d5d2a07 5436b2b d5d2a07 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import gradio as gr
from transformers import pipeline, AutoModelForTokenClassification, AutoTokenizer
# Define the model name
MODEL_NAME = "impresso-project/ner-stacked-bert-multilingual"
# Load the tokenizer and model using the pipeline
ner_tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
ner_pipeline = pipeline(
"generic-ner",
model=MODEL_NAME,
tokenizer=ner_tokenizer,
trust_remote_code=True,
device="cpu",
)
# Helper function to print entities nicely
def print_nicely(entities):
entity_details = []
for entity in entities:
entity_info = f"Entity: {entity['entity']} | Confidence: {entity['score']:.2f}% | Text: {entity['word'].strip()} | Start: {entity['start']} | End: {entity['end']}"
entity_details.append(entity_info)
return "\n".join(entity_details)
# Function to process the sentence and extract entities
def extract_entities(sentence):
results = ner_pipeline(sentence)
entity_results = []
# Extract and format the entities
for key in results.keys():
entity_results.append(print_nicely(results[key]))
print(results)
print(entity_results)
return results
# Create Gradio interface
def ner_app_interface():
input_sentence = gr.Textbox(
lines=5, label="Input Sentence", placeholder="Enter a sentence for NER..."
)
output_entities = gr.HighlightedText(label="Extracted Entities")
# Interface definition
interface = gr.Interface(
fn=extract_entities,
inputs=input_sentence,
outputs=output_entities,
title="Named Entity Recognition",
description="Enter a sentence to extract named entities using the NER model from the Impresso project.",
)
interface.launch()
# Run the app
if __name__ == "__main__":
ner_app_interface()
|