Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import streamlit as st | |
| from deepmultilingualpunctuation import PunctuationModel | |
| from multiprocessing import Pool | |
| from io import StringIO | |
| # Initialize PunctuationModel | |
| model = PunctuationModel() | |
| # Define function to process each review | |
| def process_review(review): | |
| if isinstance(review, str): | |
| return model.restore_punctuation(review) | |
| else: | |
| return "" | |
| # Define number of parallel processes | |
| num_processes = 4 # Adjust according to your system's capabilities | |
| # Define Streamlit app | |
| def main(): | |
| st.title("Punctuation Processing App") | |
| # Upload CSV file | |
| uploaded_file = st.file_uploader("Upload CSV file", type=["csv"]) | |
| if uploaded_file is not None: | |
| # Read CSV file | |
| df = pd.read_csv(uploaded_file) | |
| st.write("Original DataFrame:") | |
| st.write(df) | |
| # Add progress bar | |
| progress_bar_placeholder = st.empty() | |
| progress_bar = progress_bar_placeholder.progress(0) | |
| # Use multiprocessing Pool to parallelize the process | |
| with Pool(processes=num_processes) as pool: | |
| # Apply processing to each review in parallel | |
| total_reviews = len(df['Review']) | |
| processed_reviews = pool.map(process_review, df['Review']) | |
| # Add punctuated reviews to DataFrame | |
| df['punct_review'] = processed_reviews | |
| # Update progress bar manually | |
| progress_bar.progress(100) | |
| # Download processed CSV file | |
| csv_data = df.to_csv(index=False) | |
| st.download_button( | |
| label="Download Processed CSV File", | |
| data=csv_data, | |
| file_name="processed_file.csv", | |
| mime="text/csv" | |
| ) | |
| st.write("Processed DataFrame:") | |
| st.write(df) | |
| # Run Streamlit app | |
| if __name__ == "__main__": | |
| main() |