Spaces:
Runtime error
Runtime error
| # import gradio as gr | |
| # from data_handler import get_next_sample, annotate_text, get_generation_columns, load_progress | |
| import gradio as gr | |
| from data_handler import get_next_sample, annotate_text, get_generation_columns, load_progress | |
| # Track the progress of all annotations | |
| progress = load_progress() # Load previous progress from the progress file | |
| annotation_history = list(progress.keys()) # Maintain a list of comment IDs in order of annotation | |
| current_annotation_idx = -1 # Start from no previous annotation | |
| def update_ui(dataset, generation_columns): | |
| """Update UI with the next sample or show completion message.""" | |
| sample = get_next_sample(dataset, progress) | |
| if sample is None: | |
| return gr.update(visible=False), gr.update(value="All comments annotated!"), gr.update(visible=False) | |
| # Ensure to return the correct number of outputs for Gradio (textboxes + comment_id) | |
| textboxes = [gr.update(value=sample[col]) for col in generation_columns] | |
| return textboxes + [gr.update(value=sample["comment_id"])] # Return sample comment_id | |
| def go_back_ui(): | |
| """Go back to the previous annotated sample in the history.""" | |
| global current_annotation_idx | |
| # Check if we have any previous annotations | |
| if current_annotation_idx <= 0: | |
| return gr.update(visible=False), gr.update(value="No previous annotations.") | |
| # Move one step back | |
| current_annotation_idx -= 1 | |
| # Get the previous annotated sample based on the current_annotation_idx | |
| prev_annotated_id = annotation_history[current_annotation_idx] | |
| prev_sample = progress[prev_annotated_id] | |
| textboxes = [ | |
| gr.update(value=prev_sample["grammar"]), | |
| gr.update(value=prev_sample["coherence"]), | |
| gr.update(value=prev_sample["preferred_text"]) | |
| ] | |
| return textboxes + [gr.update(value=prev_annotated_id)] # Show the previous annotation | |
| def create_ui(dataset, current_index): | |
| """Creates the Gradio UI for annotation.""" | |
| generation_columns = get_generation_columns(dataset) | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## Annotate Generated Texts") | |
| gr.Markdown("#### Rate each generation and select the best one") | |
| textboxes, grammar_radios, coherence_radios = [], [], [] | |
| for col in generation_columns: | |
| with gr.Row(): | |
| with gr.Column(scale=3): | |
| gr.Markdown(f"### {col}") | |
| text_input = gr.Textbox(label=f"Generated Text ({col})", lines=5) | |
| textboxes.append(text_input) | |
| with gr.Column(scale=1): | |
| grammar = gr.Radio(choices=["-2", "-1", "0", "1", "2"], label="Grammar", interactive=True) | |
| coherence = gr.Radio(choices=["-2", "-1", "0", "1", "2"], label="Coherence", interactive=True) | |
| grammar_radios.append(grammar) | |
| coherence_radios.append(coherence) | |
| preferred_text = gr.Dropdown(choices=generation_columns, label="Select Best Generation") | |
| comment_id_box = gr.Textbox(label="Comment ID", interactive=False) # Store comment_id | |
| with gr.Row(): | |
| submit_btn = gr.Button("Submit Annotation") | |
| go_back_btn = gr.Button("Go Back to Last Annotation") | |
| output_message = gr.Textbox(label="Status", interactive=False) | |
| # Set initial values | |
| demo.load(lambda: update_ui(dataset, generation_columns), outputs=textboxes + [comment_id_box]) | |
| # Define button actions | |
| submit_btn.click( | |
| lambda grammar_scores, coherence_scores, preferred, comment_id: annotate_text( | |
| dataset, comment_id, grammar_scores, coherence_scores, preferred, generation_columns, progress | |
| ), | |
| inputs=grammar_radios + coherence_radios + [preferred_text, comment_id_box], | |
| outputs=textboxes + [output_message] | |
| ) | |
| go_back_btn.click( | |
| go_back_ui, | |
| outputs=textboxes + [comment_id_box, output_message] | |
| ) | |
| return demo | |
| # # Track the progress of all annotations | |
| # progress = load_progress() # Load previous progress from the progress file | |
| # annotation_history = list(progress.keys()) # Maintain a list of comment IDs in order of annotation | |
| # current_annotation_idx = -1 # Start from no previous annotation | |
| # def update_ui(dataset, generation_columns): | |
| # """Update UI with the next sample or show completion message.""" | |
| # sample = get_next_sample(dataset, progress) | |
| # if sample is None: | |
| # return gr.update(visible=False), gr.update(value="All comments annotated!"), gr.update(visible=False) | |
| # textboxes = [gr.update(value=sample[col]) for col in generation_columns] | |
| # return textboxes + [gr.update(value=sample["comment_id"])] # Return sample comment_id | |
| # def go_back_ui(): | |
| # """Go back to the previous annotated sample in the history.""" | |
| # global current_annotation_idx | |
| # # Check if we have any previous annotations | |
| # if current_annotation_idx <= 0: | |
| # return gr.update(visible=False), gr.update(value="No previous annotations.") | |
| # # Move one step back | |
| # current_annotation_idx -= 1 | |
| # # Get the previous annotated sample based on the current_annotation_idx | |
| # prev_annotated_id = annotation_history[current_annotation_idx] | |
| # prev_sample = progress[prev_annotated_id] | |
| # textboxes = [gr.update(value=prev_sample["grammar"]), | |
| # gr.update(value=prev_sample["coherence"]), | |
| # gr.update(value=prev_sample["preferred_text"])] | |
| # return textboxes + [gr.update(value=prev_annotated_id)] # Show the previous annotation | |
| # def create_ui(dataset, current_index): | |
| # """Creates the Gradio UI for annotation.""" | |
| # generation_columns = get_generation_columns(dataset) | |
| # with gr.Blocks() as demo: | |
| # gr.Markdown("## Annotate Generated Texts") | |
| # gr.Markdown("#### Rate each generation and select the best one") | |
| # textboxes, grammar_radios, coherence_radios = [], [], [] | |
| # for col in generation_columns: | |
| # with gr.Row(): | |
| # with gr.Column(scale=3): | |
| # gr.Markdown(f"### {col}") | |
| # text_input = gr.Textbox(label=f"Generated Text ({col})", lines=5) | |
| # textboxes.append(text_input) | |
| # with gr.Column(scale=1): | |
| # grammar = gr.Radio(choices=["-2", "-1", "0", "1", "2"], label="Grammar", interactive=True) | |
| # coherence = gr.Radio(choices=["-2", "-1", "0", "1", "2"], label="Coherence", interactive=True) | |
| # grammar_radios.append(grammar) | |
| # coherence_radios.append(coherence) | |
| # preferred_text = gr.Dropdown(choices=generation_columns, label="Select Best Generation") | |
| # comment_id_box = gr.Textbox(label="Comment ID", interactive=False) # Store comment_id | |
| # with gr.Row(): | |
| # submit_btn = gr.Button("Submit Annotation") | |
| # go_back_btn = gr.Button("Go Back to Last Annotation") | |
| # output_message = gr.Textbox(label="Status", interactive=False) | |
| # # Set initial values | |
| # demo.load(lambda: update_ui(dataset, generation_columns), outputs=textboxes + [comment_id_box]) | |
| # # Define button actions | |
| # submit_btn.click( | |
| # lambda grammar_scores, coherence_scores, preferred, comment_id: annotate_text( | |
| # dataset, comment_id, grammar_scores, coherence_scores, preferred, generation_columns, progress | |
| # ), | |
| # inputs=grammar_radios + coherence_radios + [preferred_text, comment_id_box], | |
| # outputs=textboxes + [output_message] | |
| # ) | |
| # go_back_btn.click( | |
| # go_back_ui, | |
| # outputs=textboxes + [comment_id_box, output_message] | |
| # ) | |
| # return demo | |
| # # # Store the history of annotated samples | |
| # # last_sample = None # To store the previous sample for "Go Back" | |
| # # def update_ui(dataset, generation_columns): | |
| # # """Update UI with the next sample or show completion message.""" | |
| # # global last_sample | |
| # # sample = get_next_sample(dataset) | |
| # # if sample is None: | |
| # # return gr.update(visible=False), gr.update(value="All comments annotated!"), gr.update(visible=False) | |
| # # last_sample = sample # Store the current sample for going back | |
| # # textboxes = [gr.update(value=sample[col]) for col in generation_columns] | |
| # # return textboxes + [gr.update(value=sample["comment_id"])] # Return sample comment_id | |
| # # def go_back_ui(dataset, generation_columns): | |
| # # """Return the previous annotated sample (if available).""" | |
| # # global last_sample | |
| # # if last_sample is None: | |
| # # return gr.update(visible=False), gr.update(value="No previous sample.") | |
| # # textboxes = [gr.update(value=last_sample[col]) for col in generation_columns] | |
| # # return textboxes + [gr.update(value=last_sample["comment_id"])] # Display previous comment_id | |
| # # def create_ui(dataset): | |
| # # """Creates the Gradio UI for annotation.""" | |
| # # generation_columns = get_generation_columns(dataset) | |
| # # with gr.Blocks() as demo: | |
| # # gr.Markdown("## Annotate Generated Texts") | |
| # # gr.Markdown("#### Rate each generation and select the best one") | |
| # # textboxes, grammar_radios, coherence_radios = [], [], [] | |
| # # for col in generation_columns: | |
| # # with gr.Row(): | |
| # # with gr.Column(scale=3): | |
| # # gr.Markdown(f"### {col}") | |
| # # text_input = gr.Textbox(label=f"Generated Text ({col})", lines=5) | |
| # # textboxes.append(text_input) | |
| # # with gr.Column(scale=1): | |
| # # grammar = gr.Radio(choices=["-2", "-1", "0", "1", "2"], label="Grammar", interactive=True) | |
| # # coherence = gr.Radio(choices=["-2", "-1", "0", "1", "2"], label="Coherence", interactive=True) | |
| # # grammar_radios.append(grammar) | |
| # # coherence_radios.append(coherence) | |
| # # preferred_text = gr.Dropdown(choices=generation_columns, label="Select Best Generation") | |
| # # comment_id_box = gr.Textbox(label="Comment ID", interactive=False) # Store comment_id | |
| # # with gr.Row(): | |
| # # submit_btn = gr.Button("Submit Annotation") | |
| # # go_back_btn = gr.Button("Go Back to Last Annotation") | |
| # # output_message = gr.Textbox(label="Status", interactive=False) | |
| # # # Set initial values | |
| # # demo.load(lambda: update_ui(dataset, generation_columns), outputs=textboxes + [comment_id_box]) | |
| # # # Define button actions | |
| # # submit_btn.click( | |
| # # lambda grammar_scores, coherence_scores, preferred, comment_id: annotate_text( | |
| # # dataset, comment_id, grammar_scores, coherence_scores, preferred, generation_columns | |
| # # ), | |
| # # inputs=grammar_radios + coherence_radios + [preferred_text, comment_id_box], | |
| # # outputs=textboxes + [output_message] | |
| # # ) | |
| # # go_back_btn.click( | |
| # # lambda: go_back_ui(dataset, generation_columns), | |
| # # outputs=textboxes + [comment_id_box, output_message] | |
| # # ) | |
| # # return demo |