|
import gradio as gr
|
|
import matplotlib
|
|
import models
|
|
import utils
|
|
|
|
def infer(gt: str, data: str) -> matplotlib.figure:
|
|
nli_res = models.compute_metric(gt, data)
|
|
tone_res = models.compare_tone(gt, data)
|
|
res_text = ""
|
|
if (nli_res["label"] == "neutral"):
|
|
res_text += "Model's response is unrelated to the Ground Truth"
|
|
if (nli_res["label"] == "contradiction"):
|
|
res_text += "Model's response contradicts the Ground Truth"
|
|
if (nli_res["label"] == "entailment"):
|
|
res_text += "Model's response is consistant with the Ground Truth"
|
|
return res_text, utils.create_pie_chart_nli(nli_res), utils.plot_tones(tone_res)
|
|
|
|
examples = [["Cross-encoders are better than bi-encoders for analyzing the relationship betwen texts", "Bi-encoders are superior to cross-encoders"],
|
|
["Cross-encoders are better than bi-encoders for analyzing the relationship betwen texts", "The cosine similarity function can be used to compare the outputs of a bi-encoder"],
|
|
["Cross-encoders are better than bi-encoders for analyzing the relationship betwen texts", "Bi-encoders are outperformed by cross-encoders in the task of relationship analysis"],
|
|
["Birds can fly. There are fish in the sea.", "Fish inhabit the ocean. Birds can aviate."],
|
|
["Birds can fly. There are fish in the sea.", "Fish inhabit the ocean. Birds can not aviate."]]
|
|
app = gr.Interface(fn=infer, inputs=[gr.Textbox(label="Ground Truth"), gr.Textbox(label="Model Response")], examples=examples, outputs=[gr.Textbox(label="Result"), gr.Plot(label="Comparison with GT"), gr.Plot(label="Difference in Tone")])
|
|
app.launch() |