Spaces:
Runtime error
Runtime error
File size: 4,611 Bytes
11dc9a8 3d1b8c7 7f33b70 3832023 ac12bb2 c246e4e adec7fa a3d5133 12c27ac ab2c9b6 12c27ac 87d0433 11dc9a8 ac12bb2 2b0d3f5 12c27ac 2b0d3f5 378829d ab2c9b6 58f8ede 12c27ac 58f8ede 378829d ac12bb2 58f8ede 12c27ac 58f8ede adec7fa 17bb07c b59e911 c246e4e b59e911 12c27ac b59e911 ae14ac6 6984e16 ae14ac6 6984e16 e831013 a401c4a ae14ac6 b59e911 92533eb b4aeeaf 3c22553 adec7fa b4aeeaf b59e911 b4aeeaf 92533eb 11dc9a8 92533eb 6311754 e93fd31 b4aeeaf 11dc9a8 79b77b1 a3435d2 b59e911 8734074 7ab8162 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 94 95 96 97 98 99 100 101 102 103 |
import gradio as gr
from datasets import load_dataset, Dataset
import pandas as pd
from huggingface_hub import create_repo
from huggingface_hub import login
login(token='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')
dataset = load_dataset("torileatherman/sentiment_analysis_batch_predictions", split='train')
predictions_df = pd.DataFrame(dataset)
grouped_predictions = predictions_df.groupby(predictions_df.Prediction)
positive_preds = grouped_predictions.get_group(2)
neutral_preds = grouped_predictions.get_group(1)
negative_preds = grouped_predictions.get_group(0)
predictions_df['Prediction'] = predictions_df['Prediction'].map({0: 'Negative', 1: 'Neutral', 2: 'Positive'})
def article_selection(sentiment):
if sentiment == "Positive":
predictions = positive_preds
top3 = predictions[0:3]
top3_result = top3[['Headline_string','Url']]
top3_result.rename(columns = {'Headline_string':'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_string':'Headlines', 'Url':'URL'})
return top3_result
else:
predictions = neutral_preds
top3 = predictions[0:3]
top3_result = top3[['Headline_string','Url']]
top3_result.rename(columns = {'Headline_string':'Headlines', 'Url':'URL'})
return top3_result
def manual_label():
# Selecting random row from batch data
random_sample = predictions_df.sample()
#random_sample.to_csv('/Users/torileatherman/Github/ID2223_scalable_machine_learning/news_articles_sentiment/sample.csv', index=False)
random_sample.to_csv('torileatherman/sample')
random_headline = random_sample['Headline_string'].iloc[0]
random_prediction = random_sample['Prediction'].iloc[0]
return random_headline, random_prediction
def thanks(sentiment):
labeled_sentiments = []
labeled_sentiments.append(sentiment)
#counter = len(labeled_sentiments)
#counter = str(counter)
#login(token = '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')
#create_repo("torileatherman/"+counter+"labeled_data")
labeled_sentiments = pd.DataFrame(labeled_sentiments, columns = ['Manual Predictions'])
labeled_sentiments.to_csv('/Users/torileatherman/Github/ID2223_scalable_machine_learning/news_articles_sentiment/manual_labels.csv', index=False)
#labeled_sentiments = Dataset.from_pandas(labeled_sentiments)
#labeled_sentiments.push_to_hub("torileatherman/"+counter+"labeled_data")
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() |