Spaces:
Runtime error
Runtime error
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() | |
print('hey') | |
#random_sample_ds = Dataset.from_pandas(random_sample) | |
#random_sample.to_csv('/Users/torileatherman/Github/ID2223_scalable_machine_learning/news_articles_sentiment/sample.csv', index=False) | |
#random_sample_ds.push_to_hub('torileatherman/sample', index=False) | |
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() |