Vai al contenuto
Accedi
riassuntosuddivisione in blocchiconversazioni lungheesportazione WhatsApppipeline AIconservazione del contestotrascrizione messaggi vocali

Come riassumere conversazioni WhatsApp da 5000 messaggi

Come ThreadRecap divide e unisce conversazioni WhatsApp da 5,000+ messaggi per conservare decisioni, azioni e nomi, riducendo il rumore di fondo.

Di André Daniel3 mag 20267 min di lettura
In questo articolo

Una chat WhatsApp di 5.000 messaggi non è semplicemente una conversazione lunga. È mesi di decisioni sepolte sotto centinaia di saluti, cambi di argomento che avvengono nel mezzo di una conversazione, messaggi vocali sparsi tra i testi e lo stesso nome di progetto scritto in tre modi diversi da tre persone diverse. Chiedere a un'AI di riassumerla in un solo passaggio è come chiedere a qualcuno di leggere un romanzo attraverso il buco della serratura. Il risultato sarà sicuro, fluido e sbagliato in modi difficili da individuare. Questo articolo spiega cosa succede davvero dietro le quinte quando ThreadRecap elabora una conversazione di questa dimensione: come viene misurato il testo, dove viene diviso, come si mantiene la coerenza tra una parte e l'altra e cosa la pipeline conserva deliberatamente rispetto a ciò che comprime.

Cosa significano "5.000+ messaggi" in token

Prima che possa avvenire qualsiasi riassunto, l'esportazione grezza va misurata nell'unità che interessa davvero ai modelli linguistici: il token. I token non sono parole. Una singola parola inglese vale in media da 1 a 1,5 token, ma punteggiatura, marcatori temporali, nomi dei mittenti e caratteri non latini contribuiscono tutti al conteggio.

Una tipica riga di esportazione di WhatsApp appare così:

Recupera migliaia di messaggi non letti in pochi minuti.

Analizza la tua chat
12/04/2024, 09:47 - Maria: Possiamo spostare la scadenza a venerdì?

Quel singolo messaggio, incluso il marcatore temporale e il prefisso del mittente che WhatsApp aggiunge a ogni riga, occupa circa 15-20 token. Moltiplicando per 5.000 messaggi si arriva a circa 75.000-100.000 token per una conversazione con messaggi di lunghezza media. Le conversazioni con messaggi più lunghi, più lingue o contenuti tecnici densi possono superare facilmente i 150.000 token.

La maggior parte dei modelli linguistici in produzione ha finestre di contesto pratiche comprese tra 8.000 e 200.000 token. Anche al limite superiore, un'esportazione molto grande non entra in un unico passaggio, e il fatto che ci stia non significa che il risultato sia buono. La ricerca sul riassunto di contesti lunghi mostra in modo costante che i modelli perdono coerenza man mano che l'input si allunga, in particolare per i contenuti che compaiono al centro di una sequenza lunga. Il conteggio dei token non è solo un problema di capacità. È un problema di qualità.

ThreadRecap gestisce esportazioni di 75.000+ messaggi, quindi la pipeline deve funzionare correttamente a dimensioni molto superiori a quelle che una singola chiamata al modello può elaborare in modo affidabile.

Il chunking ingenuo e perché perde coerenza

La soluzione più semplice al problema dei token è dividere la chat in blocchi di dimensione fissa e riassumere ciascuno in modo indipendente. Si chiama chunking ingenuo e produce riassunti localmente accurati ma globalmente incoerenti.

Il motivo è questo. Le conversazioni non rispettano confini arbitrari. Una decisione che inizia al messaggio 1.200 potrebbe non essere confermata fino al messaggio 1.450. Un nome di progetto introdotto all'inizio della conversazione potrebbe essere abbreviato in modo diverso già al messaggio 3.000. Un compito assegnato in un blocco potrebbe essere aggiornato, annullato o riassegnato nel blocco successivo. Se ogni blocco viene riassunto senza sapere cosa c'è negli altri, questi collegamenti si spezzano.

La fase di unione è dove il chunking ingenuo fallisce nel modo più evidente. Se riassumi 10 blocchi in modo indipendente e poi concateni i riassunti, ottieni 10 mini-riassunti che non sanno l'uno dell'altro. Il documento finale ripeterà entità, si contraddirà su questioni già risolte e perderà l'arco di come una decisione si è evoluta. Il risultato sembra un riassunto ma funziona come un elenco di appunti scollegati.

Una modalità di errore collegata è il taglio netto dei confini. Se un blocco finisce a metà di un argomento, il riassuntore di quel blocco o tronca l'argomento o inventa una conclusione. Nessuna delle due opzioni è accettabile per una conversazione che potrebbe servire in seguito come registro di ciò che è stato concordato.

Come ThreadRecap divide e unisce per preservare il contesto

ThreadRecap usa una pipeline a più fasi che affronta sia il problema dei confini sia quello dell'unione.

Fase 1: analisi strutturata prima della divisione

Prima di stabilire qualsiasi confine tra i blocchi, l'esportazione viene analizzata in record strutturati. Ogni messaggio riceve il suo marcatore temporale, il nome del mittente, il tipo di messaggio (testo, trascrizione di messaggio vocale, evento di sistema) e un punteggio preliminare di rilevanza. Questo passaggio di punteggio segnala i messaggi che contengono schemi ad alta rilevanza: impegni espliciti, domande rivolte a destinatari nominati, riferimenti a importi o date e frasi che aprono un argomento. I messaggi ad alta rilevanza diventano punti di ancoraggio che i confini dei blocchi non tagliano.

I messaggi vocali vengono trascritti con i modelli di trascrizione di OpenAI prima di questa fase. La trascrizione viene inserita nel record del messaggio nella posizione cronologica corretta, così la pipeline la tratta esattamente come un messaggio di testo. L'accuratezza varia in base al rumore di fondo, all'accento e alle condizioni di registrazione, e le clip chiare sono abbastanza affidabili da essere incluse nell'estrazione delle entità e nel rilevamento delle decisioni.

Fase 2: suddivisione con finestra di sovrapposizione

I blocchi non vengono creati semplicemente contando i token e tagliando. Ogni blocco viene costruito con una coda sovrapposta del blocco precedente, di solito con la parte finale del segmento precedente. Questa sovrapposizione fa sì che un argomento introdotto vicino alla fine del blocco N sia visibile all'inizio del blocco N+1. Il riassuntore del blocco N+1 dispone quindi del contesto necessario per proseguire correttamente l'argomento, invece di trattarlo come un nuovo filo di discorso.

Questo approccio a finestra scorrevole è una tecnica consolidata nell'elaborazione di documenti lunghi. La sovrapposizione aggiunge un costo in token, ma evita le interruzioni nette che rendono inaffidabile il chunking ingenuo.

Fase 3: unione ricorsiva con un registro di entità in aggiornamento

Ogni blocco produce un riassunto intermedio più un estratto strutturato: un elenco di entità nominate (persone, aziende, date, importi, nomi di progetti), azioni aperte e decisioni prese all'interno di quel blocco. Questi estratti strutturati non sono prosa. Sono record leggibili dalla macchina, che vengono passati avanti a ogni blocco successivo e alla fase di unione finale.

La fase di unione non è una semplice concatenazione dei riassunti intermedi. È una nuova chiamata al modello che riceve tutti i riassunti intermedi insieme al registro delle entità accumulato e all'elenco delle voci aperte. Il prompt di unione chiede al modello di risolvere le contraddizioni, chiudere le azioni completate e produrre un'unica narrazione coerente che copra l'intera conversazione. Talvolta viene descritto come un approccio in stile MapReduce: si mappa ogni blocco in un riassunto parziale, poi si riducono tutti i riassunti parziali in un risultato finale con piena consapevolezza dei collegamenti tra i blocchi.

Il risultato è un unico riepilogo strutturato, la cui forma si adatta a ciò che la conversazione contiene, più una cronologia. Per un formato specifico, come un elenco di azioni con responsabili e scadenze o un elenco di decisioni, si chiede alla chat di approfondimento sulla stessa conversazione, come descritto nella pagina della funzione riassuntore di chat WhatsApp di ThreadRecap.

Per uno sguardo più ampio su ciò che questo tipo di analisi strutturata può far emergere oltre a un semplice riepilogo, vedi gli approfondimenti che puoi ricavare da una chat WhatsApp.

Dove il contesto viene preservato

Non tutti i contenuti vengono trattati allo stesso modo. La pipeline è progettata per proteggere categorie specifiche di informazioni dalla compressione in ogni fase.

Decisioni

Ogni messaggio che contiene una decisione confermata viene segnalato nell'estratto strutturato e riportato alla lettera nel registro delle entità. La fase di unione finale è istruita a mantenere ogni decisione, indipendentemente da dove compare nella conversazione. Una decisione presa nel blocco 2 comparirà nel riassunto finale anche se non viene più menzionata nei blocchi da 3 a 10.

Azioni

Le azioni vengono estratte con tre campi: la descrizione del compito, la persona assegnata (se nominata) e la scadenza (se indicata). Le azioni aperte vengono riportate a ogni blocco successivo, così la fase di unione può verificare se sono state completate, aggiornate o abbandonate. Un'azione assegnata nel blocco 1 e completata nel blocco 7 comparirà nel risultato finale come completata, non come un compito aperto dimenticato.

Entità nominate

Persone, organizzazioni, nomi di progetti, luoghi, date e importi vengono tracciati nel registro delle entità fin dal primo blocco. Questo evita che il riassunto finale si riferisca alla stessa persona con due nomi diversi, o tratti lo stesso progetto come due argomenti separati perché l'abbreviazione è cambiata a metà conversazione.

Continuità degli argomenti

I messaggi di ancoraggio ad alta rilevanza individuati nella Fase 1 vengono inclusi nella finestra di sovrapposizione e nel prompt di unione. Questo significa che, anche quando un argomento attraversa più blocchi, il modello che elabora i blocchi successivi ha accesso a come l'argomento è stato introdotto, non solo al suo stato attuale.

Dove viene compresso

Conservare tutto produrrebbe un riassunto lungo quanto la conversazione originale. La pipeline applica una compressione deliberata ai contenuti che aggiungono volume senza aggiungere valore informativo.

Saluti e conferme

"Buongiorno", "ok", "grazie mille", "ci penso io", "perfetto" e simili conferme sociali vengono compresse. In una conversazione di 5.000 messaggi possono rappresentare centinaia di messaggi. Nessuno di questi modifica il registro di ciò che è stato deciso o concordato.

Controlli ripetuti

Un gruppo che si incontra ogni settimana su WhatsApp avrà spesso sequenze ricorrenti di aggiornamenti: "Novità?", "Niente da parte mia", "Lo stesso qui". Questi schemi vengono rilevati e rappresentati una sola volta nel riassunto, come nota che i controlli periodici ci sono stati, invece di essere trascritti per intero.

Reazioni con emoji

Le esportazioni di WhatsApp includono gli eventi di reazione come righe separate. Un pollice alzato su un messaggio aggiunge una riga all'esportazione ma non ha contenuto informativo autonomo. Queste righe vengono eliminate prima della fase di suddivisione.

Contenuti duplicati

I messaggi inoltrati, i link ricondivisi e i contenuti copiati e incollati che compaiono più di una volta nella conversazione vengono deduplicati. La prima occorrenza viene conservata; le occorrenze successive vengono annotate come riferimenti se compaiono in un contesto diverso.

Riempitivi sociali a bassa rilevanza

I riempitivi conversazionali che hanno una funzione sociale ma non informativa, come lunghi scambi di emoji, descrizioni di GIF ed eventi di adesivi, vengono rimossi prima di calcolare il conteggio dei token per la suddivisione. Questo riduce il carico effettivo di token e concentra l'attenzione del modello sui contenuti sostanziali.

La logica di compressione è il motivo per cui il risultato è leggibile. Una conversazione grezza di 5.000 messaggi potrebbe richiedere due ore per essere scorsa. Il riassunto strutturato dovrebbe richiedere da cinque a dieci minuti di lettura e contenere ogni informazione che conta per il registro.

Una nota sulla privacy

Il flusso di esportazione e caricamento significa che tieni il file in mano prima che venga inviato qualsiasi dato. Foto e documenti allegati alla chat non lasciano mai il tuo dispositivo, e i file video non vengono mai caricati: dal video, il tuo browser estrae la traccia audio e invia solo quella. Il testo della chat e l'audio vengono caricati per l'elaborazione. Questi contenuti sono archiviati in forma cifrata nel tuo account, e puoi eliminarli in qualsiasi momento dalla dashboard.

Questo conta soprattutto per le conversazioni lunghe. Una chat di gruppo di 5.000 messaggi nata da un progetto di lavoro o da una controversia familiare può contenere informazioni sensibili. Sapere con precisione cosa esce dal tuo dispositivo e cosa no non è un dettaglio secondario.

Per approfondire come affrontare il riassunto di conversazioni cresciute troppo per essere gestite a mano, consulta la guida su cosa fare quando la tua chat WhatsApp è troppo lunga per essere riassunta.

Limiti pratici e compromessi onesti

La pipeline descritta qui gestisce il problema della coerenza in modo molto migliore del chunking ingenuo. Non elimina del tutto gli errori di riassunto. Vale la pena dichiarare alcuni vincoli concreti.

Primo, la qualità del riassunto finale dipende dalla qualità dei riassunti intermedi. Se un blocco contiene contenuti molto ambigui, l'estratto strutturato di quel blocco potrebbe perdere una decisione o attribuire male un'azione. La fase di unione non può recuperare informazioni che non sono state catturate nella fase intermedia.

Secondo, le conversazioni molto lunghe con molti argomenti sovrapposti, un gran numero di partecipanti e frequenti cambi di tema sono più difficili da riassumere rispetto alle conversazioni lineari su un progetto. Il registro delle entità aiuta, ma una conversazione in cui 20 persone discutono di 15 filoni di lavoro simultanei produrrà un risultato più denso e complesso rispetto a una conversazione in cui 4 persone seguono un unico progetto.

Terzo, la qualità dei messaggi vocali influisce sull'accuratezza della trascrizione. L'audio chiaro si trascrive bene, ma rumore di fondo, accenti marcati o voci sovrapposte riducono l'accuratezza. Confronta la trascrizione di ogni clip su cui pensi di fare affidamento con l'audio originale.

Queste non sono ragioni per evitare di riassumere conversazioni lunghe. Sono ragioni per trattare il risultato come un punto di partenza strutturato da rivedere, e non come un documento finale che non richiede alcuna verifica, soprattutto per usi legali o di conformità.

Se stai lavorando per la prima volta con una conversazione lunga e vuoi capire l'intera gamma di risultati disponibili, riassumere le chat di WhatsApp con l'AI illustra il flusso completo in modo più dettagliato.

Salta lo scorrimento. Ottieni il riepilogo.

Carica l'esportazione del gruppo e scopri cosa è successo, chi lo ha detto e a cosa devi rispondere.

Analizza la tua chat