Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import pipeline | |
import os | |
# Set the page configuration to wide layout | |
st.set_page_config(layout="wide") | |
# Initialize the summarization pipeline | |
summarizer = pipeline("summarization", model="facebook/bart-large-cnn") | |
# Define functions for summarizing, extracting key points, and generating flashcards | |
def summarize_text(text): | |
summary = summarizer(text, max_length=150, min_length=50, do_sample=False) | |
return summary[0]['summary_text'] | |
def extract_key_points(text): | |
summary = summarizer(text, max_length=60, min_length=20, do_sample=False) | |
return [point['summary_text'] for point in summary] | |
def generate_flashcards(text): | |
# Assume flashcards are similar to key points in this case | |
return extract_key_points(text) | |
def process_file(file_path): | |
with open(file_path, 'r', encoding='utf-8') as file: | |
text = file.read() | |
summary = summarize_text(text) | |
key_points = extract_key_points(text) | |
flashcards = generate_flashcards(text) | |
return summary, key_points, flashcards | |
# Define tabs for the application | |
tab1, tab2 = st.tabs(["Text Summarization", "File Upload & Process"]) | |
# Text Summarization Tab | |
with tab1: | |
st.title("Text Summarization") | |
st.subheader("Enter Your Text") | |
user_text = st.text_area("Input Text", height=300) | |
if st.button("Generate Summary"): | |
if user_text: | |
summary = summarize_text(user_text) | |
key_points = extract_key_points(user_text) | |
flashcards = generate_flashcards(user_text) | |
st.write("### Summary") | |
st.write(summary) | |
st.write("### Key Points") | |
for idx, point in enumerate(key_points, start=1): | |
st.write(f"**Point {idx}:** {point}") | |
st.write("### Flashcards") | |
for idx, card in enumerate(flashcards, start=1): | |
st.write(f"**Flashcard {idx}:** {card}") | |
else: | |
st.warning("Please enter text to generate a summary.") | |
# File Upload & Process Tab | |
with tab2: | |
st.title("Upload and Process File") | |
uploaded_file = st.file_uploader("Choose a text file", type=["txt"]) | |
if uploaded_file is not None: | |
# Save uploaded file temporarily | |
file_path = os.path.join("uploads", uploaded_file.name) | |
with open(file_path, "wb") as f: | |
f.write(uploaded_file.getbuffer()) | |
# Process the file | |
summary, key_points, flashcards = process_file(file_path) | |
# Display the summary, key points, and flashcards | |
st.write("### Summary") | |
st.write(summary) | |
st.write("### Key Points") | |
for idx, point in enumerate(key_points, start=1): | |
st.write(f"**Point {idx}:** {point}") | |
st.write("### Flashcards") | |
for idx, card in enumerate(flashcards, start=1): | |
st.write(f"**Flashcard {idx}:** {card}") | |
# Clean up the temporary file | |
os.remove(file_path) | |