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 our QASRL\QANom models, which fine-tuned Seq2Seq pretrained models on the QASRL\QANom task.""" title="QANom Parser Demo" examples = [["The doctor was interested in Luke 's treatment .", True, "treat"], ["The Veterinary student was interested in Luke 's treatment of sea animals .", True, "treat"]] input_sent_box_label = "Insert sentence here. Mark the predicate by adding the token '' before it." 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: print("You must highlight one word of the sentence as a ''.") return 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] return pipeline(sentence, predicate_marker=predicate_marker, predicate_type="nominal" if is_nominal else "verbal", verb_form=verb_form) 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(label="verbal form of nominalization", default='')], outputs=gr.outputs.JSON(label="Model Output - QASRL"), title=title, description=description, article=links, examples=examples )