File size: 6,582 Bytes
b64cff5 efcb0b0 b64cff5 031e5e2 6d737a4 0e3ebc4 ad01b2c 0e3ebc4 6d737a4 ad01b2c b64cff5 031e5e2 efcb0b0 031e5e2 6d737a4 031e5e2 6d737a4 144d528 6d737a4 031e5e2 bc82aca ad01b2c bc82aca 6d737a4 ad01b2c 155bcb1 6118d20 dc55918 6d737a4 acff600 0e3ebc4 bc82aca 0e3ebc4 |
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 |
import streamlit as st
import os
import pkg_resources
# streamlit page needs to go here as it must be the first st call
st.set_page_config(page_title = 'Climate Policy Intelligence',
initial_sidebar_state='expanded', layout="wide")
# Using this wacky hack to get around the massively ridicolous managed env loading order
def is_installed(package_name, version):
try:
pkg = pkg_resources.get_distribution(package_name)
return pkg.version == version
except pkg_resources.DistributionNotFound:
return False
@st.cache_resource
def install_packages():
install_commands = []
if not is_installed("spaces", "0.12.0"):
install_commands.append("pip install spaces==0.17.0")
if not is_installed("pydantic", "1.8.2"):
install_commands.append("pip install pydantic==1.8.2")
if not is_installed("typer", "0.4.0"):
install_commands.append("pip install typer==0.4.0")
if install_commands:
os.system(" && ".join(install_commands))
# install packages if necessary
install_packages()
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
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;'> Climate Policy Understanding App </h2>", unsafe_allow_html=True)
st.write(' ')
with st.expander("ℹ️ - About this app", expanded=False):
st.write(
"""
Climate Policy Understanding 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("""
- **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.
- **Economy-wide Target**: Certain Target are applicable \
not at specific Sector level but are applicable at economic \
wide scale.
- **Netzero**: Identifies if its Netzero Target or not.
- 'NET-ZERO': target_labels = ['T_Netzero','T_Netzero_C']
- 'Non Netzero Target': target_labels_neg = ['T_Economy_C',
'T_Economy_Unc','T_Adaptation_C','T_Adaptation_Unc','T_Transport_C',
'T_Transport_O_C','T_Transport_O_Unc','T_Transport_Unc']
- 'Others': Other Targets beside covered above
- **GHG Target**: GHG targets refer to contributions framed as targeted \
outcomes in GHG terms.
- 'GHG': target_labels_ghg_yes = ['T_Transport_Unc','T_Transport_C']
- 'NON GHG TRANSPORT TARGET': target_labels_ghg_no = ['T_Adaptation_Unc',\
'T_Adaptation_C', 'T_Transport_O_Unc', 'T_Transport_O_C']
- 'OTHERS': Other Targets beside covered above.
- **Conditionality**: An “unconditional contribution” is what countries \
could implement without any conditions and based on their own \
resources and capabilities. A “conditional contribution” is one \
that countries would undertake if international means of support \
are provided, or other conditions are met.
- **Action**: Actions are an intention to implement specific means of \
achieving GHG reductions, usually in forms of concrete projects.
- **Policies and Plans**: Policies are domestic planning documents \
such as policies, regulations or guidlines, and Plans are broader \
than specific policies or actions, such as a general intention \
to ‘improve efficiency’, ‘develop renewable energy’, etc. \
The 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 **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)
|