British / app.py
Rami Nasser
remove years
b27cd71
import gradio as gr
from gradio.components import Label, Textbox
from transformers import pipeline
from utils import *
from datasets import load_dataset
import json
pipe = pipeline(model="raminass/british", top_k=2, padding=True, truncation=True)
df = pd.read_csv("data.csv", sep="\t")
choices = []
for index, row in df.iterrows():
choices.append((f"""{row["case"]}""", [row["text"], row["author"]]))
# https://www.gradio.app/guides/controlling-layout
def greet(opinion):
opinion = opinion.replace("(", "").replace(")", "")
chunks = chunk_data(opinion)["text"].to_list()
result = average_text(chunks, pipe)
return result[0]
def set_input(drop):
return drop[0], drop[1], gr.Slider(visible=True)
with gr.Blocks() as demo:
with gr.Row():
with gr.Column(scale=2):
drop = gr.Dropdown(
choices=sorted(choices),
label="List of Cases",
info="Select a case from the dropdown menu and press the Predict Button",
)
opinion = gr.Textbox(
label="Opinion",
info="Paste opinion text here and press the Predict Button",
)
with gr.Column(scale=1):
with gr.Row():
clear_btn = gr.Button("Clear")
greet_btn = gr.Button("Predict")
op_level = Label(num_top_classes=9, label="Predicted author of opinion")
drop.select(set_input, inputs=drop, outputs=[opinion])
greet_btn.click(
fn=greet,
inputs=[opinion],
outputs=[op_level],
)
clear_btn.click(
fn=lambda: [None, 1994, gr.Slider(visible=True), None, None],
outputs=[opinion, drop, op_level],
)
if __name__ == "__main__":
demo.launch()