Conversione fra JSON Lines (JSONL) e vettori JSON
Converte in entrambi i sensi fra il formato JSON Lines, che dispone un oggetto JSON per riga, e il consueto vettore JSON. Comodo per gli insiemi di dati dell'apprendimento automatico e per l'esame dei registri.
Consigli per l'uso
- Il formato JSON Lines dispone su ciascuna riga un oggetto JSON indipendente ed è adottato come standard negli insiemi di dati per la messa a punto dei modelli e nelle uscite di registro di piattaforme come Elasticsearch e Logstash.
- Nella modalità che porta da JSONL a vettore, ogni riga deve essere un oggetto JSON analizzabile per conto proprio. Le righe vuote sono saltate automaticamente.
- Nella modalità inversa, l'intera immissione deve costituire un unico vettore JSON, nella forma `[ ... ]`; ciascun elemento del vettore è prodotto su una riga di JSONL.
- Convertendo in vettore JSON un registro voluminoso in JSONL, lo si potrà trattare più agevolmente con il comando jq o con gli analizzatori JSON standard dei linguaggi di programmazione.
Domande frequenti
A proposito — perché è nato il formato «un elemento per riga»
Il formato JSON Lines nasce da un limite del consueto vettore JSON: finché non lo si è letto tutto in memoria e analizzato per intero, non se ne può estrarre nemmeno un elemento. Trattando come vettore JSON registri di milioni di righe o insiemi di dati per l'addestramento, occorreva caricare in memoria l'intero file, con problemi di memoria insufficiente e di tempi di analisi crescenti.
JSON Lines risolve la questione con un vincolo semplicissimo: una riga, un oggetto JSON compiuto. Si può leggere il file riga per riga analizzando via via, senza caricarlo tutto in memoria: una caratteristica che si sposa perfettamente con l'elaborazione in flusso continuo e con quella parallela. Questa impostazione si accorda anche con la tradizionale cultura testuale dei sistemi Unix, dove una riga è un elemento e i comandi come grep, awk e sed lavorano riga per riga: da qui il notevole vantaggio pratico di potersi innestare direttamente negli strumenti a riga di comando esistenti.
Oggi il formato è largamente adottato per la distribuzione degli insiemi di dati nel campo dell'intelligenza artificiale: i dati di addestramento dei grandi modelli linguistici e le coppie di richiesta e risposta per la messa a punto sono ormai comunemente distribuiti in JSON Lines.