Spaces:
Running
Running
import sklearn | |
import gradio as gr | |
import joblib | |
from transformers import pipeline | |
import requests.exceptions | |
from huggingface_hub import HfApi, hf_hub_download | |
from huggingface_hub.repocard import metadata_load | |
#pipe = joblib.load("https://huggingface.co/spaces/scikit-learn/sentiment-analysis/tree/main/pipeline.pkl") | |
#inputs = [gr.Textbox(value = "The customer service was satisfactory.")] | |
#outputs = [gr.Label(label = "Sentiment")] | |
#title = "Sentiment Analysis" | |
app = gr.Blocks() | |
def load_agent(model_id_1, model_id_2): | |
""" | |
This function load the agent's results | |
""" | |
# Load the metrics | |
metadata_1 = get_metadata(model_id_1) | |
# Get the accuracy | |
results_1 = parse_metrics_accuracy(metadata_1) | |
# Load the metrics | |
metadata_2 = get_metadata(model_id_2) | |
# Get the accuracy | |
results_2 = parse_metrics_accuracy(metadata_2) | |
return model_id_1, results_1, model_id_2, results_2 | |
def parse_metrics_accuracy(meta): | |
if "model-index" not in meta: | |
return None | |
result = meta["model-index"][0]["results"] | |
metrics = result[0]["metrics"] | |
accuracy = metrics[0]["value"] | |
return accuracy | |
def get_metadata(model_id): | |
""" | |
Get the metadata of the model repo | |
:param model_id: | |
:return: metadata | |
""" | |
try: | |
readme_path = hf_hub_download(model_id, filename="README.md") | |
metadata = metadata_load(readme_path) | |
print(metadata) | |
return metadata | |
except requests.exceptions.HTTPError: | |
return None | |
classifier = pipeline("text-classification", model="juliensimon/distilbert-amazon-shoe-reviews") | |
def predict(review): | |
prediction = classifier(review) | |
print(prediction) | |
stars = prediction[0]['label'] | |
stars = (int)(stars.split('_')[1])+1 | |
score = 100*prediction[0]['score'] | |
return "{} {:.0f}%".format("\U00002B50"*stars, score) | |
with app: | |
gr.Markdown( | |
""" | |
# Compare Sentiment Analysis Models | |
Type text to predict sentiment. | |
""") | |
with gr.Row(): | |
model1_input = gr.Textbox(label="Model 1") | |
model2_input = gr.Textbox(label="Model 2") | |
with gr.Row(): | |
inp = gr.Textbox(label="Type text here.",placeholder="The customer service was satisfactory.") | |
out = gr.Textbox(label="Prediction") | |
btn = gr.Button("Run") | |
btn.click(fn=predict, inputs=inp, outputs=out) | |
gr.Markdown( | |
""" | |
Type two models id you want to compare or check examples below. | |
""") | |
with gr.Row(): | |
model1_input = gr.Textbox(label="Model 1") | |
model2_input = gr.Textbox(label="Model 2") | |
with gr.Row(): | |
app_button = gr.Button("Compare models") | |
with gr.Row(): | |
with gr.Column(): | |
model1_name = gr.Markdown() | |
model1_score_output = gr.Textbox(label="Sentiment") | |
with gr.Column(): | |
model2_name = gr.Markdown() | |
model2_score_output = gr.Textbox(label="Sentiment") | |
app_button.click(load_agent, inputs=[model1_input, model2_input], outputs=[model1_name, model1_score_output, model2_name, model2_score_output]) | |
examples = gr.Examples(examples=[["distilbert-base-uncased-finetuned-sst-2-english","distilbert-base-uncased-finetuned-sst-2-english"], | |
["distilbert-base-uncased-finetuned-sst-2-english", "distilbert-base-uncased-finetuned-sst-2-english"]], | |
inputs=[model1_input, model2_input]) | |
app.launch() |