Spaces:
Sleeping
Sleeping
from transformers import pipeline | |
import numpy as np | |
import gradio as gr | |
def netScores(tagList: list, sequence_to_classify: str, modelName: str) -> dict: | |
classifier = pipeline("zero-shot-classification", model=modelName) | |
hypothesis_template_pos = "This example is {}" | |
hypothesis_template_neg = "This example is not {}" | |
output_pos = classifier(sequence_to_classify, tagList, hypothesis_template=hypothesis_template_pos, multi_label=True) | |
output_neg = classifier(sequence_to_classify, tagList, hypothesis_template=hypothesis_template_neg, multi_label=True) | |
positive_scores = {} | |
for x in range(len(tagList)): | |
positive_scores[output_pos["labels"][x]] = output_pos["scores"][x] | |
negative_scores = {} | |
for x in range(len(tagList)): | |
negative_scores[output_neg["labels"][x]] = output_neg["scores"][x] | |
pos_neg_scores = {} | |
for tag in tagList: | |
pos_neg_scores[tag] = [positive_scores[tag],negative_scores[tag]] | |
net_scores = {} | |
for tag in tagList: | |
net_scores[tag] = positive_scores[tag]-negative_scores[tag] | |
net_scores = dict(sorted(net_scores.items(), key=lambda x:x[1], reverse=True)) | |
return net_scores | |
def compareTextAndLabels (userText, userLabels): | |
userLabelsArray = userLabels.split(",") | |
labelsScores = netScores (userLabelsArray, userText, 'akhtet/mDeBERTa-v3-base-myXNLI') | |
for label in labelsScores: | |
labelsScores[label] = str(np.round(labelsScores[label]*100,2))+"%" | |
return labelsScores | |
demo = gr.Interface( | |
fn=compareTextAndLabels, | |
inputs=[gr.Textbox(label="Text"), gr.Textbox(label="Tags (separated by commas)")], | |
outputs=[gr.Textbox(label="Tag Scores")], | |
) | |
demo.launch() | |