Sansh2003/subtaskB-gradio-app
1
1import gradio as gr2import torch3from transformers import AutoTokenizer, AutoModelForSequenceClassification4import numpy as np5import pandas as pd6 7MODEL_PATH = "Sansh2003/roberta-large-merged-subtaskB"8 9id2label = {0: 'human', 1: 'chatGPT', 2: 'cohere', 3: 'davinci', 4: 'bloomz', 5: 'dolly'}10label2id = {'human': 0, 'chatGPT': 1,'cohere': 2, 'davinci': 3, 'bloomz': 4, 'dolly': 5}11 12tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)13model = AutoModelForSequenceClassification.from_pretrained(14 MODEL_PATH, num_labels=len(label2id), id2label=id2label, label2id=label2id15)16 17def preprocess_single_text(text, tokenizer):18 inputs = tokenizer(text, truncation=True, max_length=512, padding=True, return_tensors="pt")19 return inputs20 21def get_predictions(input_text: str) -> dict:22 prob_dict = dict.fromkeys(label2id)23 inputs = preprocess_single_text(input_text, tokenizer)24 25 with torch.no_grad():26 outputs = model(**inputs)27 logits = outputs.logits28 29 probs = torch.nn.functional.softmax(logits.squeeze().cpu(), dim=-1) # to get probability30 probs = probs.detach().numpy() 31 for i,k in enumerate(label2id.keys()):32 prob_dict[k] = probs[i]33 prob_dict = {k: float(v) for k,v in sorted(prob_dict.items(), key=lambda item:item[1].item(), reverse=True)}34 print(prob_dict)35 return prob_dict