Metadata-Version: 2.4
Name: ai-discourse-analyzer
Version: 0.1.0
Summary: Пакет для кластеризации, тематического моделирования и эмоционального анализа AI-дискурса в Telegram и других корпусах.
Author: Anna Chizhik
License: MIT
Project-URL: Homepage, https://github.com/Frantsuzova/ai-discourse-analyzer
Project-URL: Repository, https://github.com/Frantsuzova/ai-discourse-analyzer
Project-URL: Issues, https://github.com/Frantsuzova/ai-discourse-analyzer/issues
Keywords: nlp,corpus linguistics,topic modeling,emotion analysis,telegram,ai discourse,cluster analysis
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Text Processing :: Linguistic
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: pandas>=2.0
Requires-Dist: scikit-learn>=1.3
Requires-Dist: pymorphy3>=2.0
Requires-Dist: gensim>=4.3
Requires-Dist: umap-learn>=0.5
Requires-Dist: plotly>=5.20
Requires-Dist: sentence-transformers>=3.0
Requires-Dist: torch>=2.1
Requires-Dist: pacmap>=0.7
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Requires-Dist: ruff>=0.5; extra == "dev"
Dynamic: license-file

# ai-discourse-analyzer

**AIDA** — краткое имя пакета **AI Discourse Analyzer**.

`ai-discourse-analyzer` — это Python-пакет для корпусного анализа AI-дискурса в Telegram и других текстовых массивах со сходной структурой.

Пакет предназначен для задач, где требуется:
- тематическая кластеризация публикаций;
- извлечение устойчивых биграмм;
- детализация кластеров с помощью LDA;
- гибридная эмоциональная разметка;
- построение интерактивного HTML-отчёта.

## Основные возможности

- взвешенное объединение текста поста и агрегированных комментариев;
- лемматизация русского текста;
- построение биграмм;
- TF-IDF + SVD + KMeans для тематической кластеризации;
- LDA внутри кластеров;
- гибридная модель эмоционального анализа:
  - словарные признаки,
  - биграммы,
  - дискурсивные маркеры,
  - эмбеддинги RuBERT tiny,
  - word2vec;
- интерактивные визуализации и HTML-отчёт.

## Установка

### Установка из PyPI

```bash
pip install ai-discourse-analyzer
```

### Установка актуальной версии из GitHub

```bash
pip install git+https://github.com/Frantsuzova/ai-discourse-analyzer.git
```

## Проверка установки

```python
import ai_discourse_analyzer

print(ai_discourse_analyzer.__version__)
```

## Когда использовать пакет

Пакет можно использовать в двух режимах:

### 1. Как самостоятельный модуль
Если у вас есть корпус в формате JSONL, CSV или TSV и вы хотите получить тематическую и эмоциональную аналитику без дополнительных шагов предварительной обработки.

### 2. Как второй этап после базовой корпусной обработки
Пакет можно использовать как аналитическую надстройку после первичной кластеризации или подготовки корпуса в других инструментах, включая `corpus_cluster_explorer`.

## Формат входных данных

Пакет ориентирован на корпуса, где каждая запись содержит как минимум поле с основным текстом. Для Telegram-корпусов поддерживается схема:

```json
{
  "text": "Текст поста",
  "comments_text": "Агрегированный текст комментариев",
  "date_utc": "2026-01-01T12:00:00",
  "channel_username": "example_channel",
  "link": "https://t.me/example/123"
}
```

Единицей анализа выступает публикация, представленная:
- текстом поста;
- агрегированным текстом комментариев;
- с возможностью повышенного веса текста поста.

## Быстрый запуск

### Через CLI

```bash
aida-report social_data_ai_raw_2026.jsonl --output-dir outputs
```

### В Python

```python
from ai_discourse_analyzer.pipeline import DiscourseAnalyzer
from ai_discourse_analyzer.config import AnalysisConfig

config = AnalysisConfig()
analyzer = DiscourseAnalyzer(config=config)
result = analyzer.run("social_data_ai_raw_2026.jsonl", output_dir="outputs")
```

## Что создаётся на выходе

Пакет сохраняет:
- HTML-отчёт;
- таблицу по кластерам;
- таблицу LDA-подтем;
- таблицу эмоциональной разметки документов;
- координаты точек для интерактивной карты.

Пример структуры выходной директории:

```text
outputs/
├── final_ai_clusters_report.html
├── cluster_summary.csv
├── cluster_lda_topics.csv
├── document_emotions.csv
└── cluster_points.csv
```

## Методологическая логика

Анализ строится в несколько этапов:

1. предварительная очистка текста;
2. лемматизация и нормализация;
3. формирование биграмм;
4. построение тематических кластеров;
5. LDA-детализация кластеров;
6. гибридная эмоциональная классификация;
7. генерация итогового HTML-отчёта.

Эмоциональная разметка трактуется не как диагностика состояния автора, а как классификация доминирующего эмоционального регистра текста.

## Для чего пакет не предназначен

Пакет не предназначен для:
- психологической диагностики авторов;
- извлечения «истинных» эмоций говорящего;
- production-grade sentiment analysis без адаптации под конкретный корпус.

## Лицензия

MIT
