Algorytm generowania podsumowań

Jak Radar Informacji agreguje, klasyfikuje i podsumowuje wiadomości z sieci

[News DB] → [JSONL] → [Embedding] → [t-SNE/UMAP] → [HDBSCAN] → [GenAI Labels] → [GenAI Articles]
1

Pobieranie wiadomości

Codziennie system pobiera wiadomości ze stron internetowych. Dla każdego artykułu stosuje model językowy google/gemma-3-12b-it (lokalnie uruchomiony, Hugging Face) do wygenerowania podsumowania w języku polskim. Polaryzację (sentyment) detektuje model radlab/polarity-3c (Hugging Face). Rezultatem jest zestaw sformatowanych artykułów wraz z metadanymi (język, PLI, polaryzacja, źródło, URL).

2

Eksport do formatu JSONL

Pobrane artykuły są konwertowane do formatu JSONL — jedna linia na artykuł z dwoma głównymi polami: tekstem artykułu oraz metadanymi.

Pole Opis
text Podsumowanie artykułu wygenerowane przez model LLM
metadata.language Język rozpoznany dla artykułu
metadata.pli_value Wartość Plain Language Index (PLI) — indeks prostego języka
metadata.polarity_3c Polaryzacja w 3 klasach: positive, negative, ambivalent (model radlab/polarity-3c)
metadata.source URL głównej strony (domena źródłowa)
metadata.news_url Bezpośredni URL artykułu
3

Wektoryzacja (Embedding)

Każdy tekst jest konwertowany na wektor w 512-wymiarowej przestrzeni za pomocą modelu Sentence-Transformers (bi-encoder). Przed enkodowaniem teksty są przycinane do 508 tokenów (512 − 4 dla tokenów specjalnych). Encodowanie odbywa się partiami po 500 elementów z L2-normalizacją:

\(\vec{v}' = \frac{\vec{v}}{\|\vec{v}\|_2}\)
4

Redukcja wymiarowości

Wysokowywymiarowe wektory są redukowane do 2 wymiarów przy użyciu t-SNE (t-Distributed Stochastic Neighbor Embedding) z optymalizatorem Barnes-Hut lub alternatywnie UMAP. Redukcja umożliwia wizualizację i efektywniejsze klasteryzowanie w niskowymiarowej przestrzeni.

ParametrWartość
devicecuda (GPU)
embedder_patharticle-bi-encoder-20240901
reductiontsne (Barnes-Hut)
reducer_sim_metriccosine
use_reduced_datasettrue (klasteryzacja na zredukowanych wektorach 2D)
5

Klasteryzacja HDBSCAN*

Na zredukowanych wektorach uruchamiany jest algorytm HDBSCAN (Hierarchical Density-Based Spatial Clustering). System testuje 32 konfiguracje parametrów — od min_cluster_size=5 do 60 — i wybiera najlepszą kombinację hiperparametrów klastrowania metodą elbow selection:

  1. Odrzuca wyniki z liczbą klastrów spoza zakresu [min=25, opt=35, max=45]
  2. Wśród pozostałych wybiera najbliższy opt_cluster_count (35)
  3. W przypadku remisu — preferuje wynik z mniejszą liczbą punktów outlierowych (label -1)
ParametrWartość
methodhdbscan
metriceuclidean
min_samples1
min_cluster_size5–60 (32 wartości)
n_runs_per_param2
min_cluster_count25
opt_cluster_count35
max_cluster_count45
6

Generowanie etykiet (Label Generation)

Dla każdego klastra wygenerowana zostaje etykieta (tytuł) za pomocą modelu GenAI (LLM). Do generowania zostaje przekazana reprezentatywna próba newsów dla danej grupy. Model rozpoznaje wspólny temat i generuje krótki, zwięzły tytuł w języku polskim.

7

Generowanie artykułów podsumowujących

Dla każdego klastra generowany jest artykuł podsumowujący — syntetyczny tekst łączący informacje z wielu źródeł. Proces obejmuje:

  1. Przekazanie do modelu GenAI losowej próbki tekstów z klastra
  2. Generowanie syntetycznego artykułu (typ. ~700 znaków)
  3. Weryfikacja poprawności (check_spelling = true)

Każdy artykuł podsumowujący jest oznaczony metadanymi: dominantą polaryzacji (sentyment), liczbą artykułów, domeny źródłowe oraz wartość PLI.

8

Obliczanie podobnych dni (Similar Days)

Aby pokazać, które dni były podobne do bieżącego, system porównuje podsumowania klastrów między dniami za pomocą cosine similarity na wektorach wygenerowanych modelem article-bi-encoder-20240901. Dla każdego klastra znajduje top-4 najbardziej podobnych klastrów z poprzedniego/następnego dnia:

\(\text{sim}(\vec{a}, \vec{b}) = \frac{\vec{a} \cdot \vec{b}}{\|\vec{a}\| \|\vec{b}\|} = \frac{\sum_{i=1}^{n} a_i b_i}{\sqrt{\sum_{i=1}^{n} a_i^2} \sqrt{\sum_{i=1}^{n} b_i^2}}\)

Wzór oblicza kąt między dwoma wektorami — wynik 1 oznacza identyczny kierunek (maksymalna podobność), 0 — ortogonalność (brak podobieństwa).

Źródła implementacji