Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import random | |
| from datasets import load_dataset | |
| # # Sample dataset with unique 10-digit IDs | |
| # qa_dataset = { | |
| # "1234567890": { | |
| # "question": "What is the capital of France?", | |
| # "choices": ["A. Berlin", "B. Madrid", "C. Paris", "D. Lisbon"], | |
| # "answer": "C. Paris" | |
| # }, | |
| # "0987654321": { | |
| # "question": "What is the largest planet in our solar system?", | |
| # "choices": ["A. Earth", "B. Jupiter", "C. Saturn", "D. Mars", "E. Venus"], | |
| # "answer": "B. Jupiter" | |
| # }, | |
| # # Add more questions with unique IDs as needed | |
| # } | |
| truth_data = load_dataset("commonsense-index-dev/commonsense-candidates", "iter6-0520-error", split="train") | |
| qa_dataset = {} | |
| for item in truth_data: | |
| qa_dataset[item["id"]] = { | |
| "question": item["task"], | |
| "choices": item["choices"], | |
| "answer": item["answer"] | |
| } | |
| def get_random_question(): | |
| question_id = random.choice(list(qa_dataset.keys())) | |
| question_data = qa_dataset[question_id] | |
| return question_id, question_data["question"], question_data["choices"] | |
| def get_question_by_id(question_id): | |
| if question_id in qa_dataset: | |
| question_data = qa_dataset[question_id] | |
| return question_id, question_data["question"], question_data["choices"] | |
| else: | |
| return None, "Invalid question ID", [] | |
| def check_answer(question_id, choice): | |
| correct_answer = qa_dataset[question_id]["answer"] | |
| return "Correct!" if choice == correct_answer else f"Incorrect. The correct answer is {correct_answer}." | |
| def load_question(question_id=None): | |
| if question_id: | |
| question_id, question, choices = get_question_by_id(question_id) | |
| else: | |
| question_id, question, choices = get_random_question() | |
| question = f"## {question}" | |
| choices_markdown = "\n".join(choices) | |
| return question_id, question, choices_markdown, gr.update(visible=True), gr.update(value="", visible=True) | |
| def show_buttons(choices_markdown): | |
| choices = choices_markdown.split("\n") | |
| visibility = [gr.update(visible=False)] * 10 | |
| for i in range(len(choices)): | |
| visibility[i] = gr.update(visible=True, value=choices[i]) | |
| return visibility | |
| with gr.Blocks() as app: | |
| gr.Markdown("# Multiple Choice QA Dataset Viewer") | |
| question_id_input = gr.Textbox(label="Enter Question ID", placeholder="leave empty for random sampling") | |
| random_button = gr.Button("Retrieve or Random Sample") | |
| question_display = gr.Markdown(visible=True) | |
| choices_markdown = gr.Markdown(visible=False) | |
| choice_buttons = [gr.Button(visible=False) for _ in range(10)] | |
| result_display = gr.Markdown(visible=True) | |
| question_id = gr.State() | |
| question_id_input.submit(fn=load_question, inputs=question_id_input, outputs=[question_id, question_display, choices_markdown, result_display]) | |
| random_button.click(fn=load_question, outputs=[question_id, question_display, choices_markdown, result_display]) | |
| choices_markdown.change(fn=show_buttons, inputs=choices_markdown, outputs=choice_buttons) | |
| for i, button in enumerate(choice_buttons): | |
| button.click(fn=check_answer, inputs=[question_id, button], outputs=result_display) | |
| app.launch() |