|
import gradio as gr |
|
from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline |
|
|
|
|
|
class EmotionClassifier: |
|
def __init__(self, model_name: str): |
|
self.model = AutoModelForSequenceClassification.from_pretrained(model_name) |
|
self.tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
self.pipeline = pipeline( |
|
"text-classification", |
|
model=self.model, |
|
tokenizer=self.tokenizer, |
|
return_all_scores=True, |
|
) |
|
|
|
def predict(self, input_text: str): |
|
pred = self.pipeline(input_text)[0] |
|
result = { |
|
"Sadness π": pred[0]["score"], |
|
"Joy π": pred[1]["score"], |
|
"Love π": pred[2]["score"], |
|
"Anger π ": pred[3]["score"], |
|
"Fear π¨": pred[4]["score"], |
|
"Surprise π²": pred[5]["score"], |
|
} |
|
return result |
|
|
|
|
|
def main(): |
|
model = EmotionClassifier("bhadresh-savani/bert-base-uncased-emotion") |
|
iface = gr.Interface( |
|
fn=model.predict, |
|
inputs=gr.inputs.Textbox( |
|
lines=3, |
|
placeholder="Type a phrase that has some emotion", |
|
label="Input Text", |
|
), |
|
outputs="label", |
|
title="Emotion Classification", |
|
examples=[ |
|
"I get so down when I'm alone", |
|
"I believe that today everything will work out", |
|
"It was so dark there I was afraid to go", |
|
"I loved the gift you gave me", |
|
"I was very surprised by your presentation.", |
|
], |
|
) |
|
|
|
iface.launch() |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|