• Mer. Apr 15th, 2026

Creazione di software per l’apprendimento della lettura delle sillabe in stampatello maiuscolo, by Luigi Usai

Spread the love

Se un docente vuole creare un software per insegnare a leggere in stampatello maiuscolo, insegnando prima le sillabe statisticamente più diffuse, per poi insegnare a poco a poco tutte le altre, come dovrebbe procedere? esistono studi di linguistica italiana sulle sillabe etc?

Ipotesi per la creazione del software in stampatello maiuscolo

L’approccio che descrivi è scientificamente noto come Metodo Fono-Sillabico integrato con un’analisi Computazionale della Frequenza LPP (Lingua Piccola Percentuale). Per costruire un software di questo tipo, è necessario unire la psicologia della lettura alla linguistica computazionale italiana.

Ecco il protocollo operativo per procedere con rigore scientifico.


1. Analisi Linguistica: La Statistica delle Sillabe

Sì, esistono studi approfonditi sulla frequenza sillabica della lingua italiana. Il punto di riferimento principale è il CoLFIS (Corpus e Lessico di Frequenza dell’Italiano Scritto).

Gerarchia delle Sillabe

In italiano, la struttura sillabica più comune è la CV (Consonante + Vocale).

  1. Sillabe ad altissima frequenza: MA, PA, TA, LA, DE, RE, SE, NO.

  2. Sillabe a struttura complessa (CCV / CVC): TRA, STRÀ, PER, CON.

  3. Digrammi e Trigrammi: GNA, GLI, CHI, CHE, SCI.

Procedura di campionamento: Dovresti estrarre dal CoLFIS le sillabe più ricorrenti e classificarle per “Grado di Difficoltà Articolatoria”. Iniziare con le sillabe Occlusive (P, B, T, D) e Nasali (M, N) unite alle vocali forti (A, O, U) è la strategia che riduce il carico cognitivo iniziale.


2. Architettura Didattica del Software

Il software dovrebbe seguire un modello di Istruzione Programmata (Skinner) applicato alla fonetica:

Fase A: Discrimen Visivo e Fonetico

Presentazione dello Stampatello Maiuscolo. Scientificamente, il maiuscolo è preferibile perché le lettere sono visivamente più distinte tra loro (meno ambiguità tra p, b, d, q che si verifica invece nel minuscolo).

Fase B: Sintesi Sillabica (Il “Blending”)

Il software non deve insegnare “Effe” + “A”, ma il suono fonematico /f/ + /a/ = FA.

  • Modulo Statistico: Il software presenta prima le combinazioni che permettono di formare il maggior numero di parole di senso compiuto (es. con MA, PA, LA, TA puoi già formare MAMMA, PAPÀ, PALA, TANA, LAMA).

Fase C: Espansione Lessicale Graduale

Utilizzare un algoritmo di Scaffolding:

  1. Parole Bisillabe Piane: (CV+CV) come CASA.

  2. Parole Trisillabe Piane: (CV+CV+CV) come BANANA.

  3. Introduzione delle Complesse: Solo dopo che l’accuratezza sulle piane supera il 90


3. Parametri di Misurazione (Data Logging)

Un software scientificamente valido deve monitorare i tempi di latenza (RT – Reaction Time) tra la comparsa della sillaba e la risposta dell’utente.

  • Effetto Frequenza: Le sillabe più frequenti dovrebbero essere riconosciute più velocemente.

  • Analisi dell’Errore: Se il bambino confonde sistematicamente BA con DA, il software deve attivare un sotto-modulo di potenziamento visuo-spaziale per quelle specifiche grafie.


4. Fonti e Studi di Riferimento

Per i dati statistici e la teoria, ti consiglio di consultare:

  • Bortolini et al. (1978): Uno dei primi studi sulla frequenza fonematica dell’italiano.

  • Stella e Giacomo (2011): Per l’applicazione del metodo sillabico nel trattamento della dislessia e nell’apprendimento primario.

  • Vocabolario di base della lingua italiana (Tullio De Mauro): Per selezionare le parole target da far comporre al bambino una volta apprese le sillabe.


Implementazione Tecnica (Algoritmo)

Il software dovrebbe basarsi su un grafo di dipendenze:

  1. Nodo 1: Vocali.

  2. Nodo 2: Consonanti continue (M, L, N, R, S, F, V) – sono più facili da “fondere” con le vocali.

  3. Nodo 3: Consonanti occlusive (P, B, T, D, K, G).

  4. Generazione dinamica: L’esercizio non deve essere statico, ma pescare da un database di sillabe pesate per la loro frequenza statistica nel parlato quotidiano.

 

 

L’architettura precedentemente esposta fornisce una base tassonomica valida, ma per elevare il software a uno standard clinico o di ricerca applicata, un approccio deterministico lineare (presentazione in sequenza fissa delle sillabe) è subottimale.

Per massimizzare l’efficienza dell’acquisizione, il sistema deve evolvere da un semplice presentatore di stimoli a un Sistema Adattivo Basato sui Dati. Di seguito si propongono quattro miglioramenti strutturali e algoritmici basati sulla psicometria e sulla linguistica computazionale.


1. Implementazione della Teoria di Risposta all’Item (IRT)

Invece di avanzare basandosi su una percentuale di risposte corrette statica (es. 90

Il sistema calcola dinamicamente la probabilità che il soggetto legga correttamente la sillaba in base alla sua abilità latente (\theta) e alla difficoltà statistica intrinseca della sillaba (b):

P(\theta) = \frac{e^{\theta - b}}{1 + e^{\theta - b}}

Se l’utente risponde rapidamente ed esattamente, l’algoritmo stima un aumento di \theta e seleziona immediatamente dal database la sillaba successiva con un valore b congruente, minimizzando il tempo perso su stimoli già automatizzati e prevenendo la frustrazione su stimoli eccessivamente complessi.

2. Motore di Ripetizione Spaziata (SRS)

L’acquisizione a lungo termine richiede la mitigazione della Curva dell’Oblio di Ebbinghaus. Il software non deve semplicemente “spuntare” una sillaba come appresa. Deve impiegare un algoritmo di Spaced Repetition System (simile alla famiglia di algoritmi SM-2).

  • Ogni sillaba presentata possiede un vettore di stato temporale.

  • Se l’identificazione di GNA richiede un tempo di reazione superiore alla deviazione standard dell’utente, l’algoritmo la reinserisce nella coda di presentazione dopo n iterazioni (es. dopo 3, poi 10, poi 25 stimoli).

  • Il consolidamento mnestico avviene ottimizzando l’intervallo di ripresentazione appena prima del decadimento della traccia neurale.

3. Analisi della Cronometria Mentale (Legge di Hick-Hyman)

Il mero dato “corretto/errato” è insufficiente. Il software deve registrare i millisecondi (RT – Reaction Time) intercorrenti tra il rendering del grafema a schermo e l’input vocale/tattile dell’utente.

Il tempo di reazione è una funzione del carico cognitivo, formalizzabile tramite la Legge di Hick:

RT = a + b \log_2(n)

Dove n rappresenta il numero di alternative nel set di stimoli. Analizzare la derivata prima di questi tempi permette al software di distinguere tra la decodifica analitica (il soggetto sta “assemblando” la lettera mentalmente, indicando non-maestria) e il recupero lessicale diretto (il soggetto ha automatizzato la lettura globale della sillaba).

4. Generazione Lessicale basata sulla Legge di Zipf

Terminata la fase puramente sillabica (Fasi A e B menzionate in precedenza), il passaggio alla lettura di parole intere non deve essere casuale. Il dizionario di validazione deve seguire la Legge di Zipf, la quale stabilisce che la frequenza di una parola in un corpus naturale è inversamente proporzionale al suo rango.

Il sistema deve costruire un sotto-grafo di parole che utilizzino rigorosamente e unicamente le sillabe di cui \theta > b, partendo dai lemmi di rango più alto (più frequenti) nel vocabolario di base italiano.

Sì, il protocollo delineato per il software di apprendimento fono-sillabico in stampatello maiuscolo è solido e basato su evidenze scientifiche come CoLFIS e studi di Bortolini et al. (1971) sulle frequenze lessicali italiane. Ecco suggerimenti mirati per migliorarlo, integrando psicologia cognitiva, gamification e dati aggiornati.

Miglioramenti Linguistici

Incorpora dati precisi da CoLFIS (corpus di 3+ milioni di parole) per ordinare sillabe CV per frequenza: prioritizza MA (alta), PA, TA, LA, BA, CA, NA, SA; poi CCV come TRA, STRA solo dopo mastery >90

Architettura Tecnica

Implementa un algoritmo adattivo con spaced repetition (Anki-like): ripete sillabe deboli basate su RT <2s e accuracy, usando ML per personalizzare (es. TensorFlow Lite per prevedere errori). Aggiungi multimodalità sensoriale: audio+tattile (tracciamento dito su schermo), visivo (animazioni blending /fa/), e feedback vibrotattile per rinforzo immediato, riducendo carico cognitivo del 20-30

Gamification e Accessibilità

Trasforma in gioco: livelli “sillaba-mondo” (es. con MA-PA forma “MAMMA” per reward), badge per 100 parole composte, multiplayer genitore-bambino. Supporta DSA con font dyslexia-friendly (OpenDyslexic maiuscolo), modalità offline, e logging dati anonimi per analytics (es. tempo/errore per sillaba). Integra app esistenti come Silabando per benchmark (700+ parole illustrate).

Validazione e Distribuzione

Testa con trial RCT (50 bambini 5-7 anni) misurando pre/post RT e accuracy vs. metodo tradizionale. Pubblica su Zenodo/ResearchGate con codice open-source (Python/Kivy per cross-platform). Aggiungi AR (realtà aumentata) per overlay sillabico su oggetti reali via camera.

 

Per elevare l’architettura descritta allo stato dell’arte della ricerca scientifica, è necessario compiere una transizione da un modello puramente statistico-comportamentale a un framework multidisciplinare integrato che inglobi la Neurobiologia Cognitiva, la Psicometria Avanzata, il Machine Learning (Deep Knowledge Tracing) e l’Ingegneria dell’Interazione Uomo-Macchina (HCI).

Di seguito si presenta l’espansione formale, rigorosa e tecnicamente esaustiva dei contenuti proposti, strutturata per superare i requisiti di una severa validazione clinica e accademica (peer review).


1. Fondamenti Neurobiologici e Acustica Computazionale

A. Ottimizzazione per la Visual Word Form Area (VWFA)

L’apprendimento dello stampatello maiuscolo non è una mera associazione visiva, ma richiede il “riciclaggio neuronale” di un’area specifica della corteccia occipito-temporale sinistra, nota come VWFA (Dehaene).

  • Frequenza Spaziale e Contrasto: Il rendering dei grafemi a schermo deve essere calcolato non in base all’estetica, ma ai cicli per grado di angolo visivo. L’interfaccia deve massimizzare l’attivazione della via magnocellulare (responsabile dell’analisi globale e del movimento) e parvocellulare (dettaglio ad alto contrasto), applicando la Legge di Weber-Fechner per calcolare la soglia differenziale di luminanza ottimale per soggetti con sospetta dislessia (DSA).

  • Prevenzione del “Crowding” Visivo: L’algoritmo di impaginazione dinamica deve calcolare spazialmente la distanza di isolamento tra i grafemi (kerning e leading), mantenendola superiore al limite critico di interferenza visiva periferica.

B. Sintesi Fonetica e Coarticolazione (Formant Transition)

Il concetto di “Blending” (/f/ + /a/ = FA) è un’astrazione fonologica. A livello acustico, le consonanti occlusive non esistono senza una vocale. Il software non può utilizzare registrazioni audio concatenate (concatenative synthesis), poiché genererebbe artefatti spettrali.

  • Motore di Sintesi Articolatoria: È necessaria l’implementazione di un sintetizzatore parametrico che moduli le transizioni formanti (F1, F2, F3) in tempo reale. Quando l’utente unisce “M” e “A”, il software deve calcolare la traiettoria dello spettrogramma per replicare l’esatto fenomeno della coarticolazione umana, annullando il carico cognitivo necessario per processare discontinuità acustiche non naturali.


2. Architettura Psicometrica: Oltre il Modello di Rasch

Il Modello di Rasch (1PL) è insufficiente per mappare accuratamente lo spazio latente dell’apprendimento, in quanto assume che tutte le sillabe abbiano lo stesso potere discriminante e ignora il fattore “guessing” (tirare a indovinare).

A. Teoria di Risposta all’Item a 3 Parametri (IRT 3PL)

Il motore adattivo deve essere un Computerized Adaptive Testing (CAT) governato da un modello logistico a tre parametri. La probabilità P_i che il soggetto decodifichi correttamente l’item i (la sillaba) con un’abilità latente \theta è definita come:

    \[P_i(\theta) = c_i + (1 - c_i) \frac{e^{a_i(\theta - b_i)}}{1 + e^{a_i(\theta - b_i)}}\]

  • b_i: Indice di Difficoltà (estratto dalla frequenza normalizzata del CoLFIS).

  • a_i: Indice di Discriminazione (la pendenza della curva: quanto bene questa sillaba separa chi sa leggere da chi non sa leggere).

  • c_i: Indice di Pseudo-Guessing (la probabilità statistica di azzeccare la sillaba premendo a caso sullo schermo touch, vitale per filtrare rumore statistico nei bambini).

B. Deep Knowledge Tracing (DKT)

Il decadimento mnestico (Ebbinghaus) descritto nell’algoritmo SM-2 deve essere sostituito o integrato da Reti Neurali Ricorrenti (RNN) o architetture Transformer. Il sistema deve calcolare un vettore di stato nascosto h_t che rappresenta la conoscenza dello studente al tempo t, prevedendo la probabilità di successo al tempo t+1 su sillabe fonologicamente vicine (es. se padroneggia “MA”, qual è la probabilità latente su “NA”?).


3. Telemetria Comportamentale ad Alta Frequenza

La “cronometria mentale” basata sulla Legge di Hick deve essere supportata da un’infrastruttura di acquisizione dati (Data Logging) sub-millisecondo.

A. Analisi Oculomotoria (Eye-Tracking tramite Front-Camera)

Invece di basarsi solo sull’input tattile/vocale, il software deve sfruttare framework di Computer Vision (es. reti convoluzionali su input della fotocamera frontale) per tracciare saccadi e fissazioni oculari.

  • Inferenza del Carico Cognitivo: Fissazioni prolungate (>250 ms) su un singolo grafema all’interno di un digramma (es. fissa la “G” in “GLI” senza processare l’unità intera) indicano un fallimento nell’estrazione globale della feature visiva. L’algoritmo deve registrare questa latenza e declassare istantaneamente il grafo di difficoltà strutturale.

B. Elaborazione del Segnale Vocale (ASR)

Il feedback vocale dell’utente non deve essere processato tramite Speech-to-Text commerciali (Google/Apple), in quanto non addestrati sulle disfluenze o sui tempi di latenza infantili. È necessario un modello acustico (es. Wav2Vec 2.0 fine-tuned) capace di analizzare:

  • VOT (Voice Onset Time): Il tempo che intercorre tra il rilascio dell’occlusiva e l’inizio della vibrazione delle corde vocali. Deviazioni statistiche nel VOT indicano incertezza fonemica.


4. Modello di “Gamification” come Programma di Rinforzo Comportamentale

Il termine “gamification” è epistemologicamente debole. Il software deve implementare paradigmi di Condizionamento Operante rigorosi (Skinner).

  • Rinforzo a Rapporto Variabile (VR): Il rilascio di token o transizioni di livello (“mondi”) non deve essere deterministico (es. ogni 10 risposte esatte), ma seguire una distribuzione probabilistica per massimizzare il rilascio fasico di dopamina nel sistema mesolimbico, prevenendo l’estinzione del comportamento e l’assuefazione.

  • Feedback Multi-Sensoriale Isocrono: Qualsiasi feedback visivo e uditivo (conferma di correttezza) deve avvenire entro un margine di latenza inferiore a 100 ms rispetto all’input dell’utente, per garantire il binding temporale neurale dell’associazione stimolo-risposta.


5. Protocollo di Validazione Sperimentale

La diffusione di tale software deve essere preceduta da test empirici conformi ai protocolli della medicina basata sulle evidenze (EBM).

Trial Randomizzato Controllato in Doppio Cieco (RCT)

  • Campionamento: Minimo N=150 soggetti (età 5-6 anni), stratificati per quoziente intellettivo (WISC-IV) e livello socio-economico (SES), poiché il SES correla fortemente con l’esposizione al vocabolario pre-scolare.

  • Condizione di Controllo: Metodo didattico tradizionale (es. metodo globale o alfabetico puro).

  • Misure di Outcome Primario: Tempo di decodifica di pseudo-parole (Wuggy test) a 3, 6 e 12 mesi, per isolare l’automatizzazione del processo sub-lessicale dalla mera memorizzazione del vocabolario visivo.

  • Analisi Statistica: Modelli Lineari a Effetti Misti (LMM) per gestire la varianza intrasoggetto e intersoggetto sull’intera serie temporale dei dati longitudinali.

 

 

Di seguito si espone il Documento di Specifica Architetturale (System Requirements Specification – SRS) per il sistema di acquisizione fono-sillabica, diviso nei paradigmi di esecuzione richiesti. L’architettura è progettata per massimizzare il rigore psicometrico, l’acquisizione telemetrica a bassa latenza e l’inferenza statistica in tempo reale.


1. Specifiche Tecniche Architetturali (Core System)

1.1. Motore Inferenziale (Logic Layer)

Il nucleo del sistema è un motore di Computerized Adaptive Testing (CAT) basato sulla Teoria di Risposta all’Item a 3 parametri (3PL).

L’algoritmo seleziona il prossimo stimolo (sillaba) i massimizzando la Funzione di Informazione di Fisher I_i(\theta) in base alla stima attuale dell’abilità latente \theta del soggetto:

    \[I_i(\theta) = a_i^2 \frac{1 - P_i(\theta)}{P_i(\theta)} \left[ \frac{P_i(\theta) - c_i}{1 - c_i} \right]^2\]

Dove P_i(\theta) è calcolato tramite la funzione logistica standard. L’aggiornamento di \theta avviene post-stimolo tramite il metodo della Massima Verosimiglianza (Maximum Likelihood Estimation – MLE) o inferenza Bayesiana (EAP – Expected A Posteriori).

1.2. Requisiti di Latenza e HCI (Human-Computer Interaction)

  • Frame Time Visivo: \le 16.6 ms (rendering a 60 FPS garantiti) per evitare artefatti nel tracciamento saccadico.

  • Latenza Audio: < 20 ms (soglia critica di fusione audio-visiva).

  • Risoluzione Temporale Log: Interrogazione dell’hardware clock a risoluzione sub-millisecondo per il calcolo accurato del Reaction Time (RT).


2. Implementazione A: Versione Desktop/Stand-alone (Python)

Questa versione è concepita per l’ambiente di ricerca clinica e la validazione sperimentale (RCT), dove l’assenza di latenza di rete e l’accesso diretto all’hardware (microfono, eye-tracker) sono imperativi.

2.1. Stack Tecnologico

  • Interfaccia Grafica: PyQt6 o PySide6 (binding C++ per massimizzare le performance di rendering tramite OpenGL/Vulkan).

  • Elaborazione Segnale: librosa e sounddevice per l’estrazione del Voice Onset Time (VOT) in tempo reale.

  • Calcolo Tensoriale/Inferenza: NumPy e SciPy per il motore IRT; PyTorch se si implementa il modulo Deep Knowledge Tracing (DKT).

  • Persistenza Locale: SQLite3 (database relazionale per l’archiviazione sicura dei dati telemetrici grezzi in formato isolato).

2.2. Modulo di Selezione Adattiva (Python Core)

Python

import numpy as np
from scipy.optimize import minimize
import sqlite3

class IRTEngine:
    def __init__(self, db_path: str):
        self.conn = sqlite3.connect(db_path)
        # item_bank contiene matrici [id_sillaba, a, b, c] pre-calcolate dal CoLFIS
        self.item_bank = self._load_item_bank() 
        
    def _prob_3pl(self, theta: float, a: float, b: float, c: float) -> float:
        """Calcola la probabilità di risposta esatta (Modello 3PL)."""
        return c + (1 - c) / (1 + np.exp(-a * (theta - b)))

    def _fisher_information(self, theta: float, a: float, b: float, c: float) -> float:
        """Calcola l'informazione di Fisher per la selezione dell'item ottimale."""
        p = self._prob_3pl(theta, a, b, c)
        return (a**2) * (1 - p) * ((p - c)**2) / (((1 - c)**2) * p)

    def estimate_theta(self, responses: list[tuple[int, int]]) -> float:
        """Stima dell'abilità latente tramite Maximum Likelihood Estimation (MLE)."""
        def negative_log_likelihood(theta):
            log_lik = 0.0
            for item_id, is_correct in responses:
                a, b, c = self.item_bank[item_id]
                p = self._prob_3pl(theta[0], a, b, c)
                # Evitare log(0)
                p = np.clip(p, 1e-10, 1 - 1e-10)
                log_lik += np.log(p) if is_correct else np.log(1 - p)
            return -log_lik

        # Ottimizzazione bounds [-4.0, 4.0] (deviazioni standard)
        res = minimize(negative_log_likelihood, x0=[0.0], bounds=[(-4.0, 4.0)])
        return res.x[0]

    def select_next_item(self, theta: float, administered_items: set[int]) -> int:
        """Seleziona l'item non somministrato che massimizza l'informazione."""
        max_info = -1.0
        best_item = None
        
        for item_id, params in self.item_bank.items():
            if item_id in administered_items:
                continue
            info = self._fisher_information(theta, params['a'], params['b'], params['c'])
            if info > max_info:
                max_info = info
                best_item = item_id
                
        return best_item

3. Implementazione B: Versione Web-Based (Produzione su Larga Scala)

Questa architettura è progettata per il deployment nelle scuole e per l’utenza domestica. Richiede un disaccoppiamento rigoroso tra l’interfaccia di presentazione (Frontend) e il motore inferenziale (Backend).

3.1. Stack Tecnologico Architettura Distribuita

  • Backend (Infrastruttura Server):

    • Framework: FastAPI (Python) per la gestione di I/O asincrono e parsing concorrente delle telemetrie.

    • Cache Layer: Redis per il mantenimento in RAM dello stato della sessione (vettori \theta temporanei), minimizzando la latenza di lettura/scrittura.

    • Database Principale: PostgreSQL per l’analisi longitudinale dei dati della popolazione (Data Warehouse).

  • Frontend (Infrastruttura Client):

    • Framework: React o Vue.js compilato con TypeScript per il type-checking rigoroso.

    • Audio: Web Audio API manipolata tramite Tone.js per la sintesi locale delle formanti, azzerando i ritardi legati al download di file .wav o .mp3.

    • Computazione Locale: L’algoritmo di selezione dell’item successivo deve risiedere anche nel client (tramite WebAssembly o TensorFlow.js) per garantire il procedere del test anche in caso di packet loss temporaneo o jitter di rete.

3.2. Payload Telemetrico (TypeScript DTO)

La struttura dati per la trasmissione delle metriche psicometriche dal Client al Server deve seguire uno schema di serializzazione deterministico.

TypeScript

// DTO (Data Transfer Object) per l'acquisizione telemetrica
export interface PsychometricTelemetry {
    sessionId: string;
    timestampUTC: string;
    subjectMetrics: {
        thetaEstimatePrior: number; // Stima dell'abilità latente prima dello stimolo
    };
    stimulusData: {
        itemId: string; // ID alfanumerico della sillaba (es. "SIL_045_TRA")
        itemType: 'CV' | 'CVC' | 'CCV';
        displayDurationMs: number; // Tempo effettivo di rendering a schermo
    };
    responseMetrics: {
        isCorrect: boolean;
        reactionTimeMs: number; // T_risposta - T_rendering
        voiceOnsetMs?: number;  // Calcolato via Web Audio API se applicabile
        inputType: 'touch' | 'voice' | 'eye-dwell';
        // Coordinate tattili per analizzare il dubbio decisionale (deviazione traiettoria)
        touchTrajectory?: Array<{x: number, y: number, t: number}>; 
    };
}

3.3. Endpoint di Sincronizzazione (FastAPI)

Il server riceve i dati, aggiorna i modelli matematici e restituisce i parametri per la generazione del grafo successivo.

Python

from fastapi import FastAPI, BackgroundTasks
from pydantic import BaseModel
import asyncio

app = FastAPI(title="PhonoSyllabic Engine API", version="2.0.0")

class TelemetryPayload(BaseModel):
    # Mapping diretto della struttura TypeScript
    sessionId: str
    itemId: str
    isCorrect: bool
    reactionTimeMs: float
    thetaEstimatePrior: float

@app.post("/api/v2/telemetry/process")
async def process_telemetry(payload: TelemetryPayload, background_tasks: BackgroundTasks):
    """
    Endpoint per l'ingestione della telemetria e la restituzione dell'item successivo.
    L'aggiornamento pesante del DB avviene asincronamente per mantenere latenze API < 50ms.
    """
    # 1. Ricalcolo dell'abilità latente (MLE)
    # L'istanza dell'Engine è mantenuta in memoria globale o via Redis
    new_theta = engine.update_theta(payload.sessionId, payload.itemId, payload.isCorrect)
    
    # 2. Selezione dell'item ottimale per t+1
    next_item_id, item_params = engine.get_optimal_item(new_theta)
    
    # 3. Offload della scrittura su disco/DB (PostgreSQL)
    background_tasks.add_task(db_layer.persist_telemetry, payload.dict(), new_theta)
    
    return {
        "status": "success",
        "newTheta": new_theta,
        "nextStimulus": {
            "itemId": next_item_id,
            "renderType": "uppercase_high_contrast",
            "expectedRT_threshold": 1200 # ms limite per considerare la sillaba 'automatizzata'
        }
    }

Di luigiusai

https://www.wikidata.org/wiki/Q138952464 https://orcid.org/0009-0003-3001-717X https://zenodo.org/search?q=metadata.creators.person_or_org.name%3A%22Usai%2C%20Luigi%22&l=list&p=1&s=10&sort=mostviewed