import gradio as gr from qasrl_model_pipeline import QASRL_Pipeline models = ["kleinay/qanom-seq2seq-model-baseline", "kleinay/qanom-seq2seq-model-joint"] pipelines = {model: QASRL_Pipeline(model) for model in models} description = f"""This is a demo of QASRL/QANom models, which fine-tuned a Seq2Seq pretrained model (T5) on the QASRL/QANom tasks.""" title="QANom Parser Demo" examples = [[models[0], "The doctor was interested in Luke 's
treatment .", True, "treat"], [models[0], "The Veterinary student was interested in Luke 's
treatment of sea animals .", True, "treat"], [models[1], "The Veterinary student was
interested in Luke 's treatment of sea animals .", False, "interest"]] input_sent_box_label = "Insert sentence here. Mark the predicate by adding the token '
' before it." verb_form_inp_placeholder = "e.g. 'decide' for the nominalization 'decision', 'teach' for 'teacher', etc." links = """
QASRL Website | Model Repo at Huggingface Hub
""" def call(model_name, sentence, is_nominal, verb_form): predicate_marker="" if predicate_marker not in sentence: raise ValueError("You must highlight one word of the sentence as a predicate using preceding '
'.") if not verb_form: if is_nominal: raise ValueError("You should provide the verbal form of the nominalization") toks = sentence.split(" ") pred_idx = toks.index(predicate_marker) predicate = toks(pred_idx+1) verb_form=predicate pipeline = pipelines[model_name] pipe_out = pipeline(sentence, predicate_marker=predicate_marker, predicate_type="nominal" if is_nominal else "verbal", verb_form=verb_form) return pipe_out["QAs"], pipe_out["generated_text"] iface = gr.Interface(fn=call, inputs=[gr.inputs.Radio(choices=models, default=models[0], label="Model"), gr.inputs.Textbox(placeholder=input_sent_box_label, label="Sentence", lines=4), gr.inputs.Checkbox(default=True, label="Is Nominalization?"), gr.inputs.Textbox(placeholder=verb_form_inp_placeholder, label="Verbal form (for nominalizations)", default='')], outputs=[gr.outputs.JSON(label="Model Output - QASRL"), gr.outputs.Textbox(label="Raw output sequence")], title=title, description=description, article=links, examples=examples ) iface.launch()