DemoOfDemos / app.py
lbiester's picture
Update app.py
fc753e0 verified
raw
history blame
2.21 kB
import gradio as gr
import nltk
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from transformers import pipeline
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":
pipe = pipeline("text-classification", model="finiteautomata/bertweet-base-sentiment-analysis")
out = 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)
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()