DemoOfDemos / app.py
lbiester's picture
Update app.py
2d7852d verified
raw
history blame
2.52 kB
import gradio as gr
import nltk
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from transformers import pipeline
# global variables to load models
lr_model = load("lr_model.joblib")
lr_vectorizer = load("vectorizer.joblib")
sentiment_pipe = pipeline("text-classification", model="finiteautomata/bertweet-base-sentiment-analysis")
def greet(name):
return "Hello " + name + "!!"
def classify(text):
return {"cat": 0.3, "dog": 0.7}
def predict_sentiment(text, model):
if model == "finiteautomata/bertweet-base-sentiment-analysis":
out = sentiment_pipe(text, return_all_scores=True)
return {pred["label"]: pred["score"] for pred in out[0]}
elif model == "vader":
nltk.download('vader_lexicon')
sia = SentimentIntensityAnalyzer()
return sia.polarity_scores(text)
elif model == "custom logistic regression":
x = lr_vectorizer.transform([text])
pred = lr_model.predict_proba(x)[0]
return {"neg": pred[0], "pos": pred[1]}
demo = gr.Blocks()
with demo:
gr.Markdown("A bunch of different Gradio demos in tabs.\n\nNote that generally, the code that is in each tab could be its own Gradio application!")
with gr.Tabs():
with gr.TabItem("Basic Hello"):
gr.Markdown('The most basic "Hello World"-type demo you can write')
interface = gr.Interface(fn=greet, inputs="text", outputs="text")
with gr.TabItem("Label Output"):
gr.Markdown("An example of a basic interface with a classification label as output")
interface = gr.Interface(fn=classify, inputs="text", outputs="label")
with gr.TabItem("Multiple Inputs"):
gr.Markdown("A more complex interface for sentiment analysis with multiple inputs, including a dropdown, and some examples")
interface = gr.Interface(
predict_sentiment,
[
gr.Textbox(placeholder="Your text input"),
gr.Dropdown(
["finiteautomata/bertweet-base-sentiment-analysis", "vader"], label="Model"
),
],
"label",
examples=[
["Happy smile", "vader"],
["Happy smile", "finiteautomata/bertweet-base-sentiment-analysis"],
["Sad frown", "vader"],
["Sad frown", "finiteautomata/bertweet-base-sentiment-analysis"],
]
)
demo.launch()