my-app / app.py
AumPandya's picture
Upload app.py
266abab
import streamlit as st
import spacy
from spacy import displacy
# Load spaCy model
nlp = spacy.load("en_core_web_sm")
def visualize_entities(doc):
# Create a list of (start, end, label) tuples for the named entities
entities = [(ent.start_char, ent.end_char, ent.label_) for ent in doc.ents]
# Highlight named entities in the input text
html = displacy.render(doc, style="ent", options={"ents": entities})
st.markdown(html, unsafe_allow_html=True)
def filter_entities(entities, selected_labels):
if not selected_labels:
return entities
filtered_entities = []
for entity, label in entities:
if label in selected_labels:
filtered_entities.append((entity, label))
return filtered_entities
def main():
st.title("Named Entity Recognition App")
st.write("Enter a text and get named entities!")
user_input = st.text_area("Enter text:", height=200)
visualize = st.checkbox("Visualize Entities")
filter_labels = st.multiselect("Filter Entities by Label:", options=["PERSON", "ORG", "GPE", "DATE"])
if st.button("Analyze"):
doc = nlp(user_input)
entities = [(ent.text, ent.label_) for ent in doc.ents]
if visualize:
visualize_entities(doc)
filtered_entities = filter_entities(entities, filter_labels)
st.write("Named Entities:")
for entity, label in filtered_entities:
st.write(f"Text: {entity}, Entity: {label}")
if __name__ == "__main__":
main()