Μεθοδολογία

Πώς συλλέγουμε, καθαρίζουμε και αναλύουμε τα ελληνικά Μέσα. Οι βασικές μετρήσεις είναι αναπαράξιμες και εξηγήσιμες· τα embeddings και τα LLM παράγωγα δηλώνονται ως ξεχωριστό επίπεδο εμπλουτισμού.

ΠΗΓΕΣ & ΣΥΛΛΟΓΗ

Οι ενεργές πηγές εμφανίζονται δυναμικά στη σελίδα «Πηγές» και περιλαμβάνουν εφημερίδες, τηλεοπτικούς σταθμούς, πρακτορεία και ψηφιακά Μέσα. Τα δεδομένα αντλούνται από δημόσια RSS feeds και sitemaps.

Κάθε άρθρο συνοδεύεται από πηγή, κατηγορία, ημερομηνία δημοσίευσης, σύνδεσμο και αριθμό λέξεων. Η δημόσια εγκατάσταση λειτουργεί ως χρονοσημασμένο στιγμιότυπο δεδομένων, όχι ως υπόσχεση συνεχούς ζωντανής ροής.

ΕΞΑΓΩΓΗ ΚΕΙΜΕΝΟΥ

Το κυρίως κείμενο εξάγεται με trafilatura — bare_extraction με metadata. Πριν περάσει στην επεξεργασία γίνονται έλεγχοι: Content-Type, μέγιστο μέγεθος (2 MB), δυαδικά bytes (anti-bot γκαρμπάζ), ελάχιστο μήκος (200 χαρακτήρες).

Ο αποδυναμωμένος ή απενεργοποιημένος τίτλος του sitemap αναπληρώνεται από το trafilatura.

ΥΒΡΙΔΙΚΗ ΕΠΕΞΕΡΓΑΣΙΑ — ΕΞΗΓΗΣΙΜΗ ΠΡΩΤΑ

Οι βασικοί δείκτες — όγκος, πηγές, υπογραφές, χρονισμός και συγκέντρωση — είναι ντετερμινιστικοί και αναπαράγονται από SQL. Τα AI παράγωγα εμφανίζονται ως ξεχωριστό επίπεδο εμπλουτισμού και δεν υποκαθιστούν τα πρωτογενή στοιχεία.

Λέξεις-κλειδιά: TF-IDF πάνω σε προσαρμοσμένο ελληνικό tokenizer και stopword list.

Οντότητες (PERSON, ORG, LOCATION): rule-based NER με ελληνικά λεξικά + pattern matching.

Σημασιολογικό επίπεδο: τοπικά embeddings αποθηκεύονται σε pgvector και χρησιμοποιούνται για ομοιότητα ιστοριών και θεματική μοντελοποίηση με KMeans.

LLM εμπλουτισμός: τοπικό Ollama χρησιμοποιείται επιλεκτικά για στάση απέναντι σε πρόσωπα. Η κάλυψη του δείγματος εμφανίζεται μαζί με το αποτέλεσμα ώστε να μην παρουσιάζεται ένα μερικό label ως καθολικό.

Ο ερευνητικός agent είναι απομονωμένος από το βασικό API, χρησιμοποιεί εργαλεία ανάγνωσης και διαθέτει ξεχωριστές αξιολογήσεις και παρατηρησιμότητα μέσω Langfuse. Στο δημόσιο demo παραμένει απενεργοποιημένος για έλεγχο κόστους και πρόσβασης.

Κατηγοριοποίηση: κανόνες (keyword maps) ανά κατηγορία — Πολιτική, Οικονομία, Αθλητισμός, Πολιτισμός, Κοινωνία, Διεθνή, Τεχνολογία, Τουρισμός.

CROSS-GROUP ECHOES

Η σελίδα «Ηχώ» εντοπίζει story clusters των οποίων τα μέλη προέρχονται από πηγές ≥ 2 διαφορετικών ομίλων ιδιοκτησίας. Δεν είναι ένδειξη συνωμοσίας — είναι ποσοτική μέτρηση κάλυψης πέρα από εκδοτικές οικογένειες.

Οι όμιλοι ιδιοκτησίας τεκμηριώνονται από έρευνα της Solomon και whoownsthemedia.gr (στοιχεία Οκτωβρίου 2024). Όπου η σχέση δεν επιβεβαιώνεται, το άρθρο σημειώνεται ως «Ανεξάρτητη / Άγνωστο».

DEDUPLICATION

Δύο στρώματα ελέγχου διπλοτύπων: (α) URL — μετά από κανονικοποίηση που αφαιρεί παραμέτρους tracking (utm_*, fbclid, κ.λπ.) και (β) hash του κανονικοποιημένου σώματος (SHA-256). Άρθρα που εμφανίζονται σε ≥ 2 πηγές αποθηκεύονται ξεχωριστά (διαφορετικό URL/πηγή) αλλά ομαδοποιούνται μέσω clustering.

ΑΠΟΘΗΚΕΥΣΗ

PostgreSQL 16 με partitioning ανά μήνα στον πίνακα articles, pgvector/HNSW για σημασιολογική αναζήτηση, TSVECTOR/GIN για full-text search και pg_trgm για fuzzy αναζήτηση.

Materialized views για ημερήσιες στατιστικές και trending keywords — refresh μη-αυτόματο, ανά ζήτηση.

ΓΝΩΣΤΕΣ ΑΔΥΝΑΜΙΕΣ

Το NER δεν είναι τέλειο — μπορεί να εξάγει στοιχεία πλοήγησης (μενού, headers) ως «οντότητες» όταν το trafilatura δεν φιλτράρει τέλεια.

Η κατηγοριοποίηση είναι κανονιστική — δεν εντοπίζει υβριδικά θέματα.

Τα cluster topics είναι top-1 keyword — όχι αυτόματα δημιουργημένη περίληψη.

Η ανάλυση στάσης καλύπτει επιλεγμένες οντότητες και όχι όλο το αρχείο. Τα ποσοστά πρέπει πάντα να διαβάζονται μαζί με το πλήθος των άρθρων που αναλύθηκαν.

ΤΕΧΝΟΛΟΓΙΕΣ

SCRAPER
Python · requests · trafilatura
WORKER
Python · RQ · custom NER
DATABASE
PostgreSQL 16 · pgvector · pg_trgm
API
FastAPI · asyncpg
FRONTEND
Nuxt 3 · Tailwind v4 · @nuxt/ui
QUEUE
Redis 7
AI / EVALS
Ollama · agent tools · Langfuse