File size: 2,119 Bytes
1215fb7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import torch
from transformers import AutoTokenizer, AutoModelForTokenClassification

tokenizer = AutoTokenizer.from_pretrained("ai4bharat/IndicNER")

model = AutoModelForTokenClassification.from_pretrained("ai4bharat/IndicNER")


def get_ner(sentence):
    tok_sentence = tokenizer(sentence, return_tensors='pt')

    with torch.no_grad():
        logits = model(**tok_sentence).logits.argmax(-1)
        predicted_tokens_classes = [
            model.config.id2label[t.item()] for t in logits[0]]

        predicted_labels = []

        previous_token_id = 0
        word_ids = tok_sentence.word_ids()
        for word_index in range(len(word_ids)):
            if word_ids[word_index] == None:
                previous_token_id = word_ids[word_index]
            elif word_ids[word_index] == previous_token_id:
                previous_token_id = word_ids[word_index]
            else:
                predicted_labels.append(predicted_tokens_classes[word_index])
                previous_token_id = word_ids[word_index]

        ner_output = []
        for index in range(len(sentence.split(' '))):
            ner_output.append(
                (sentence.split(' ')[index], predicted_labels[index]))
        return ner_output


iface = gr.Interface(get_ner,
                     gr.Textbox(placeholder="Enter sentence here..."),
                     ["highlight"], description='NER Specialized for Tamil Language.',
                     examples=["முதல்வர் ஸ்டாலின் பட்டமளிப்பு விழாவிற்காக சிதம்பரத்திலுள்ள அண்ணாமலைப் பல்கலைகழகத்திற்கு வருகை தந்தார்.","வல்லவராயன் வந்தியதேவனும் ஆதித்திய கரிகாலனும் கடம்பூருக்குச் சென்றனர். "], title='TaNER',
                     article='TaNER is a model developed for NER in Tamil Language'
                     )

iface.launch(enable_queue=True)