import gradio as gr import pandas as pd from Prediction import * import os from datetime import datetime examples = [] if os.path.exists("assets/examples.txt"): with open("assets/examples.txt", "r", encoding="utf8") as file: for sentence in file: sentence = sentence.strip() examples.append(sentence) else: examples = [ "Games of the imagination teach us actions have consequences in a realm that can be reset.", "But New Jersey farmers are retiring and all over the state, development continues to push out dwindling farmland.", "He also is the Head Designer of The Design Trust so-to-speak, besides his regular job ..." ] device = torch.device('cpu') tokenizer = BertTokenizer.from_pretrained("Oliver12315/Brand_Tone_of_Voice") model = BertForSequenceClassification.from_pretrained("Oliver12315/Brand_Tone_of_Voice") model = model.to(device) def single_sentence(sentence): predictions = predict_single(sentence, tokenizer, model, device) return sorted(zip(LABEL_COLUMNS, predictions), key=lambda x:x[-1], reverse=True) def csv_process(csv_file, attr="content"): current_time = datetime.now() formatted_time = current_time.strftime("%Y_%m_%d_%H_%M_%S") data = pd.read_csv(csv_file.name) data = data.reset_index() os.makedirs('output', exist_ok=True) outputs = [] predictions = predict_csv(data, attr, tokenizer, model, device) output_path = f"output/prediction_Brand_Tone_of_Voice_{formatted_time}.csv" predictions.to_csv(output_path) outputs.append(output_path) return outputs my_theme = gr.Theme.from_hub("JohnSmith9982/small_and_pretty") with gr.Blocks(theme=my_theme, title='Brand_Tone_of_Voice_demo') as demo: gr.HTML( """

Place the title of the paper here

If you like our project, please give us a star ✨ on Github for the latest update.
Project Page
""") with gr.Tab("Readme"): gr.Markdown(""" # Detailed information about our model: The example model here is a tone classification model suitable for financial field texts. # Paper Name # Authors + First author + Corresponding author # How to use? Please refer to the other two tab card for predictions. + The `Single Sentence` for the tone classification of individual sentence. + The `CSV File` for inputting CSV file for batch prediction and return. ... """) with gr.Tab("Single Sentence"): tbox_input = gr.Textbox(label="Input", info="Please input a sentence here:") tab_output = gr.DataFrame(label='Predictions:', headers=["Category", "Probability"], datatype=["str", "number"], interactive=False) with gr.Row(): button_ss = gr.Button("Submit", variant="primary") button_ss.click(fn=single_sentence, inputs=[tbox_input], outputs=[tab_output]) gr.ClearButton([tbox_input, tab_output]) gr.Examples( examples=examples, inputs=tbox_input, examples_per_page=len(examples) ) with gr.Tab("Csv File"): with gr.Row(): csv_input = gr.File(label="CSV File:", file_types=['.csv'], file_count="single" ) csv_output = gr.File(label="Predictions:") with gr.Row(): button = gr.Button("Submit", variant="primary") button.click(fn=csv_process, inputs=[csv_input], outputs=[csv_output]) gr.ClearButton([csv_input, csv_output]) gr.Markdown("## Examples \n The incoming CSV must include the ``content`` field, which represents the text that needs to be predicted!") gr.DataFrame(label='Csv input format:', value=[[i, examples[i]] for i in range(len(examples))], headers=["index", "content"], datatype=["number","str"], interactive=False ) demo.launch()