pentarosarium commited on
Commit
a2fccb6
·
1 Parent(s): a7a5806
Files changed (1) hide show
  1. app.py +66 -3
app.py CHANGED
@@ -1063,8 +1063,63 @@ def create_output_file(df, uploaded_file, llm):
1063
  try:
1064
  wb = load_workbook("sample_file.xlsx")
1065
 
1066
- # Rest of the code remains the same until the 'Анализ' sheet processing
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1067
 
 
 
 
 
 
 
 
 
1068
  # Update 'Анализ' sheet with modified translation handling
1069
  ws = wb['Анализ']
1070
  row_idx = 4
@@ -1085,7 +1140,15 @@ def create_output_file(df, uploaded_file, llm):
1085
  ws.cell(row=row_idx, column=9, value=row['Выдержки из текста'])
1086
  row_idx += 1
1087
 
1088
- # Continue with the rest of the function...
 
 
 
 
 
 
 
 
1089
 
1090
  output = io.BytesIO()
1091
  wb.save(output)
@@ -1100,7 +1163,7 @@ def main():
1100
  st.set_page_config(layout="wide")
1101
 
1102
  with st.sidebar:
1103
- st.title("::: AI-анализ мониторинга новостей (v.3.60):::")
1104
  st.subheader("по материалам СКАН-ИНТЕРФАКС")
1105
 
1106
  model_choice = st.radio(
 
1063
  try:
1064
  wb = load_workbook("sample_file.xlsx")
1065
 
1066
+ # Update 'Мониторинг' sheet with events
1067
+ ws = wb['Мониторинг']
1068
+ row_idx = 4
1069
+ for _, row in df.iterrows():
1070
+ if row['Event_Type'] != 'Нет':
1071
+ ws.cell(row=row_idx, column=5, value=row['Объект']) # Column E
1072
+ ws.cell(row=row_idx, column=6, value=row['Заголовок']) # Column F
1073
+ ws.cell(row=row_idx, column=7, value=row['Event_Type']) # Column G
1074
+ ws.cell(row=row_idx, column=8, value=row['Event_Summary']) # Column H
1075
+ ws.cell(row=row_idx, column=9, value=row['Выдержки из текста']) # Column I
1076
+ row_idx += 1
1077
+
1078
+ # Sort entities by number of negative publications
1079
+ entity_stats = pd.DataFrame({
1080
+ 'Объект': df['Объект'].unique(),
1081
+ 'Всего': df.groupby('Объект').size(),
1082
+ 'Негативные': df[df['Sentiment'] == 'Negative'].groupby('Объект').size().fillna(0).astype(int),
1083
+ 'Позитивные': df[df['Sentiment'] == 'Positive'].groupby('Объект').size().fillna(0).astype(int)
1084
+ }).sort_values('Негативные', ascending=False)
1085
+
1086
+ # Calculate most negative impact for each entity
1087
+ entity_impacts = {}
1088
+ for entity in df['Объект'].unique():
1089
+ entity_df = df[df['Объект'] == entity]
1090
+ negative_impacts = entity_df[entity_df['Sentiment'] == 'Negative']['Impact']
1091
+ entity_impacts[entity] = negative_impacts.iloc[0] if len(negative_impacts) > 0 else 'Неопределенный эффект'
1092
+
1093
+ # Update 'Сводка' sheet
1094
+ ws = wb['Сводка']
1095
+ for idx, (entity, row) in enumerate(entity_stats.iterrows(), start=4):
1096
+ ws.cell(row=idx, column=5, value=entity) # Column E
1097
+ ws.cell(row=idx, column=6, value=row['Всего']) # Column F
1098
+ ws.cell(row=idx, column=7, value=row['Негативные']) # Column G
1099
+ ws.cell(row=idx, column=8, value=row['Позитивные']) # Column H
1100
+ ws.cell(row=idx, column=9, value=entity_impacts[entity]) # Column I
1101
+
1102
+ # Update 'Значимые' sheet
1103
+ ws = wb['Значимые']
1104
+ row_idx = 3
1105
+ for _, row in df.iterrows():
1106
+ if row['Sentiment'] in ['Negative', 'Positive']:
1107
+ ws.cell(row=row_idx, column=3, value=row['Объект']) # Column C
1108
+ ws.cell(row=row_idx, column=4, value='релевантно') # Column D
1109
+ ws.cell(row=row_idx, column=5, value=row['Sentiment']) # Column E
1110
+ ws.cell(row=row_idx, column=6, value=row['Impact']) # Column F
1111
+ ws.cell(row=row_idx, column=7, value=row['Заголовок']) # Column G
1112
+ ws.cell(row=row_idx, column=8, value=row['Выдержки из текста']) # Column H
1113
+ row_idx += 1
1114
 
1115
+ # Copy 'Публикации' sheet
1116
+ original_df = pd.read_excel(uploaded_file, sheet_name='Публикации')
1117
+ ws = wb['Публикации']
1118
+ for r_idx, row in enumerate(dataframe_to_rows(original_df, index=False, header=True), start=1):
1119
+ for c_idx, value in enumerate(row, start=1):
1120
+ ws.cell(row=r_idx, column=c_idx, value=value)
1121
+
1122
+
1123
  # Update 'Анализ' sheet with modified translation handling
1124
  ws = wb['Анализ']
1125
  row_idx = 4
 
1140
  ws.cell(row=row_idx, column=9, value=row['Выдержки из текста'])
1141
  row_idx += 1
1142
 
1143
+ # Update 'Тех.приложение' sheet
1144
+ tech_df = df[['Объект', 'Заголовок', 'Выдержки из текста', 'Translated', 'Sentiment', 'Impact', 'Reasoning']]
1145
+ if 'Тех.приложение' not in wb.sheetnames:
1146
+ wb.create_sheet('Тех.приложение')
1147
+ ws = wb['Тех.приложение']
1148
+ for r_idx, row in enumerate(dataframe_to_rows(tech_df, index=False, header=True), start=1):
1149
+ for c_idx, value in enumerate(row, start=1):
1150
+ ws.cell(row=r_idx, column=c_idx, value=value)
1151
+
1152
 
1153
  output = io.BytesIO()
1154
  wb.save(output)
 
1163
  st.set_page_config(layout="wide")
1164
 
1165
  with st.sidebar:
1166
+ st.title("::: AI-анализ мониторинга новостей (v.3.61):::")
1167
  st.subheader("по материалам СКАН-ИНТЕРФАКС")
1168
 
1169
  model_choice = st.radio(