Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import os | |
import re | |
import streamlit as st | |
import streamlit_analytics | |
from utils import add_logo_to_sidebar, add_footer, add_email_signup_form | |
from transformers import pipeline | |
SUMMARIZER_MODEL = 't5-small' | |
EXAMPLE_TEXT = """Each Party will notify the other Party in writing in the event it becomes aware of a claim for which indemnification may be sought hereunder. | |
In the event that any Third Party asserts a claim or other proceeding (including any governmental investigation) with respect to any matter for which a Party (the "Indemnified Party") is entitled to indemnification hereunder (a "Third Party Claim"), | |
then the Indemnified Party shall promptly notify the Party obligated to indemnify the Indemnified Party (the "Indemnifying Party") thereof; | |
provided, however, that no delay on the part of the Indemnified Party in notifying the Indemnifying Party shall relieve the Indemnifying Party from any obligation hereunder unless (and then only to the extent that) the Indemnifying Party is prejudiced thereby.""" | |
def load_summarizer(): | |
return pipeline("summarization", model=SUMMARIZER_MODEL) | |
def clean_text(text): | |
"""Reformat summarizer output""" | |
text = re.sub(r'\s\.', '.', text) | |
text = '. '.join([sent.capitalize() for sent in text.split('. ')]) | |
return text | |
streamlit_analytics.start_tracking() | |
st.set_page_config( | |
page_title="Summarise Demo", | |
page_icon="π", | |
layout="wide", | |
initial_sidebar_state="expanded", | |
menu_items={ | |
'Get Help': 'mailto:[email protected]', | |
'Report a bug': None, | |
'About': "## This a demo showcasing different Legal AI Actions" | |
} | |
) | |
add_logo_to_sidebar() | |
st.sidebar.success("π Select a demo above.") | |
st.title('π Summarise Demo') | |
st.write('We can use AI to summarise the text of a paragraph, maintaining the most pertinent information in the paragraph. Enter a clause below and click _summarise_ to see the automatic summarisation') | |
st.markdown('### π Enter a Clause') | |
text = st.text_area('Enter Clause Text', label_visibility='collapsed', value=EXAMPLE_TEXT.replace('\n', ' '), height=100) | |
button = st.button('Summarise', type='primary', use_container_width=True) | |
if button: | |
with st.spinner('βοΈ Summarising Clause...'): | |
prefix = "summarize: " | |
summarizer = load_summarizer() | |
summarized_text = summarizer(prefix + text)[0]['summary_text'] | |
summarized_text = clean_text(summarized_text) | |
st.markdown('### Summarised Clause:') | |
st.markdown(f":gray[{summarized_text}]") | |
st.divider() | |
add_email_signup_form() | |
add_footer() | |
streamlit_analytics.stop_tracking(unsafe_password=os.environ["ANALYTICS_PASSWORD"]) |