MND_Tweet_Space / app.py
barbieheimer's picture
Optimism Label instead of Surprise
fa44a09
import gradio as gr
from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
class EmotionClassifier:
def __init__(self): # since we have defined the models below, this class will call itself.
self.model = AutoModelForSequenceClassification.from_pretrained("barbieheimer/MND_TweetEvalBert_model") # specify the model from repo.
self.tokenizer = AutoTokenizer.from_pretrained("barbieheimer/MND_TweetEvalBert_model") #need to spicify the tokeniser from repo too
self.pipeline = pipeline(
"text-classification", # specify pipeline task here.
model=self.model,
tokenizer=self.tokenizer,
return_all_scores=True, # so that all emotional scores are displayed.
)
# creating a prediction definition.
def predict(self, input_text: str): # defining what the output will look like.
pred = self.pipeline(input_text)[0] # processing text input.
result = {
"Anger 😠": pred[0]["score"],
"Joy πŸ˜‚": pred[1]["score"],
"Optimism 😲": pred[2]["score"],
"Sadness 😭": pred[3]["score"],
}
return result
def main():
# call the emotionclassifier class to use our model, and now we can use the gradio UI.
model = EmotionClassifier()
iface = gr.Interface(
fn=model.predict, # using the model to predict
inputs=gr.inputs.Textbox(
lines=3,
placeholder="Type a phrase that has some emotion",
label="Input Text",
),
outputs="label",
title="Emotion Classification",
examples=[
["The movie was a bummer."],
["I cannot wait to watch all these movies!"],
["The ending of the movie really irks me, gives me the ick fr."],
["The protagonist seems to have a lot of hope...."]
],
)
iface.launch()
if __name__ == "__main__":
main()