Spaces:
Runtime error
Runtime error
File size: 3,261 Bytes
2fc3c84 13d7daa 2fc3c84 1e516ec 2fc3c84 1e516ec 2fc3c84 1e516ec 2fc3c84 1e516ec 2fc3c84 1e516ec 2fc3c84 1e516ec 13d7daa dfd905e 1e516ec 13d7daa 1e516ec 2fc3c84 1e516ec 13d7daa 1e516ec 2fc3c84 1e516ec |
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 65 66 67 68 69 70 71 |
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) |