Spaces:
Sleeping
Sleeping
import gradio as gr | |
from green_score import GREEN | |
import spaces | |
# Add the GPU decorator for functions that need GPU access | |
def run_green(ref_text, hyp_text, model_name="StanfordAIMI/GREEN-radllama2-7b"): | |
refs = [ref_text.strip()] | |
hyps = [hyp_text.strip()] | |
green_scorer = GREEN(model_name, output_dir=".") | |
mean, std, green_score_list, summary, result_df = green_scorer(refs, hyps) | |
green_analysis_text = result_df["green_analysis"].iloc[0] | |
# Prepare data for the nx2 table | |
table_data = [] | |
for key, value in result_df.iloc[0].to_dict().items(): | |
if key not in ["reference", "predictions", "green_analysis"]: | |
table_data.append([key, value]) | |
return green_analysis_text, table_data | |
# Example pairs | |
examples = { | |
"Example 1": { | |
"ref": "Interstitial opacities without changes.", | |
"hyp": "Interstitial opacities at bases without changes.", | |
}, | |
"Example 2": { | |
"ref": "The heart size is normal. Lungs are clear without any infiltrates.", | |
"hyp": "The heart size is mildly enlarged. Mild infiltrates in the left upper lobe.", | |
}, | |
"Example 3": { | |
"ref": "Lung volumes are low, causing bronchovascular crowding. The cardiomediastinal silhouette is unremarkable.", | |
"hyp": "Endotracheal tubes have been removed. Pulmonary aeration is slightly improved with no pleural effusions.", | |
} | |
} | |
def update_fields(choice): | |
if choice == "Custom": | |
return gr.update(value="", interactive=True), gr.update(value="", interactive=True) | |
else: | |
return gr.update(value=examples[choice]["ref"], interactive=False), gr.update(value=examples[choice]["hyp"], | |
interactive=False) | |
with gr.Blocks(title="GREEN Score Evaluation Demo") as demo: | |
gr.Markdown("# GREEN Score Evaluation Demo") | |
gr.Markdown( | |
"This demo evaluates a single pair of reference and hypothesis reports to compute the GREEN score." | |
) | |
with gr.Row(): | |
choice = gr.Radio( | |
label="Choose Input Type", | |
choices=["Custom"] + list(examples.keys()), | |
value="Custom", | |
interactive=True | |
) | |
ref_input = gr.Textbox( | |
label="Reference Report", | |
lines=3 | |
) | |
hyp_input = gr.Textbox( | |
label="Hypothesis Report", | |
lines=3 | |
) | |
choice.change( | |
update_fields, | |
inputs=choice, | |
outputs=[ref_input, hyp_input], | |
) | |
model_name_input = gr.Textbox( | |
label="Model Name", | |
value="StanfordAIMI/GREEN-radllama2-7b", | |
placeholder="Enter the HuggingFace model name" | |
) | |
run_button = gr.Button("Compute GREEN Score") | |
green_analysis_output = gr.Textbox( | |
label="GREEN Analysis", | |
lines=10, | |
interactive=False | |
) | |
table_output = gr.DataFrame( | |
label="Scores and Errors", | |
headers=["Metric", "Value"] | |
) | |
run_button.click( | |
run_green, | |
inputs=[ref_input, hyp_input, model_name_input], | |
outputs=[green_analysis_output, table_output] | |
) | |
demo.launch() | |