punct_rest / app.py
mrdangwal's picture
Update app.py
ef2b9e8 verified
Raw
History Blame Contribute Delete
1.82 kB
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()