File size: 7,613 Bytes
031e5e2 f415539 6d96e89 1e46fba 7fd91ba 64906bc 58f85ab 7bf24bf 6533513 1e46fba f415539 031e5e2 6d737a4 f415539 6d737a4 f415539 031e5e2 6d737a4 dc24386 6d737a4 031e5e2 bc82aca dc24386 bc82aca e8aca7b bc82aca ad01b2c 03843da ad01b2c e8aca7b ad01b2c d69ba73 ad01b2c e8aca7b ad01b2c e8aca7b ad01b2c e8aca7b 03843da ad01b2c f415539 ad01b2c 9a5a3c9 ad01b2c f415539 ad01b2c 1e46fba 58f85ab 1e46fba 7bf24bf 105eeb0 30b6f7a 7bf24bf 105eeb0 7bf24bf 6533513 e385524 105eeb0 8eafb9f 30b6f7a 8eafb9f 30b6f7a c0da2c3 8eafb9f 7bf24bf |
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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
import streamlit as st
import json
import os
# shifted from below - this must be the first streamlit call; otherwise: problems
st.set_page_config(page_title = 'Climate Policy Analysis Assistant',
initial_sidebar_state='expanded', layout="wide")
import logging
logging.getLogger().setLevel(logging.INFO)
from utils.uploadAndExample import add_upload
import appStore.doc_processing as processing
import appStore.tapp as tapp_extraction
import appStore.adapmit as adapmit
import appStore.sector as sector
import appStore.subtarget as subtarget
import appStore.tapp_display as tapp_display
import appStore.excel_convert as excel_convert
from PIL import Image
import pkg_resources
installed_packages = pkg_resources.working_set
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)
with(open('docStore/sample/files.json','r')) as json_file:
files = json.load(json_file)
add_upload(choice, files)
with st.container():
st.markdown("<h2 style='text-align: center; color: black;'> Climate Policy Analysis Assistant </h2>", unsafe_allow_html=True)
st.write(' ')
with st.expander("ℹ️ - About this app", expanded=False):
st.write(
"""
Climate Policy Analysis Assistant (CPo_droid) is an open-source\
digital tool which aims to assist policy analysts and \
other users in extracting and filtering \
information from public documents in context of Climate Change Commitments and Strategies.
""")
c1, c2, c3 = st.columns([12,1,10])
with c1:
st.write('**Definitions**')
st.caption("""
- **Target**: Targets are an intention to achieve a specific result, \
for example, to reduce GHG emissions to a specific level \
(a GHG target) or increase energy efficiency or renewable \
energy to a specific level (a non-GHG target), typically by \
a certain date. There are are 3 subclass of targets:
- **Netzero**: Identifies if its Netzero Target or not.
- **GHG Target**: GHG targets refer to contributions framed as targeted \
outcomes in GHG terms.
- **NonGHG Target**: Targets/contributions framed in NOT GHG terms like energy efficiency, sectoral-target like Distribution of 100K electric stoves etc.
- **Action**: Actions are an intention to implement specific means of \
achieving GHG reductions, usually in forms of concrete projects.
- **Policies**: Policies are domestic planning documents \
such as policies, regulations or guidlines.
- **Plans**: Plans are broader than specific policies or actions, such as a general intention \
to ‘improve efficiency’, ‘develop renewable energy’, etc. \
These terms come from the World Bank's NDC platform and WRI's publication.
""")
#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 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 **TAPP(Target/Action/Policy/Plan multilabel) Classifier** which detects if
the paragraph contains any *TAPP* related information or not.
- Step 3: The paragraphs which are detected containing some TAPP \
related information are then fed to multiple classifier to enrich the
Information Extraction. These classifiers inlcude: Sector Classifier, Adaptation & Mitigation Classsifier, Conditionality Classifier.
""")
list_ = ""
for package in installed_packages:
list_ = list_ + f"{package.key}=={package.version}\n"
st.download_button('Download Requirements', list_, file_name='requirements.txt')
st.write("")
# apps to be run
apps = [processing.app, tapp_extraction.app, adapmit.app, sector.app, subtarget.app]
# conditional.app, , category.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)
prg.empty()
if 'key1' in st.session_state:
tapp_display.targets()
tapp_display.actions()
tapp_display.policy()
tapp_display.plans()
with st.sidebar:
topic = st.radio(
"Which category you want to explore?",
('Targets', 'Actions','Policy','Plans'))
if topic == 'Targets':
tapp_display.target_display()
excel_convert.filter_dataframe('target_hits',['keep','text','Sector','Sub-Target','page'])
with st.sidebar:
st.write('-------------')
df_xlsx = excel_convert.to_excel()
st.download_button(label='📥 Download Result',
data=df_xlsx ,
file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
elif topic == 'Actions':
tapp_display.action_display()
excel_convert.filter_dataframe('action_hits',['keep','text','Sector','page'])
with st.sidebar:
st.write('-------------')
df_xlsx = excel_convert.to_excel()
st.download_button(label='📥 Download Result',
data=df_xlsx ,
file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
elif topic == 'Policy':
tapp_display.policy_display()
excel_convert.filter_dataframe('policy_hits',['keep','text','Sector','page'])
with st.sidebar:
st.write('-------------')
df_xlsx = excel_convert.to_excel()
st.download_button(label='📥 Download Result',
data=df_xlsx ,
file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
elif topic == 'Plans':
tapp_display.plans_display()
excel_convert.filter_dataframe('plan_hits',['keep','text','Sector','page'])
with st.sidebar:
st.write('-------------')
df_xlsx = excel_convert.to_excel()
st.download_button(label='📥 Download Result',
data=df_xlsx ,
file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
#excel_convert.filter_dataframe('target_hits',['keep','text','Parameter','page'])
#with st.sidebar:
# st.write('-------------')
# df_xlsx = excel_convert.to_excel()
# st.download_button(label='📥 Download Result',
# data=df_xlsx ,
# file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx') |