Spaces:
Sleeping
Sleeping
File size: 2,997 Bytes
f80cc50 8ddc567 72f0cff 71645c3 8fbc997 72f0cff 5447c0b 71645c3 926ab2a f80cc50 8fbc997 f80cc50 8ddc567 9c55aba 8ddc567 fb7fb6c 9c55aba 8ddc567 f80cc50 71645c3 9c55aba 8fbc997 a4466d4 9c55aba 71645c3 f80cc50 fb7fb6c eecd399 9c55aba a4466d4 9c55aba 8fbc997 9c55aba 0805275 9c55aba 8fbc997 f1d21d9 9c55aba a4466d4 9c55aba eecd399 926ab2a 9c55aba fb7fb6c 8ddc567 9c55aba 926ab2a 71645c3 8ddc567 9c55aba 8ddc567 926ab2a 9c55aba 926ab2a f80cc50 8fbc997 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
import gradio as gr
from transformers import pipeline
from utils import *
from datasets import load_dataset
import json
# pipe = pipeline(model="raminass/SCOTUS_AI_15", top_k=15, padding=True, truncation=True)
pipe = pipeline(model="raminass/SCOTUS_AI_V15", top_k=15, padding=True, truncation=True)
all = load_dataset("raminass/full_opinions_1994_2020")
df = pd.DataFrame(all["train"])
choices = []
for index, row in df[df.category == "per_curiam"].iterrows():
if len(row["text"]) > 1000:
choices.append((f"""{row["case_name"]}""", [row["text"], row["year_filed"]]))
with open("j_year.json", "r") as j:
judges_by_year = json.loads(j.read())
judges_by_year = {int(k): v for k, v in judges_by_year.items()}
# https://www.gradio.app/guides/controlling-layout
def greet(opinion, judges_l):
chunks = chunk_data(remove_citations(opinion))["text"].to_list()
result = average_text(chunks, pipe, judges_l)
return result[0]
def set_input(drop):
return drop[0], drop[1], gr.Slider(visible=True)
def update_year(year):
return gr.CheckboxGroup(
judges_by_year[year],
value=judges_by_year[year],
label="Select Justices",
)
with gr.Blocks() as demo:
with gr.Row():
with gr.Column(scale=2):
drop = gr.Dropdown(
choices=sorted(choices),
label="List of Per Curiam Opinions",
info="Select a per curiam opinion from the dropdown menu and press the Predict Button",
)
year = gr.Slider(
1994,
2023,
step=1,
label="Year",
info="Select the year of the opinion if you manually paste the opinion below",
)
exc_judg = gr.CheckboxGroup(
judges_by_year[year.value],
value=judges_by_year[year.value],
label="Select Justices",
info="Select justices to consider in prediction",
)
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 = gr.outputs.Label(
num_top_classes=9, label="Predicted author of opinion"
)
year.release(
update_year,
inputs=[year],
outputs=[exc_judg],
)
year.change(
update_year,
inputs=[year],
outputs=[exc_judg],
)
drop.select(set_input, inputs=drop, outputs=[opinion, year, year])
greet_btn.click(
fn=greet,
inputs=[opinion, exc_judg],
outputs=[op_level],
)
clear_btn.click(
fn=lambda: [None, 1994, gr.Slider(visible=True), None, None],
outputs=[opinion, year, year, drop, op_level],
)
if __name__ == "__main__":
demo.launch()
|