Spaces:
Running
Running
Commit ·
7b14387
1
Parent(s): a25369d
3.46
Browse files
app.py
CHANGED
|
@@ -20,20 +20,19 @@ from tenacity import retry, stop_after_attempt, wait_exponential
|
|
| 20 |
from typing import Optional
|
| 21 |
from deep_translator import GoogleTranslator
|
| 22 |
from googletrans import Translator as LegacyTranslator
|
|
|
|
| 23 |
from transformers import (
|
| 24 |
-
pipeline,
|
| 25 |
-
AutoModelForSeq2SeqLM,
|
| 26 |
-
AutoTokenizer
|
| 27 |
-
AutoModelForCausalLM # Added as alternative
|
| 28 |
)
|
| 29 |
|
| 30 |
-
|
| 31 |
class FallbackLLMSystem:
|
| 32 |
def __init__(self):
|
| 33 |
"""Initialize fallback models for event detection and reasoning"""
|
| 34 |
try:
|
| 35 |
# Initialize MT5 model (multilingual T5)
|
| 36 |
-
self.model_name = "google/mt5-small"
|
| 37 |
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
|
| 38 |
self.model = AutoModelForSeq2SeqLM.from_pretrained(self.model_name)
|
| 39 |
|
|
@@ -217,7 +216,6 @@ def process_file(uploaded_file, model_choice, translation_method=None):
|
|
| 217 |
try:
|
| 218 |
df = pd.read_excel(uploaded_file, sheet_name='Публикации')
|
| 219 |
llm = init_langchain_llm(model_choice)
|
| 220 |
-
fallback_llm = FallbackLLMSystem() # Initialize fallback system
|
| 221 |
translator = TranslationSystem(batch_size=5)
|
| 222 |
|
| 223 |
# Initialize all required columns first
|
|
@@ -326,7 +324,7 @@ def process_file(uploaded_file, model_choice, translation_method=None):
|
|
| 326 |
|
| 327 |
except Exception as e:
|
| 328 |
st.error(f"❌ Ошибка при обработке файла: {str(e)}")
|
| 329 |
-
return
|
| 330 |
|
| 331 |
def translate_reasoning_to_russian(llm, text):
|
| 332 |
template = """
|
|
@@ -725,7 +723,7 @@ def create_output_file(df, uploaded_file, llm):
|
|
| 725 |
return output
|
| 726 |
def main():
|
| 727 |
with st.sidebar:
|
| 728 |
-
st.title("::: AI-анализ мониторинга новостей (v.3.
|
| 729 |
st.subheader("по материалам СКАН-ИНТЕРФАКС ")
|
| 730 |
|
| 731 |
|
|
@@ -783,32 +781,50 @@ def main():
|
|
| 783 |
uploaded_file = st.sidebar.file_uploader("Выбирайте Excel-файл", type="xlsx", key="unique_file_uploader")
|
| 784 |
|
| 785 |
if uploaded_file is not None and st.session_state.processed_df is None:
|
| 786 |
-
|
| 787 |
-
|
| 788 |
-
|
| 789 |
-
|
| 790 |
-
|
| 791 |
-
|
| 792 |
-
|
| 793 |
-
|
| 794 |
-
|
| 795 |
-
|
| 796 |
-
|
| 797 |
-
|
| 798 |
-
|
| 799 |
-
|
| 800 |
-
|
| 801 |
-
|
| 802 |
-
|
| 803 |
-
|
| 804 |
-
|
| 805 |
-
|
| 806 |
-
|
| 807 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 808 |
|
| 809 |
-
analysis_df = create_analysis_data(st.session_state.processed_df)
|
| 810 |
-
st.subheader("Анализ")
|
| 811 |
-
st.dataframe(analysis_df)
|
| 812 |
|
| 813 |
|
| 814 |
output = create_output_file(st.session_state.processed_df, uploaded_file, llm)
|
|
|
|
| 20 |
from typing import Optional
|
| 21 |
from deep_translator import GoogleTranslator
|
| 22 |
from googletrans import Translator as LegacyTranslator
|
| 23 |
+
import torch
|
| 24 |
from transformers import (
|
| 25 |
+
pipeline,
|
| 26 |
+
AutoModelForSeq2SeqLM,
|
| 27 |
+
AutoTokenizer
|
|
|
|
| 28 |
)
|
| 29 |
|
|
|
|
| 30 |
class FallbackLLMSystem:
|
| 31 |
def __init__(self):
|
| 32 |
"""Initialize fallback models for event detection and reasoning"""
|
| 33 |
try:
|
| 34 |
# Initialize MT5 model (multilingual T5)
|
| 35 |
+
self.model_name = "google/mt5-small"
|
| 36 |
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
|
| 37 |
self.model = AutoModelForSeq2SeqLM.from_pretrained(self.model_name)
|
| 38 |
|
|
|
|
| 216 |
try:
|
| 217 |
df = pd.read_excel(uploaded_file, sheet_name='Публикации')
|
| 218 |
llm = init_langchain_llm(model_choice)
|
|
|
|
| 219 |
translator = TranslationSystem(batch_size=5)
|
| 220 |
|
| 221 |
# Initialize all required columns first
|
|
|
|
| 324 |
|
| 325 |
except Exception as e:
|
| 326 |
st.error(f"❌ Ошибка при обработке файла: {str(e)}")
|
| 327 |
+
return None
|
| 328 |
|
| 329 |
def translate_reasoning_to_russian(llm, text):
|
| 330 |
template = """
|
|
|
|
| 723 |
return output
|
| 724 |
def main():
|
| 725 |
with st.sidebar:
|
| 726 |
+
st.title("::: AI-анализ мониторинга новостей (v.3.46):::")
|
| 727 |
st.subheader("по материалам СКАН-ИНТЕРФАКС ")
|
| 728 |
|
| 729 |
|
|
|
|
| 781 |
uploaded_file = st.sidebar.file_uploader("Выбирайте Excel-файл", type="xlsx", key="unique_file_uploader")
|
| 782 |
|
| 783 |
if uploaded_file is not None and st.session_state.processed_df is None:
|
| 784 |
+
try:
|
| 785 |
+
st.session_state.processed_df = process_file(
|
| 786 |
+
uploaded_file,
|
| 787 |
+
model_choice,
|
| 788 |
+
translation_method='auto'
|
| 789 |
+
)
|
| 790 |
+
|
| 791 |
+
if st.session_state.processed_df is not None:
|
| 792 |
+
# Show preview with safe column access
|
| 793 |
+
st.subheader("Предпросмотр данных")
|
| 794 |
+
preview_columns = ['Объект', 'Заголовок']
|
| 795 |
+
if 'Sentiment' in st.session_state.processed_df.columns:
|
| 796 |
+
preview_columns.append('Sentiment')
|
| 797 |
+
if 'Impact' in st.session_state.processed_df.columns:
|
| 798 |
+
preview_columns.append('Impact')
|
| 799 |
+
|
| 800 |
+
preview_df = st.session_state.processed_df[preview_columns].head()
|
| 801 |
+
st.dataframe(preview_df)
|
| 802 |
+
|
| 803 |
+
# Show monitoring results
|
| 804 |
+
st.subheader("Предпросмотр мониторинга событий и риск-факторов эмитентов")
|
| 805 |
+
if 'Event_Type' in st.session_state.processed_df.columns:
|
| 806 |
+
monitoring_df = st.session_state.processed_df[
|
| 807 |
+
(st.session_state.processed_df['Event_Type'] != 'Нет') &
|
| 808 |
+
(st.session_state.processed_df['Event_Type'].notna())
|
| 809 |
+
][['Объект', 'Заголовок', 'Event_Type', 'Event_Summary']].head()
|
| 810 |
+
|
| 811 |
+
if len(monitoring_df) > 0:
|
| 812 |
+
st.dataframe(monitoring_df)
|
| 813 |
+
else:
|
| 814 |
+
st.info("Не обнаружено значимых событий для мониторинга")
|
| 815 |
+
|
| 816 |
+
# Create analysis data
|
| 817 |
+
analysis_df = create_analysis_data(st.session_state.processed_df)
|
| 818 |
+
st.subheader("Анализ")
|
| 819 |
+
st.dataframe(analysis_df)
|
| 820 |
+
|
| 821 |
+
else:
|
| 822 |
+
st.error("Ошибка при обработке файла")
|
| 823 |
+
|
| 824 |
+
except Exception as e:
|
| 825 |
+
st.error(f"Ошибка при обработке файла: {str(e)}")
|
| 826 |
+
st.session_state.processed_df = None
|
| 827 |
|
|
|
|
|
|
|
|
|
|
| 828 |
|
| 829 |
|
| 830 |
output = create_output_file(st.session_state.processed_df, uploaded_file, llm)
|