Spaces:
Sleeping
Sleeping
File size: 1,990 Bytes
8ca7cd0 |
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 |
import streamlit as st
from keybert import KeyBERT
from sentence_transformers import SentenceTransformer
from transformers import pipeline
# π§ Must be first Streamlit command
st.set_page_config(page_title="Keyword & Summary Bot", page_icon="π§ ")
# π¦ Load models only once
@st.cache_resource
def load_models():
kw_model = KeyBERT(SentenceTransformer('all-MiniLM-L6-v2'))
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
return kw_model, summarizer
kw_model, summarizer = load_models()
# π§ UI
st.title("π€ NLP Assistant: Keyword Extractor & Summarizer")
st.write("Welcome! Select a task below and enter your text to get smart results.")
# π§ Task Selection
task = st.selectbox("Choose your task:", ["Select task", "Keyword Extraction", "Text Summarization"])
# βοΈ User Input
user_input = st.text_area("Enter your text here:")
# π Submit Button
if st.button("Submit") and user_input.strip():
# π Keyword Extraction
if task == "Keyword Extraction":
keywords = kw_model.extract_keywords(
user_input,
keyphrase_ngram_range=(1, 2),
stop_words='english',
top_n=5
)
keyword_list = [kw[0] for kw in keywords]
st.success(f"π Keywords: {', '.join(keyword_list)}")
# π Text Summarization
elif task == "Text Summarization":
if len(user_input.split()) < 50:
st.warning("β οΈ Enter a longer paragraph (at least 50 words) for better summarization.")
elif len(user_input.split()) > 500:
st.warning("β οΈ Your input is too long. Try to shorten it below 500 words.")
else:
summary = summarizer(
user_input,
max_length=100,
min_length=30,
do_sample=False
)
st.success(f"π Summary: {summary[0]['summary_text']}")
else:
st.warning("β οΈ Please select a task to perform.")
|