Spaces:
Running
Running
Commit
·
87fd9e7
1
Parent(s):
4673e91
progress more 32+
Browse files
app.py
CHANGED
@@ -164,74 +164,65 @@ def process_file(uploaded_file):
|
|
164 |
return df
|
165 |
|
166 |
def create_output_file(df):
|
167 |
-
# Create a new Excel writer object
|
168 |
-
output = io.BytesIO()
|
169 |
-
writer = pd.ExcelWriter(output, engine='openpyxl')
|
170 |
-
|
171 |
# Load the sample file to copy its structure
|
172 |
sample_wb = load_workbook("sample_file.xlsx")
|
173 |
|
174 |
-
#
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
total_news = len(entity_df)
|
180 |
-
negative_news = sum((entity_df['FinBERT'] == 'Negative') |
|
181 |
-
(entity_df['RoBERTa'] == 'Negative') |
|
182 |
-
(entity_df['FinBERT-Tone'] == 'Negative'))
|
183 |
-
positive_news = sum((entity_df['FinBERT'] == 'Positive') |
|
184 |
-
(entity_df['RoBERTa'] == 'Positive') |
|
185 |
-
(entity_df['FinBERT-Tone'] == 'Positive'))
|
186 |
-
summary_data.append([entity, total_news, negative_news, positive_news])
|
187 |
-
|
188 |
-
summary_df = pd.DataFrame(summary_data, columns=['Объект', 'Всего новостей', 'Отрицательные', 'Положительные'])
|
189 |
-
summary_df = summary_df.sort_values('Отрицательные', ascending=False)
|
190 |
-
|
191 |
-
# Write 'Сводка' sheet
|
192 |
-
if 'Сводка' in sample_wb.sheetnames:
|
193 |
-
writer.book['Сводка'] = sample_wb['Сводка']
|
194 |
-
summary_df.to_excel(writer, sheet_name='Сводка', startrow=3, startcol=4, index=False, header=False)
|
195 |
-
|
196 |
-
# Process data for 'Значимые' and 'Анализ' sheets
|
197 |
-
significant_data = []
|
198 |
-
analysis_data = []
|
199 |
-
for _, row in df.iterrows():
|
200 |
-
if any(row[model] in ['Negative', 'Positive'] for model in ['FinBERT', 'RoBERTa', 'FinBERT-Tone']):
|
201 |
-
sentiment = 'Negative' if any(row[model] == 'Negative' for model in ['FinBERT', 'RoBERTa', 'FinBERT-Tone']) else 'Positive'
|
202 |
-
significant_data.append([row['Объект'], sentiment, row['Заголовок'], row['Выдержки из текста']])
|
203 |
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
|
227 |
-
writer.save()
|
228 |
output.seek(0)
|
229 |
-
|
230 |
return output
|
231 |
|
232 |
-
|
233 |
def main():
|
234 |
-
st.title("... приступим к анализу... версия
|
235 |
|
236 |
uploaded_file = st.file_uploader("Выбирайте Excel-файл", type="xlsx")
|
237 |
|
|
|
164 |
return df
|
165 |
|
166 |
def create_output_file(df):
|
|
|
|
|
|
|
|
|
167 |
# Load the sample file to copy its structure
|
168 |
sample_wb = load_workbook("sample_file.xlsx")
|
169 |
|
170 |
+
# Create a new Excel writer object
|
171 |
+
output = io.BytesIO()
|
172 |
+
with pd.ExcelWriter(output, engine='openpyxl') as writer:
|
173 |
+
writer.book = sample_wb
|
174 |
+
writer.sheets = {ws.title: ws for ws in sample_wb.worksheets}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
|
176 |
+
# Process data for 'Сводка' sheet
|
177 |
+
entities = df['Объект'].unique()
|
178 |
+
summary_data = []
|
179 |
+
for entity in entities:
|
180 |
+
entity_df = df[df['Объект'] == entity]
|
181 |
+
total_news = len(entity_df)
|
182 |
+
negative_news = sum((entity_df['FinBERT'] == 'Negative') |
|
183 |
+
(entity_df['RoBERTa'] == 'Negative') |
|
184 |
+
(entity_df['FinBERT-Tone'] == 'Negative'))
|
185 |
+
positive_news = sum((entity_df['FinBERT'] == 'Positive') |
|
186 |
+
(entity_df['RoBERTa'] == 'Positive') |
|
187 |
+
(entity_df['FinBERT-Tone'] == 'Positive'))
|
188 |
+
summary_data.append([entity, total_news, negative_news, positive_news])
|
189 |
+
|
190 |
+
summary_df = pd.DataFrame(summary_data, columns=['Объект', 'Всего новостей', 'Отрицательные', 'Положительные'])
|
191 |
+
summary_df = summary_df.sort_values('Отрицательные', ascending=False)
|
192 |
+
|
193 |
+
# Write 'Сводка' sheet
|
194 |
+
summary_df.to_excel(writer, sheet_name='Сводка', startrow=3, startcol=4, index=False, header=False)
|
195 |
+
|
196 |
+
# Process data for 'Значимые' and 'Анализ' sheets
|
197 |
+
significant_data = []
|
198 |
+
analysis_data = []
|
199 |
+
for _, row in df.iterrows():
|
200 |
+
if any(row[model] in ['Negative', 'Positive'] for model in ['FinBERT', 'RoBERTa', 'FinBERT-Tone']):
|
201 |
+
sentiment = 'Negative' if any(row[model] == 'Negative' for model in ['FinBERT', 'RoBERTa', 'FinBERT-Tone']) else 'Positive'
|
202 |
+
significant_data.append([row['Объект'], sentiment, row['Заголовок'], row['Выдержки из текста']])
|
203 |
+
|
204 |
+
if any(row[model] == 'Negative' for model in ['FinBERT', 'RoBERTa', 'FinBERT-Tone']):
|
205 |
+
analysis_data.append([row['Объект'], 'РИСК УБЫТКА', row['Заголовок'], row['Выдержки из текста']])
|
206 |
+
|
207 |
+
# Write 'Значимые' sheet
|
208 |
+
significant_df = pd.DataFrame(significant_data, columns=['Объект', 'Окраска', 'Заголовок', 'Текст'])
|
209 |
+
significant_df.to_excel(writer, sheet_name='Значимые', startrow=2, startcol=2, index=False)
|
210 |
+
|
211 |
+
# Write 'Анализ' sheet
|
212 |
+
analysis_df = pd.DataFrame(analysis_data, columns=['Объект', 'Тип риска', 'Заголовок', 'Текст'])
|
213 |
+
analysis_df.to_excel(writer, sheet_name='Анализ', startrow=3, startcol=4, index=False)
|
214 |
+
|
215 |
+
# Copy 'Публикации' sheet from original file
|
216 |
+
df.to_excel(writer, sheet_name='Публикации', index=False)
|
217 |
+
|
218 |
+
# Add 'Тех.приложение' sheet
|
219 |
+
df.to_excel(writer, sheet_name='Тех.приложение', index=False)
|
220 |
|
|
|
221 |
output.seek(0)
|
|
|
222 |
return output
|
223 |
|
|
|
224 |
def main():
|
225 |
+
st.title("... приступим к анализу... версия 32+")
|
226 |
|
227 |
uploaded_file = st.file_uploader("Выбирайте Excel-файл", type="xlsx")
|
228 |
|