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'}) # Load training data set dataset = load_dataset("torileatherman/sentiment_analysis_training", split='train') training_df = pd.DataFrame(dataset) random_sample = {} 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 global random_sample random_sample = predictions_df.sample() random_headline = random_sample['Headline_string'].iloc[0] random_prediction = random_sample['Prediction'].iloc[0] return random_headline, random_prediction def thanks(sentiment): # Create int label mapping = gender = {'Negative': 0,'Neutral': 1, 'Positive':2} sentiment = int(mapping[sentiment]) global training_df # Append training data set training_df = training_df.append({'Sentiment': sentiment, 'Headline_string': random_sample['Headline_string'].iloc[0], 'Headline': random_sample['Headline'].iloc[0] }, ignore_index=True) training_df = training_df.drop_duplicates(subset='Headline_string').reset_index(drop=True) # Upload training data set ds = Dataset.from_pandas(training_df) try: ds.push_to_hub("torileatherman/sentiment_analysis_training") except StopIteration: pass 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. ''' 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: gr.Markdown("