Spaces:
Sleeping
Sleeping
import streamlit as st | |
import spacy | |
from transformers import BertTokenizer, BertModel | |
from PIL import Image | |
#LOAD MODEL SECTION# | |
nlp = spacy.load("./models/en_core_web_sm") | |
bert_tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") | |
bert_model = BertModel.from_pretrained("bert-base-uncased") | |
bert_model.eval() | |
st.title("SpaGAN Demo") | |
st.write("Enter a text, and the system will highlight the geo-entities within it.") | |
# Define a color map and descriptions for different entity types | |
COLOR_MAP = { | |
'FAC': ('red', 'Facilities (e.g., buildings, airports)'), | |
'ORG': ('blue', 'Organizations (e.g., companies, institutions)'), | |
'LOC': ('purple', 'Locations (e.g., mountain ranges, water bodies)'), | |
'GPE': ('green', 'Geopolitical Entities (e.g., countries, cities)') | |
} | |
# Display the color key with descriptions | |
st.write("**Color Key:**") | |
for label, (color, description) in COLOR_MAP.items(): | |
st.markdown(f"- **{label}**: <span style='color:{color}'>{color}</span> - {description}", unsafe_allow_html=True) | |
# Text input | |
user_input = st.text_area("Input Text", height=200) | |
# Process the text when the button is clicked | |
if st.button("Highlight Geo-Entities"): | |
if user_input.strip(): | |
# Process the text using spaCy | |
doc = nlp(user_input) | |
# Highlight geo-entities with different colors | |
highlighted_text = user_input | |
for ent in reversed(doc.ents): | |
if ent.label_ in COLOR_MAP: | |
color = COLOR_MAP[ent.label_][0] | |
highlighted_text = ( | |
highlighted_text[:ent.start_char] + | |
f"<span style='color:{color}; font-weight:bold'>{ent.text}</span>" + | |
highlighted_text[ent.end_char:] | |
) | |
# Display the highlighted text with HTML support | |
st.markdown(highlighted_text, unsafe_allow_html=True) | |
else: | |
st.error("Please enter some text.") |