Spaces:
Runtime error
Runtime error
File size: 3,754 Bytes
11dc9a8 adec7fa 7485bd9 7f33b70 adec7fa a3d5133 ab2c9b6 040c0c0 ab2c9b6 87d0433 11dc9a8 040c0c0 2b0d3f5 378829d ab2c9b6 58f8ede 378829d 040c0c0 58f8ede adec7fa 17bb07c b59e911 ae14ac6 b59e911 92533eb b4aeeaf 3c22553 adec7fa b4aeeaf b59e911 b4aeeaf 92533eb 11dc9a8 92533eb 6311754 e93fd31 b4aeeaf 11dc9a8 79b77b1 a3435d2 b59e911 8734074 5149066 ffa78eb a3435d2 b59e911 92533eb 0551e7e 5a265b2 ab2c9b6 92533eb 11dc9a8 79b77b1 11dc9a8 8734074 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
import gradio as gr
import hopsworks
from datasets import load_dataset
import pandas as pd
project = hopsworks.login()
fs = project.get_feature_store()
dataset_api = project.get_dataset_api()
dataset = load_dataset("torileatherman/sentiment_analysis_batch_predictions", split='train')
predictions_df = pd.DataFrame(dataset)
grouped_predictions = predictions_df.groupby(predictions_df.Sentiment)
#positive_preds = grouped_predictions.get_group(2)
#neutral_preds = grouped_predictions.get_group(1)
negative_preds = grouped_predictions.get_group(0)
predictions_df['Sentiment'] = predictions_df['Sentiment'].map({0: 'Negative', 1: 'Neutral', 2: 'Positive'})
def article_selection(sentiment):
if sentiment == "Positive":
predictions = negative_preds
top3 = predictions[0:3]
top3_result = top3[['Headline_string','Url']]
top3_result.rename(columns = {'Headline_str':'Headlines', 'Url':'URL'})
return top3_result
elif sentiment == "Negative":
predictions = negative_preds
top3 = predictions[0:3]
top3_result = top3[['Headline_string','Url']]
top3_result.rename(columns = {'Headline_str':'Headlines', 'Url':'URL'})
return top3_result
else:
predictions = negative_preds
top3 = predictions[0:3]
top3_result = top3[['Headline_string','Url']]
top3_result.rename(columns = {'Headline_str':'Headlines', 'Url':'URL'})
return top3_result
def manual_label():
# Selecting random row from batch data
random_sample = predictions_df.sample()
random_headline = random_sample['Headline_string'].iloc[0]
random_prediction = random_sample['Sentiment'].iloc[0]
return random_headline, random_prediction
def thanks(sentiment):
return f"""Thank you for making our model better!"""
description1 = '''
This application recommends news articles depending on the sentiment of the headline.
Enter your preference of what type of news articles you would like recommended to you today: Positive, Negative, or Neutral.
'''
description2 = '''
This application will show you a random news headline and our predicted sentiment.
In order to improve our model, mark the real sentiment of this headline!
'''
suggestion_demo = gr.Interface(
fn=article_selection,
title = 'Recommending News Articles',
inputs = gr.Dropdown(["Positive","Negative","Neutral"], label="What type of news articles would you like recommended?"),
outputs = "dataframe",
#outputs = [gr.Textbox(label="Recommended News Articles (1/3)"),gr.Textbox(label="Recommended News Articles (2/3)"),gr.Textbox(label="Recommended News Articles (3/3)")],
description = description1
)
with gr.Blocks() as manual_label_demo:
description = description2
generate_btn = gr.Button('Show me a headline!')
generate_btn.click(fn=manual_label, outputs=[gr.Textbox(label="News Headline"),gr.Textbox(label="Our Predicted Sentiment")])
drop_down_label = gr.Dropdown(["Positive","Negative","Neutral"], label="Select the true sentiment of the news article.")
submit_btn = gr.Button('Submit your sentiment!')
submit_btn.click(fn=thanks, inputs=drop_down_label, outputs=gr.Textbox())
manual_label_demo1 = gr.Interface(
fn=thanks,
title="Manually Label a News Article",
inputs=[gr.Textbox(label = "Paste in URL of news article here."),
gr.Dropdown(["Positive","Negative","Neutral"], label="Select the sentiment of the news article.")],
outputs = gr.Textbox(label="Output"),
description = description2
)
demo = gr.TabbedInterface([suggestion_demo, manual_label_demo], ["Get recommended news articles", "Help improve our model"])
demo.launch() |