vulnerability / app.py
leavoigt's picture
Update app.py
ff5f384
raw
history blame
6.01 kB
#import appStore.target as target_extraction
#import appStore.netzero as netzero
#import appStore.sector as sector
#import appStore.adapmit as adapmit
#import appStore.ghg as ghg
#import appStore.policyaction as policyaction
#import appStore.conditional as conditional
#import appStore.indicator as indicator
import appStore.doc_processing as processing
from utils.uploadAndExample import add_upload
from PIL import Image
import streamlit as st
####################################### Dashboard ######################################################
# App
st.set_page_config(page_title = 'Vulnerable Groups Identification',
initial_sidebar_state='expanded', layout="wide")
with st.sidebar:
# upload and example doc
choice = st.sidebar.radio(label = 'Select the Document',
help = 'You can upload the document \
or else you can try a example document',
options = ('Upload Document', 'Try Example'),
horizontal = True)
add_upload(choice)
with st.container():
st.markdown("<h2 style='text-align: center; color: black;'> Vulnerable Groups Identification </h2>", unsafe_allow_html=True)
st.write(' ')
with st.expander("ℹ️ - About this app", expanded=False):
st.write(
"""
The Vulnerable Groups Identification App is an open-source\
digital tool which aims to assist policy analysts and \
other users in extracting and filtering relevant \
information from public documents.
""")
st.write('**Definitions**')
st.caption("""
- **Place holder**: Place holder \
Place holder \
Place holder \
Place holder \
Place holder
""")
#c1, c2, c3 = st.columns([12,1,10])
#with c1:
#image = Image.open('docStore/img/flow.jpg')
#st.image(image)
#with c3:
#st.write("""
# What happens in the background?
# - Step 1: Once the document is provided to app, it undergoes *Pre-processing*.\
# In this step the document is broken into smaller paragraphs \
# (based on word/sentence count).
# - Step 2: The paragraphs are fed to **Target Classifier** which detects if
# the paragraph contains any *Target* related information or not.
# - Step 3: The paragraphs which are detected containing some target \
# related information are then fed to multiple classifier to enrich the
# Information Extraction.
# The Step 2 and 3 are repated then similarly for Action and Policies & Plans.
# """)
#st.write("")
apps = [processing.app, target_extraction.app, netzero.app, ghg.app,
policyaction.app, conditional.app, sector.app, adapmit.app,indicator.app]
multiplier_val =1/len(apps)
if st.button("Analyze Document"):
prg = st.progress(0.0)
for i,func in enumerate(apps):
func()
prg.progress((i+1)*multiplier_val)
if 'key1' in st.session_state:
with st.sidebar:
topic = st.radio(
"Which category you want to explore?",
('Target', 'Action', 'Policies/Plans'))
if topic == 'Target':
target_extraction.target_display()
elif topic == 'Action':
policyaction.action_display()
else:
policyaction.policy_display()
# st.write(st.session_state.key1)
#st.title("Identify references to vulnerable groups.")
#st.write("""Vulnerable groups encompass various communities and individuals who are disproportionately affected by the impacts of climate change
#due to their socioeconomic status, geographical location, or inherent characteristics. By incorporating the needs and perspectives of these groups
#into national climate policies, governments can ensure equitable outcomes, promote social justice, and strive to build resilience within the most marginalized populations,
#fostering a more sustainable and inclusive society as we navigate the challenges posed by climate change.This app allows you to identify whether a text contains any
#references to vulnerable groups, for example when talking about policy documents.""")
# Document upload
#uploaded_file = st.file_uploader("Upload your file here")
# Create text input box
#input_text = st.text_area(label='Please enter your text here', value="This policy has been implemented to support women.")
#st.write('Prediction:', model(input_text))
######################################### Model #########################################################
# Load the model
#model = SetFitModel.from_pretrained("leavoigt/vulnerable_groups")
# Define the classes
#id2label = {
# 0: 'Agricultural communities',
# 1: 'Children and Youth',
# 2: 'Coastal communities',
# 3: 'Drought-prone regions',
# 4: 'Economically disadvantaged communities',
# 5: 'Elderly population',
# 6: 'Ethnic minorities and indigenous people',
# 7: 'Informal sector workers',
# 8: 'Migrants and Refugees',
# 9: 'Other',
# 10: 'People with Disabilities',
# 11: 'Rural populations',
# 12: 'Sexual minorities (LGBTQI+)',
# 13: 'Urban populations',
# 14: 'Women'}
### Process document to paragraphs
# Source: https://blog.jcharistech.com/2021/01/21/how-to-save-uploaded-files-to-directory-in-streamlit-apps/
# Store uploaded file temporarily in directory to get file path (necessary for processing)
# def save_uploadedfile(upl_file):
# with open(os.path.join("tempDir",upl_file.name),"wb") as f:
# f.write(upl_file.getbuffer())
# return st.success("Saved File:{} to tempDir".format(upl_file.name))
# if uploaded_file is not None:
# # Save the file
# file_details = {"FileName": uploaded_file.name, "FileType": uploaded_file.type}
# save_uploadedfile(uploaded_file)
# #Get the file path