Spaces:
Build error
Build error
| import gradio as gr | |
| import pandas as pd | |
| # Read source sentences and translations from an Excel file | |
| excel_file = "demo.xlsx" # Path to your Excel file | |
| df = pd.read_excel(excel_file) | |
| # Assuming the Excel file has columns: "Source", "Translation_1", "Translation_2", ..., "Translation_5" | |
| source_col = "Source Sentence" | |
| translation_cols = [f"Translation_{i}" for i in range(1, 6)] | |
| # Store the result scores after evaluation | |
| #result_columns = ['Source', 'Translation', 'Accuracy', 'Fluency', 'Overall'] | |
| result_columns = ['Source', 'Translation', 'Rating'] | |
| # Function to simulate the rating collection and return scores | |
| def evaluate_translations(*ratings): | |
| # Initialize lists to store results for all translations | |
| sources = [] | |
| translations = [] | |
| #accuracy_ratings = [] | |
| #fluency_ratings = [] | |
| overall_ratings = [] | |
| name = ratings[0] | |
| for item in ratings: | |
| if type(item)==int: | |
| overall_ratings.append(item) | |
| for idx, row in df.iterrows(): | |
| source = row[source_col] | |
| translations_list = [row[translation_col] for translation_col in translation_cols] | |
| # Collect ratings for each translation | |
| for i, translation in enumerate(translations_list): | |
| sources.append(source) | |
| translations.append(translation) | |
| # Store the results in a DataFrame | |
| results_df = pd.DataFrame({ | |
| 'Source': sources, | |
| 'Translation': translations, | |
| #'Accuracy': accuracy_ratings, | |
| #'Fluency': fluency_ratings, | |
| 'Overall': overall_ratings | |
| }) | |
| # Save the result to an Excel file | |
| filename = name+"_evaluation_results.xlsx" | |
| results_df.to_excel(filename, index=False) | |
| return "Evaluation complete. Results have been saved to" + filename + "." | |
| # Function to create the input sliders dynamically for each translation | |
| def get_inputs(): | |
| inputs = [] | |
| inputs.append(gr.Textbox(label="User Name :", interactive=True)) | |
| for idx, row in df.iterrows(): | |
| source = row[source_col] | |
| translations_list = [row[translation_col] for translation_col in translation_cols] | |
| # Source sentence display (non-editable) | |
| inputs.append(gr.Textbox(value=source, label=f"Source Sentence {idx+1}", interactive=False)) | |
| # Add 3 sliders for each translation (accuracy, fluency, overall) | |
| for i, translation in enumerate(translations_list): | |
| with gr.Row(): | |
| inputs.append(gr.Textbox(value=translation, label=f"Translation {i+1}")) | |
| #inputs.append(gr.Slider(minimum=1, maximum=5, step=1, label=f"Accuracy (Translation {i+1})")) | |
| #inputs.append(gr.Slider(minimum=1, maximum=5, step=1, label=f"Fluency (Translation {i+1})")) | |
| inputs.append(gr.Slider(minimum=1, maximum=5, step=1, label=f"Rating (Translation {i+1})")) | |
| return inputs | |
| # Define the Gradio interface outputs | |
| def get_outputs(): | |
| return gr.Textbox(label="Evaluation Status") | |
| # Create the Gradio interface | |
| with gr.Blocks() as demo: | |
| # Inputs | |
| inputs = get_inputs() | |
| # Outputs | |
| output = get_outputs() | |
| # Add a Submit Button | |
| submit_button = gr.Button("Submit Evaluation") | |
| # Bind the button to the evaluation function | |
| submit_button.click(evaluate_translations, inputs=inputs, outputs=output) | |
| # Launch the interface | |
| demo.launch() | |