Spaces:
Runtime error
Runtime error
import gradio as gr | |
import torch | |
from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline | |
def get_ner_bio(pipe,text): | |
tok_text = pipe.tokenizer(text, return_tensors='pt') | |
with torch.no_grad(): | |
logits = pipe.model(**tok_text).logits.argmax(-1) | |
predicted_tokens_classes = [ | |
pipe.model.config.id2label[t.item()] for t in logits[0] | |
] | |
predicted_labels = [] | |
previous_token_id = 0 | |
word_ids = tok_text.word_ids() | |
for word_index in range(len(word_ids)): | |
if not (word_ids[word_index] == None or word_ids[word_index] == previous_token_id): | |
predicted_labels.append(predicted_tokens_classes[word_index]) | |
previous_token_id = word_ids[word_index] | |
ner_output = [ | |
(word, label if label!="O" else None) | |
for word, label in zip(text.split(" "),predicted_labels) | |
] | |
return ner_output | |
def get_ner(pipe,text,aggregation_strategy="first"): | |
if aggregation_strategy == "bio_first": | |
return get_ner_bio(pipe,text) | |
else: | |
results = pipe(text,aggregation_strategy=aggregation_strategy) | |
for result in results: | |
result["entity"] = result["entity_group"] | |
return {"text": text, "entities": results} | |
ner_models = [ | |
"livinNector/TaNER-500", | |
"livinNector/TaNER-1k", | |
"livinNector/IndicBERTv2-MLM-only-NER", | |
"ai4bharat/IndicNER", | |
"livinNector/IndicBERTNER", | |
"livinNector/IndicNER", | |
"livinNector/xlm-roberta-base-ner", | |
"livinNector/distilbert-multilingual-base-ner" | |
] | |
ner_pipes = [pipeline("token-classification",model) for model in ner_models] | |
def get_ner_outputs(text,aggregation_strategy): | |
return [get_ner(pipe,text,aggregation_strategy) for pipe in ner_pipes] | |
examples = [ | |
["ஆனந்த் மற்றும் லிவின் நெக்டர் ஆகியொர் அண்ணாமலை பல்கலைக்கழகத்தில் படித்து வருகின்றனர்.","first"], | |
["இந்தியன் இன்ஸ்டிட்யூட் ஆஃப் டெக்னாலஜி மெட்ராஸ் கிண்டியில் அமைந்துள்ளது.","average"], | |
["சச்சின் டெண்டுல்கர் மும்பை மாநகரத்தைச் சேர்ந்த ஒரு நடுத்தரக் குடும்பத்தில் நான்காவது குழந்தையாகப் பிறந்தார். பல துடுப்பாட்ட வீரர்களை உருவாக்கிய சாரதாஷ்ரம் வித்யாமந்திர் பள்ளியில் சேர்ந்தார்.","bio_first"] | |
] | |
iface = gr.Interface( | |
get_ner_outputs, | |
[ | |
gr.Textbox(value=examples[0][0]), | |
gr.Dropdown(["bio_first", "first", "max", "average"],value=examples[0][1]) | |
], | |
[gr.Highlight(label=model) for model in ner_models], | |
description='Named Entity Recongnition Interface Comparing Various Transformer Based NER models for Tamil Language.', | |
examples=examples, | |
title='TaNER', | |
) | |
iface.launch(enable_queue=True) |