Spaces:
Running
Running
Commit
·
4864457
1
Parent(s):
e3e54f2
3.49
Browse files
app.py
CHANGED
@@ -484,35 +484,52 @@ def analyze_sentiment(text):
|
|
484 |
|
485 |
|
486 |
def detect_events(llm, text, entity):
|
487 |
-
template = """
|
488 |
-
Проанализируйте следующую новость о компании "{entity}" и определите наличие следующих событий:
|
489 |
-
1. Публикация отчетности и ключевые показатели (выручка, прибыль, EBITDA)
|
490 |
-
2. События на рынке ценных бумаг (погашение облигаций, выплата/невыплата купона, дефолт, реструктуризация)
|
491 |
-
3. Судебные иски или юридические действия против компании, акционеров, менеджеров
|
492 |
-
|
493 |
-
Новость: {text}
|
494 |
-
|
495 |
-
Ответьте в следующем формате:
|
496 |
-
Тип: ["Отчетность" или "РЦБ" или "Суд" или "Нет"]
|
497 |
-
Краткое описание: [краткое описание события на русском языке, не более 2 предложений]
|
498 |
"""
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
response = chain.invoke({"entity": entity, "text": text})
|
503 |
-
|
504 |
event_type = "Нет"
|
505 |
summary = ""
|
506 |
|
507 |
try:
|
508 |
-
|
509 |
-
if
|
510 |
-
|
511 |
-
|
512 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
513 |
except Exception as e:
|
514 |
st.warning(f"Ошибка при анализе событий: {str(e)}")
|
515 |
-
|
516 |
return event_type, summary
|
517 |
|
518 |
def fuzzy_deduplicate(df, column, threshold=50):
|
@@ -762,7 +779,7 @@ def create_output_file(df, uploaded_file, llm):
|
|
762 |
return output
|
763 |
def main():
|
764 |
with st.sidebar:
|
765 |
-
st.title("::: AI-анализ мониторинга новостей (v.3.
|
766 |
st.subheader("по материалам СКАН-ИНТЕРФАКС ")
|
767 |
|
768 |
|
|
|
484 |
|
485 |
|
486 |
def detect_events(llm, text, entity):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
487 |
"""
|
488 |
+
Detect events in news text. This function works with both API-based LLMs and local models.
|
489 |
+
"""
|
490 |
+
# Initialize default return values
|
|
|
|
|
491 |
event_type = "Нет"
|
492 |
summary = ""
|
493 |
|
494 |
try:
|
495 |
+
# Handle API-based LLMs (Groq, GPT-4, Qwen)
|
496 |
+
if hasattr(llm, 'invoke'):
|
497 |
+
template = """
|
498 |
+
Проанализируйте следующую новость о компании "{entity}" и определите наличие следующих событий:
|
499 |
+
1. Публикация отчетности и ключевые показатели (выручка, прибыль, EBITDA)
|
500 |
+
2. События на рынке ценных бумаг (погашение облигаций, выплата/невыплата купона, дефолт, реструктуризация)
|
501 |
+
3. Судебные иски или юридические действия против компании, акционеров, менеджеров
|
502 |
+
|
503 |
+
Новость: {text}
|
504 |
+
|
505 |
+
Ответьте в следующем формате:
|
506 |
+
Тип: ["Отчетность" или "РЦБ" или "Суд" или "Нет"]
|
507 |
+
Краткое описание: [краткое описание события на русском языке, не более 2 предложений]
|
508 |
+
"""
|
509 |
+
|
510 |
+
prompt = PromptTemplate(template=template, input_variables=["entity", "text"])
|
511 |
+
chain = prompt | llm
|
512 |
+
response = chain.invoke({"entity": entity, "text": text})
|
513 |
+
|
514 |
+
response_text = response.content if hasattr(response, 'content') else str(response)
|
515 |
+
|
516 |
+
if "Тип:" in response_text and "Краткое описание:" in response_text:
|
517 |
+
type_part, summary_part = response_text.split("Краткое описание:")
|
518 |
+
event_type_temp = type_part.split("Тип:")[1].strip()
|
519 |
+
# Validate event type
|
520 |
+
valid_types = ["Отчетность", "РЦБ", "Суд", "Нет"]
|
521 |
+
if event_type_temp in valid_types:
|
522 |
+
event_type = event_type_temp
|
523 |
+
summary = summary_part.strip()
|
524 |
+
|
525 |
+
# Handle local MT5 model
|
526 |
+
else:
|
527 |
+
# Assuming llm is FallbackLLMSystem instance
|
528 |
+
event_type, summary = llm.detect_events(text, entity)
|
529 |
+
|
530 |
except Exception as e:
|
531 |
st.warning(f"Ошибка при анализе событий: {str(e)}")
|
532 |
+
|
533 |
return event_type, summary
|
534 |
|
535 |
def fuzzy_deduplicate(df, column, threshold=50):
|
|
|
779 |
return output
|
780 |
def main():
|
781 |
with st.sidebar:
|
782 |
+
st.title("::: AI-анализ мониторинга новостей (v.3.49):::")
|
783 |
st.subheader("по материалам СКАН-ИНТЕРФАКС ")
|
784 |
|
785 |
|