pys.data_collection.news_processor package
Submodules
pys.data_collection.news_processor.event_detector module
- class pys.data_collection.news_processor.event_detector.EventDetector
Bases:
objectКласс для обнаружения событий в новостях
- assess_event_impact(df, sentiment_column='sentiment_compound')
Оценка влияния событий на основе настроения и типа события
- Parameters:
df (pd.DataFrame) -- DataFrame с обнаруженными событиями
sentiment_column (str) -- Название колонки с оценкой настроения
- Returns:
DataFrame с добавленной оценкой влияния событий
- Return type:
pd.DataFrame
- create_event_time_series(df, date_column='date')
Создание временного ряда событий
- Parameters:
df (pd.DataFrame) -- DataFrame с обнаруженными событиями
date_column (str) -- Название колонки с датой
- Returns:
DataFrame с ежедневной агрегацией событий
- Return type:
pd.DataFrame
- detect_events(df, text_column='clean_text')
Обнаружение событий в новостях
- Parameters:
df (pd.DataFrame) -- DataFrame с новостями
text_column (str) -- Название колонки с текстом для анализа
- Returns:
DataFrame с добавленными колонками событий
- Return type:
pd.DataFrame
pys.data_collection.news_processor.keywords module
Keywords for sentiment analysis of Russian financial news
pys.data_collection.news_processor.news_feature_extractor module
- class pys.data_collection.news_processor.news_feature_extractor.NewsFeatureExtractor
Bases:
objectКласс для извлечения признаков из новостей
- create_time_series_features(daily_sentiment_df, window_sizes=[3, 7, 14])
Создание признаков временных рядов из ежедневных данных о настроениях
- Parameters:
daily_sentiment_df (pd.DataFrame) -- DataFrame с ежедневными настроениями
window_sizes (list) -- Список размеров окон для скользящих статистик
- Returns:
DataFrame с добавленными признаками временных рядов
- Return type:
pd.DataFrame
- create_topic_features(df, text_column='clean_text', n_topics=5)
Создание признаков на основе тем для всех новостей в DataFrame
- Parameters:
df (pd.DataFrame) -- DataFrame с новостями
text_column (str) -- Название колонки с текстом для анализа
n_topics (int) -- Количество тем для извлечения
- Returns:
DataFrame с добавленными признаками тем
- Return type:
pd.DataFrame
- extract_keyword_mentions(text, keywords)
Извлечение упоминаний ключевых слов из текста
- Parameters:
text (str) -- Текст для анализа
keywords (list) -- Список ключевых слов для поиска
- Returns:
Словарь {keyword: count} с количеством упоминаний каждого ключевого слова
- Return type:
dict
- extract_topics_lda(texts, n_topics=5, n_top_words=10)
Извлечение тем из коллекции текстов с помощью LDA
- Parameters:
texts (list) -- Список текстов для анализа
n_topics (int) -- Количество тем для извлечения
n_top_words (int) -- Количество ключевых слов для каждой темы
- Returns:
(lda_model, vectorizer, document_topics, topic_keywords)
- Return type:
tuple
pys.data_collection.news_processor.news_integration module
- class pys.data_collection.news_processor.news_integration.NewsIntegration(resample_rule='1D', sma_window=20, ema_window=20, rsi_window=14, bb_window=20, atr_window=14, stoch_window=14, adx_window=14, cci_window=20)
Bases:
objectКласс для интеграции новостных данных с моделями прогнозирования
- convert_news_to_views(news_features_df, market_returns, risk_aversion=2.5)
Конвертация новостных сигналов в мнения инвесторов для модели Блека-Литермана
- Parameters:
news_features_df (pd.DataFrame) -- DataFrame с признаками новостей
market_returns (dict) -- Словарь {ticker: expected_return} с историческими доходностями
risk_aversion (float) -- Коэффициент неприятия риска
- Returns:
Словарь {ticker: (expected_return, confidence)} с мнениями инвесторов
- Return type:
dict
- create_ml_features(combined_df, target_column='close', prediction_horizon=5)
Создание признаков для моделей ML на основе объединенных данных
- Parameters:
combined_df (pd.DataFrame) -- Объединенный DataFrame с ценами и новостными признаками
target_column (str) -- Название колонки с целевой переменной (обычно цена закрытия)
prediction_horizon (int) -- Горизонт прогнозирования (в днях)
- Returns:
DataFrame с признаками для ML
- Return type:
pd.DataFrame
- merge_news_with_price_data(news_features_df, price_df, date_column='date')
Объединение новостных признаков с ценовыми данными
- Parameters:
news_features_df (pd.DataFrame) -- DataFrame с признаками новостей
price_df (pd.DataFrame) -- DataFrame с ценовыми данными
date_column (str) -- Название колонки с датой
- Returns:
Объединенный DataFrame
- Return type:
pd.DataFrame
pys.data_collection.news_processor.news_preprocessor module
- class pys.data_collection.news_processor.news_preprocessor.NewsPreprocessor(base_dir, use_nltk=True)
Bases:
objectКласс для очистки и предобработки новостных данных
- clean_text(text)
Очистка текста новостей от специальных символов, ссылок и emoji
- Parameters:
text (str) -- Исходный текст новости
- Returns:
Очищенный текст
- Return type:
str
- process_all_tickers(tickers=None, save=True)
Обработка новостей для всех указанных тикеров
- Parameters:
tickers (list) -- Список тикеров. Если None, будут обработаны все тикеры в директории
save (bool) -- Сохранять ли результат в файл
- Returns:
Словарь {ticker: DataFrame} с обработанными новостями для каждого тикера
- Return type:
dict
- process_news_file(file_path, save=True)
Обработка одного файла с новостями
- Parameters:
file_path (str) -- Путь к файлу с новостями
save (bool) -- Сохранять ли результат в файл
- Returns:
DataFrame с обработанными новостями
- Return type:
pd.DataFrame
- process_ticker_news(ticker, save=True)
Обработка всех файлов новостей для конкретного тикера
pys.data_collection.news_processor.news_visualizer module
- class pys.data_collection.news_processor.news_visualizer.NewsVisualizer(output_dir=None)
Bases:
objectКласс для визуализации новостных данных
- create_news_dashboard(news_df, sentiment_ts, ticker, save=False, use_plotly=True)
Создание дашборда с результатами анализа новостей
- Parameters:
news_df (pd.DataFrame) -- DataFrame с новостями и результатами анализа
sentiment_ts (pd.DataFrame) -- DataFrame с временным рядом настроений
ticker (str) -- Тикер компании для заголовка
save (bool) -- Сохранять ли дашборд в файл
use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)
- Returns:
Словарь с объектами графиков
- Return type:
dict
- plot_event_distribution(df, ticker, save=False, use_plotly=True)
Визуализация распределения типов событий
- Parameters:
df (pd.DataFrame) -- DataFrame с обнаруженными событиями
ticker (str) -- Тикер компании для заголовка
save (bool) -- Сохранять ли график в файл
use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)
- Returns:
Объект графика
- Return type:
go.Figure или plt.Figure
- plot_sentiment_by_event_type(df, ticker, save=False, use_plotly=True)
Визуализация распределения настроений по типам событий
- Parameters:
df (pd.DataFrame) -- DataFrame с обнаруженными событиями и настроениями
ticker (str) -- Тикер компании для заголовка
save (bool) -- Сохранять ли график в файл
use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)
- Returns:
Объект графика
- Return type:
go.Figure или plt.Figure
- plot_sentiment_distribution(df, ticker, save=False, use_plotly=True)
Визуализация распределения настроений
- Parameters:
df (pd.DataFrame) -- DataFrame с настроениями
ticker (str) -- Тикер компании для заголовка
save (bool) -- Сохранять ли график в файл
use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)
- Returns:
Объект графика
- Return type:
go.Figure или plt.Figure
- plot_sentiment_time_series(sentiment_ts, ticker, save=False, use_plotly=True)
Визуализация временного ряда настроений
- Parameters:
sentiment_ts (pd.DataFrame) -- DataFrame с временным рядом настроений
ticker (str) -- Тикер компании для заголовка
save (bool) -- Сохранять ли график в файл
use_plotly (bool) -- Использовать ли Plotly (иначе Matplotlib)
- Returns:
Объект графика
- Return type:
go.Figure или plt.Figure
- visualize_events(ticker, news_with_events, daily_events, output_dir)
Визуализация событий для пайплайна новостей
- Parameters:
ticker (str) -- Тикер компании
news_with_events (pd.DataFrame) -- DataFrame с новостями и событиями
daily_events (pd.DataFrame) -- DataFrame с ежедневными событиями
output_dir (str) -- Директория для сохранения
- visualize_sentiment(ticker, news_with_sentiment, daily_sentiment, output_dir)
Визуализация настроений для пайплайна новостей
- Parameters:
ticker (str) -- Тикер компании
news_with_sentiment (pd.DataFrame) -- DataFrame с новостями и настроениями
daily_sentiment (pd.DataFrame) -- DataFrame с ежедневными настроениями
output_dir (str) -- Директория для сохранения
pys.data_collection.news_processor.sentiment_analysis module
- class pys.data_collection.news_processor.sentiment_analysis.SentimentAnalyzer(use_vader=True, language='english')
Bases:
objectКласс для анализа настроений в новостях
- analyze_news_dataframe(df, text_column='clean_text')
- analyze_stock_impact(text, ticker=None)
- analyze_text(text, ticker=None)
- analyze_text_advanced_ru(text, ticker=None)
- analyze_text_simple_ru(text)
- analyze_text_vader(text)
- analyze_ticker_news(news_df, save_path=None)
- create_daily_sentiment_series(analyzed_df)
- set_cbr_meetings(meeting_dates)