Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -101,48 +101,42 @@ def main():
|
|
| 101 |
file = st.file_uploader("Upload an excel file", type=['xlsx'])
|
| 102 |
review_column = None
|
| 103 |
df = None
|
| 104 |
-
class_names = None
|
| 105 |
|
| 106 |
if file is not None:
|
| 107 |
try:
|
| 108 |
chunk_size = 10000 # adjust this value depending on your available memory
|
| 109 |
df = pd.concat(pd.read_excel(file, chunksize=chunk_size))
|
| 110 |
-
|
| 111 |
-
# Drop rows where all columns are NaN
|
| 112 |
df = df.dropna(how='all')
|
| 113 |
-
# Replace blank spaces with NaN, then drop rows where all columns are NaN again
|
| 114 |
df = df.replace(r'^\s*$', np.nan, regex=True)
|
| 115 |
df = df.dropna(how='all')
|
| 116 |
review_column = st.selectbox('Select the column from your excel file containing text', df.columns)
|
| 117 |
df[review_column] = df[review_column].astype(str)
|
| 118 |
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
df = filter_dataframe(df, review_column, filter_words) # Filter the DataFrame
|
| 124 |
except Exception as e:
|
| 125 |
st.write("An error occurred while reading the uploaded file. Please make sure it's a valid Excel file.")
|
| 126 |
return
|
| 127 |
|
| 128 |
start_button = st.button('Start Analysis')
|
| 129 |
|
| 130 |
-
|
| 131 |
if start_button and df is not None:
|
| 132 |
-
# Drop rows with NaN or blank values in the review_column
|
| 133 |
df = df[df[review_column].notna()]
|
| 134 |
df = df[df[review_column].str.strip() != '']
|
| 135 |
-
|
| 136 |
-
class_names = [name.strip() for name in class_names.split(',')]
|
| 137 |
-
for name in class_names:
|
| 138 |
if name not in df.columns:
|
| 139 |
df[name] = 0.0
|
| 140 |
-
|
| 141 |
if review_column in df.columns:
|
| 142 |
with st.spinner('Performing sentiment analysis...'):
|
| 143 |
df, df_display = process_reviews(df, review_column, class_names)
|
| 144 |
-
|
| 145 |
-
display_ratings(df, review_column)
|
| 146 |
display_dataframe(df, df_display)
|
| 147 |
else:
|
| 148 |
st.write(f'No column named "{review_column}" found in the uploaded file.')
|
|
@@ -153,6 +147,7 @@ def main():
|
|
| 153 |
|
| 154 |
|
| 155 |
|
|
|
|
| 156 |
def process_reviews(df, review_column, class_names):
|
| 157 |
with st.spinner('Classifying reviews...'):
|
| 158 |
progress_bar = st.progress(0)
|
|
|
|
| 101 |
file = st.file_uploader("Upload an excel file", type=['xlsx'])
|
| 102 |
review_column = None
|
| 103 |
df = None
|
| 104 |
+
class_names = None
|
| 105 |
|
| 106 |
if file is not None:
|
| 107 |
try:
|
| 108 |
chunk_size = 10000 # adjust this value depending on your available memory
|
| 109 |
df = pd.concat(pd.read_excel(file, chunksize=chunk_size))
|
|
|
|
|
|
|
| 110 |
df = df.dropna(how='all')
|
|
|
|
| 111 |
df = df.replace(r'^\s*$', np.nan, regex=True)
|
| 112 |
df = df.dropna(how='all')
|
| 113 |
review_column = st.selectbox('Select the column from your excel file containing text', df.columns)
|
| 114 |
df[review_column] = df[review_column].astype(str)
|
| 115 |
|
| 116 |
+
filter_words_input = st.text_input('Enter words to filter the data by, separated by comma (or leave empty)')
|
| 117 |
+
filter_words = [] if filter_words_input.strip() == "" else process_filter_words(filter_words_input)
|
| 118 |
+
class_names = st.text_input('Enter the possible class names separated by comma')
|
| 119 |
+
df = filter_dataframe(df, review_column, filter_words)
|
|
|
|
| 120 |
except Exception as e:
|
| 121 |
st.write("An error occurred while reading the uploaded file. Please make sure it's a valid Excel file.")
|
| 122 |
return
|
| 123 |
|
| 124 |
start_button = st.button('Start Analysis')
|
| 125 |
|
|
|
|
| 126 |
if start_button and df is not None:
|
|
|
|
| 127 |
df = df[df[review_column].notna()]
|
| 128 |
df = df[df[review_column].str.strip() != '']
|
| 129 |
+
|
| 130 |
+
class_names = [name.strip() for name in class_names.split(',')]
|
| 131 |
+
for name in class_names:
|
| 132 |
if name not in df.columns:
|
| 133 |
df[name] = 0.0
|
| 134 |
+
|
| 135 |
if review_column in df.columns:
|
| 136 |
with st.spinner('Performing sentiment analysis...'):
|
| 137 |
df, df_display = process_reviews(df, review_column, class_names)
|
| 138 |
+
|
| 139 |
+
display_ratings(df, review_column)
|
| 140 |
display_dataframe(df, df_display)
|
| 141 |
else:
|
| 142 |
st.write(f'No column named "{review_column}" found in the uploaded file.')
|
|
|
|
| 147 |
|
| 148 |
|
| 149 |
|
| 150 |
+
|
| 151 |
def process_reviews(df, review_column, class_names):
|
| 152 |
with st.spinner('Classifying reviews...'):
|
| 153 |
progress_bar = st.progress(0)
|