visor841's picture
Change labels language to tags
1d7be04
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()