Sopperire alle insufficienze linguistiche dei lettori su Web

Posted on 10 ottobre 2008

4


In questo post abbozzo un articolo su come implementare strumenti di authoring che permettano di pubblicare testi maggiormente accessibili a lettori che soffrono di disabilità cognitive (che sono le carenze meno affrontate da WAI e simili).

La lettura di un testo potrebbe risultare difficile a tutti coloro che possiedono insufficienze e carenze linguistiche (stranieri che stanno studiando l’italiano, disabili, persone anziane o giovanissime, persone non esperte dell’argomento trattato).

Più in generale le principali difficoltà cognitive che la lettura di un testo comporta sono:

  1. Difficoltà semantiche e di sintesi: capire il significato di una frase e ricondurla ad una serie di concetti di base.
  2. Difficoltà di analisi: capire concetti astratti, linguaggio figurato e locuzioni.
  3. Difficoltà nel seguire calcoli, confronti tra cifre o valute e indicazioni temporali (dati numerici).
  4. Difficoltà nel disambiguare parole omofone, frasi gergali o significati nascosti.
  5. Difficoltà nel riconoscere a cosa si riferiscono impliciti grammaticali.
  6. Difficoltà nel memorizzare parti precedenti del discorso.

Dall’elenco di queste difficoltà deduco una serie di possibili approcci (idee di massima) per la semplificazione di un testo:

  1. Identificare all’interno della frase (o isolare in un abstract separato) soggetti, verbi e complementi.
  2. Proporre (in contemporanea o come unica alternativa) una spiegazione analitica di frasi figurate, concetti astratti e locuzioni.
  3. Proporre (in contemporanea o come unica alternativa) una spiegazione di calcoli, indicazioni temporali, confronti tra cifre o valute.
  4. Identificare all’interno della frase o in parallelo la categoria grammaticale o logica di parole ambigue.
  5. Esplicitare tutti gli impliciti; risolvere (in contemporanea o come unica alternativa) i pronomi.
  6. E’ probabile che le tecniche precedenti aiutino la memorizzazione? Le frasi sarebbero già ridotte al loro concetto di base, gli impliciti sarebbero già esplicitati, i pronomi sarebbero sostituiti con ciò cui si riferiscono.

Tali approcci prevedono la possibilità di fornire al lettore disabile una seconda variante del testo originale; per trovare diffusione presso coloro che generano contenuti dovrei fare in modo che il contenuto alternativo si componga automaticamente a partire dall’originale.
Per quanto riguarda invece la lettura di pagine Web mi vengono in mente i seguenti approcci:

  1. Spiegare la funzione delle diverse parti “funzionali” o “interattive” del browser (quali ad esempio le barre di scorrimento).
  2. Spiegare la funzione delle diverse parti “interattive” del sito e isolarle per bene dalle parti funzionali del browser (home del sito, che non è la home del browser).
  3. Ridistribuire il contenuto della pagina secondo schemi più immediati (testo al centro, ad esempio).
  4. Affiancare delle icone alle parti funzionali della pagina e delle fotografie alle parti contenutistiche.
  5. Permettere la lettura audio del contenuto testuale o di singole parti.


Altre possibili idee:

  • Tra i diversi meccanismi che danno orgine a nuove parole il WAI ha deciso di identificarne 2: l’acronimo e l’abbreviazione. Ne restano fuori apocope (prof, mini, demo), incrocio (brunch), riderivazione (forzitalioto o altre analogie) e conversione (sostantivazione di un verbo).
  • Indicare gli scopi di ogni frase con una label: narrazione, constatazione, descrizione, norma, dialogo diretto, informazione, domanda, ordine, necessità, offerta, promessa…
  • E’ possibile identificare il tipo di lessico specialistico che si intende usare? Giuridico , finanziario, economico-aziendale, poetico-figurato, documentazione tecnica… Sto quasi parlando dello scopo del testo, mi rendo conto… ancora una volta, pragmatica linguistica.

Permettere all’utente la scelta del testo semplificato.

Tutti questi approcci contengono un minimo comune denominatore: il testo di più facile comprensione è in realtà il testo più ricco di dati e informazioni, ovvero quello nel quale appaiono spiegazioni estese, etichette o icone di rinforzo, esplicitazioni altrimenti non necessarie, eccetera.
La mia proposta consiste dunque nel corredare il testo (Web) di contenuti aggiuntivi ed esplicativi (vedremo poi). Per evitare che questo arricchimento del testo risulti fastidioso alle persone che non necessitano di informazioni aggiuntive (e desiderano invece processare il contenuto con le proprie abilità di interpretazione) occorre taggare in modo appropriato tutto ciò che viene aggiunto al testo “originale” e mostrare questi tag solamente quando l’utente richiede una lettura semplificata.

Una volta che il codice XHTML presenta tutti i tag necessari è difatti possibile gestire la loro visibilità mediante il CSS: un mini-menù permetterebbe all’utente di scegliere il grado di semplicità del testo così come già si fa per la dimensione dei caratteri o per il colore di base del sito. Eventuali cookie potrebbero tenere traccia della scelta fatta (cosa che, se si standardizzasse de facto, potrebbe diventare cross-browser).

icone di esempio per la scelta della dimensione del testo e del grado di ausilio alla lettura

icone di esempio per la scelta della dimensione del testo e del grado di ausilio alla lettura

Seguendo il grado di semplicità, quindi, lo stesso testo potrebbe presentare in sequenza questi diversi contenuti (la numerazione segue quella dell’elenco dei principali approcci identificati in precedenza; le parole in italico identificano azioni che verrano spiegate di seguito):

  1. Frasi originali >> identificazione di soggetti, verbi e complementi >> estrazione in un abstract separato di soggetti, verbi e complementi.
  2. Frasi astratte e figurate originali >> spiegazione parallela del linguaggio figurato >> presenza della sola spiegazione analitica.
  3. Calcoli, timex e cifre originali >> spiegazione parallela dei dati numerici >> presenza della sola spiegazione dei dati numerici.
  4. Parole originali >> identificazione di sostantivi, aggettivi, avverbi, eccetera >> spiegazione parallela delle parole o delle frasi ambigue della frase >> presenza della sola spiegazione dei pronomi (e introduzione degli elementi impliciti.
  5. Frasi originali >> spiegazione parallela dei pronomi e introduzione degli elementi impliciti.
  6. Per il problema della memorizzazione va studiato se le soluzioni precedenti intervengono anche in questo campo.
  7. Nessun aiuto all’uso del browser >> apparizione di box contenenti indicazioni su come navigare.
  8. Nessun aiuto alla navigazione >> apparizione di box contenenti indicazioni su come leggere e usare la pagina.
  9. Testo distribuito secondo la sua posizione originale >> ridistribuzione del contenuto in posizioni maggiormente significative.

Qui di seguito tratto le tecniche cui ho pensato per implementare (astraendole) le azioni presentate qui sopra in italico:

A – identificazione di X;
B – spiegazione parallela di X;
C – presenza del solo X;
D – estrazione in un abstract di X;
E – apparizione di box contenenti X;
F – ridistribuzione di X.


Azione A:
POS Tagger

Strumenti di tagging automatico di un testo appena redatto potrebbero introdurre nel codice XHTML una serie di tag (o, meglio, di classi e identificativi) utili al CSS: se vengono identificati soggetti, azioni e complementi del testo (o anche sostantivi, aggettivi, pronomi, eccetera) è possibile dar loro colori, “peso”, title e dimensioni specifici e ben codificati, così da facilitare l’identificazione della loro funzione. Occorre studiare un codice di comunicazione che sia efficace.

Azioni B e C:
Ruby text

Permette brevi annotazioni o l’indicazione della pronuncia di un testo. Prende il nome dal font di 5.5 punti utilizzato nella stampa britannica. Se si vogliono raggruppare più elementi si può simulare una tabella con i tag rbc e rtc.
Un esempio di codice:

<p>Questo testo contiene delle <ruby><rb>abbr.</rb><rp>
(</rp><rt>abbreviazioni</rt><rp>)</rp></ruby>, degli
acronimi (tipo <ruby><rb>WWW</rb><rp> (</rp><rt>World
Wide Web</rt><rp>)</rp></ruby>) e anche del linguaggio
figurato, qualche cosa <ruby><rb>che buchi lo schermo</rb><rp>
(</rp><rt>che impressioni il lettore positivamente</rt><rp>)</rp>
</ruby>.</p>

Si tratta dunque di un sistema di “coesistenza parallela” di due gradi diversi di esplicitazione del senso. Mediante il ruby text si può scegliere se mostrare al lettore il contenuto più criptico, la sola spiegazione oppure entrambi, insieme, una sull’altro. Quest’ultimo caso potrebbe essere particolarmente apprezzato dai lettori di lingua straniera che non vogliono rinunciare all’apprendimento di nuove formule e nuovi modi di dire ma che necessitano comunque di un aiuto alla prima comprensione.
L’esplicitazione del testo non può avvenire in automatico; sarà necessario l’intervento del redattore. E’ tuttavia possibile intervenire in automatico nel caso delle espressioni temporali e, forse, nel caso dei calcoli più semplici: il POS tagger di cui al punto precedente potrebbe implementare un sistema di timex in grado di convertire un’espressione nella data (e ora) corrispondente.

Azione D:
JavaScript

Alla fine della pagina (in chiaro oppure inserito in un include tipo <script language=”JavaScript” type=”text/javascript” src=”include/creaSommario.js”></script>):

var p = document.createElement("P");
var t = document.createTextNode('Sommario dei paragrafi che compongono questa pagina:');
p.className = "lapalisse";
p.id = "lapalisseSommario";
p.appendChild(t);
document.getElementById("sommarioInt").appendChild(p);
function getTxtFromH(el) {
var text = "";
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 3)
text += i.data; // aggiungo il testo trovato;
else if (i.firstChild != null)
text += getTxtFromH(i); // controllo gli eventuali altri nodi;
} // chiudo ciclo for;
return text;
} // chiudo la funzione;
function parseNode(el) {
for (var i = 0; i < el.childNodes.length; i++) {
var ichild = el.childNodes[i];
var reg = /[hH]([3-6])/;
if (ichild.tagName == "SCRIPT")
break;
if (ichild.nodeType == 1) {
if (reg.exec(ichild.tagName)) {
var d = document.createElement("div");
var p = document.createElement("p");
if (ichild.id == "")
ichild.id = "gen" + i;
var a = document.createElement("a");
a.href = "#" + ichild.id;
a.appendChild(document.createTextNode(getTxtFromH(ichild)));
p.appendChild(a);
d.appendChild(p);
d.className = "level" + parseInt(RegExp.$1);
document.getElementById('sommarioInt').appendChild(d);
} // chiudo la regexp
} // chiudo la condizione nodeType == 1;
if (ichild.hasChildNodes()) {
parseNode(ichild);
} // chiudo chiamata ricorsiva se ichild ha figli a sua volta;
} // chiudo ciclo for;
} // chiudo la funzione;
parseNode(document.getElementsByTagName("body")[0]);

Azione E:
Visibility di un DIV (ora non trovo un buon codice sotto mano: me lo segno quando mi capita).

Azione F:
CSS Zen Garden

Creative Commons License
NLP Projects by Samuel Zarbock are licensed under a Creative Commons Attribuzione-Non commerciale-Non opere derivate 2.5 Italia License.

Advertisements