Post on 01-May-2015
Informatica Umanistica CDocente: Roberto Zamparelliemail: roberto.zamparelli@lett.unitn.it
Un corso di introduzione alla codifica digitale dei testi.
Orari
Due orari in alternativa (a scelta libera, salvo sbilanciamenti)
1. Giovedi, 10-12 (C1)2. Venerdì, 14-16 (C2) Ricevimento studenti: giovedì 12.00-
14.00 Esercitazioni nel laboratorio
informatico (3 orari a scelta)
Ricevimento studenti
Presso gli uffici di via Sighele 7,
(L’ufficio è sul lato sin. del palazzo arrivando da via Sighele)
Esercitazioni Lab 1 Lun 14:00-16:00, lab multimediale 1
(docente: Paolo Massa; calendario: 25/02-05/05, eccetto periodo pasquale)
Lab 2 Mar 10:00-12:00, lab multimediale 1(docente: M.Grosselle; calendario: 26/02-6/05, eccetto periodo pasquale)
Lab 2 Gio 10:00-12:00, lab multimediale 1(docente: M.Napolitano; calendario: 28/02-13/03, 03/04-24/04, 08/05-22/05)
Contenuti del corso (1)
Testi, da ASCII a UNICODE:Codifica di basso livello (gio28/02+ven)
1. Dagli editor di testo alla codifica di alto livello (gio6/03+ven)
2. Marcatura XML: aspetti generali (gio13/03+ven)
3. Marcatura XML: DTD (gio03/04+ven)
4. Marcatura XML: esempi (gio10/03+ven)
Contenuti del corso (2)
6. Da definire (gio17/4+ven)
7. Altri formati di presentazione del testo (PDF, ecc.) (gio24/4+ven)
8. Compressione e criptazione (gio01/05,ven)
9. Testi on-line: basi dati e ricerche (gio8/05,ven)
10. Aspetti sociali del web (gio15/05,ven)
(NB: i contenuti possono essere soggetti a variazioni)
Esame Esame: date e modalità sono nel sito
http://people.lett.unitn.it/zamparelli/
Frequentanti: orale con discussione di un progetto xml/xsl Non frequentanti: orali con discussione di un
progetto HTML e qualche domanda teorica.N.B. La scelta di presentarsi all’esame come
frequentanti o non frequentanti riguarda i corsi B e C in blocco (niente frequenze “miste”)
Testi per preparare l’esame
Queste note (scaricabili da Didattica on Line e dalla pagina web http://people.lett.unitn.it/zamparelli )
Lenci, Montemagni e Pirrelli, “Testo e Computer: Elementi di Linguistica Computazionale”, Carocci, 2005, cap. 1,2,3
Testi di riferimento (utili per la preparazione dei progetti)Guide all’XML (per frequentanti) on-line
http://www.html.it/xml/guida/index.html oppure http://www.xml.com/pub/a/98/10/guide0.html
(vedi anche http://www.dit.unitn.it/~poesio/Teach/IU/materiale-online.html ) Off line: Devan Shepherd, XML guida completa, Apogeo, 2002 (cap. 1, 2, 3, 4, 7, 8,
9, 10, 14, 16).
Guide all’HTML On-line: vedi url dei lab (per l’anno 05/06 http
://sra.itc.it/people/polettini/laboratori.html) Off line:
F. Comolli, Laboratorio di HTML, Apogeo, 2000. Shelly, Cashman, Woods, HTML: Imparare per progetti, Apogeo,
2000. AA.VV., XHTML, Addison Wesley, 2001.
Altro: http://mediatedcultures.net/ksudigg/?p=78
Lezione 1
Testi, da ASCII a UNICODE:Codifica di basso livello
Diapositive adattate da:Lenci, Montemagni, Pirrelli
Testo e computer – Carocci 2005, Cap.2: La codifica digitale del testo
l’originale (qui modificato) è alla URL http://www.ilc.cnr.it/dylan_lab/Testo_e_computer/home.htm (materiali did. cap.2)
La codifica digitale del testo
I computer memorizzano ed elaborano dati sotto forma di sequenze di due soli simboli 0 e 1 (cifre binarie)
Ogni tipo di informazione deve essere codificata in cifre binarie codificare informazione = associare a ciascuna unità di
informazione un codice (sequenza di cifre binarie) che la identifica in maniera univoca
I testi per essere elaborati o trasmessi da un programma devono avere una rappresentazione (codifica) binaria
Rappresentazione del testo su supporto digitale in un formato “leggibile” da un computer: Machine Readable Form (MRF)
La codifica digitale del testo
che tipo di rappresentazione digitale del testo?
La codifica digitale del testoIl testo e la sua organizzazione
titolo
capitolo
testo
intestazione
La codifica digitale del testoIl testo e la sua struttura linguistica
frase relativa
tutti = soggetto
sintagma nominale
articolo indefinito femminile singolare
stanza come luogo
V andare
pass. rem. 3 sing.
stanze = oggetto di riscaldare
La codifica digitale del testo
Le avventure di PinocchioCapitolo ICome andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.C'era una volta...- Un re! - diranno subito i miei piccoli lettori.- No, ragazzi, avete sbagliato. C'era una volta un pezzo di legno.Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d'inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze.Non so come andasse, ma il fatto gli è che un bel giorno questo pezzo di legno capitò nella bottega di un vecchio falegname, il quale aveva nome mastr'Antonio, se non che tutti lo chiamavano maestro Ciliegia, per via della punta del suo naso, che era sempre lustra e paonazza, come una ciliegia matura.
Il testo come sequenza di caratteri
Ciascun carattere alfanumerico, di punteggiatura o di controllo che compone il testo deve essere rappresentato nei termini di un codice binario
La codifica digitale del testoIl testo come sequenza di caratteri “Surrogato” parziale del testo originario
completa equivalenza solo dal punto di vista dei caratteri che lo compongono
perdita di informazione l’informazione implicitamente veicolata dalla
formattazione del testo relativa a: le coordinate meta-testuali
il nome dell’autore, il titolo, ecc. la struttura e organizzazione testuale
la suddivisione logica in sezioni, capitoli, paragrafi, ecc.
nessun guadagno di informazione l’informazione sulla struttura linguistica rimane
implicita e nascosta (come nel testo originale)
La codifica digitale del testo
Due livelli di codifica del testo digitale codifica di basso livello (codifica di livello 0)
riguarda la rappresentazione binaria della sequenza ordinata dei caratteri
codifica di alto livello arricchisce il testo codificato al livello zero con
informazione relativa a dimensioni strutturali organizzazione del testo in strutture macrotestuali articolazione del testo in strutture linguistiche
La codifica di alto livello permette di rendere esplicita qualsiasi interpretazione, anche di tipo linguistico-
letterario, si voglia associare al testo
La codifica di livello 0
Il testo come sequenza di caratteri
dietro le quinte…
La codifica di livello 0caratteri e numeri
A carattere
65 codice (decimale) del carattere
0 1 0 0 0 0 0 1 codifica binaria del codice del carattere
I computer elaborano internamente solo sequenze di bit (0,1)
MAESTRO CILIEGIA
Numeri e numeri
Sistema binario vengono usate due cifre (0 e 1) per rappresentare un numero problema: i numeri binari sono estremamente lunghi
Sistema esadecimale ogni numero è rappresentato con 16 cifre (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) i numeri sono più corti di quelli binari estrema facilità di conversione tra binario ed esadecimale
in una sequenza binaria, ogni stringa di 4 bit corrisponde ad una cifra esadecimale
0110 1111 0110 numero binario (6) (15) (6) 6 F 6 numero esadecimale
numero
X
10
A
1010
rappresentazione di un numero
Come rappresentare i caratteri?
Quali caratteri scegliere? un insieme di caratteri (es. “A”, “a”, “!”, “à”, “P”, ecc.) i caratteri sono entità astratte, da non confondersi con il
modo in cui sono realizzati tipograficamente (glifi) Uno stesso carattere può variare nella resa grafica in
varie dimensioni:1. Serie (o font): AGKpqt, AGKpqt, AGKpqt, …2. Peso: AGKpqt, AGKpqt3. Inclinazione: AGKpqt, AGKpqt
4. Punti: AGKpqt, AGKpqt, AGKpqt, AGKpqt5. Altri effetti: AGKpqt, AGKpqt, AGKpqt, AGKpqt,
AGKpqt, AGKpqt
Come rappresentare i caratteri?
Distinzioni distintive e non distintive Differenza tra MAIUSCOLE e minuscole
in tedesco “Blau” (nome) vs “blau” (agg.), in Windows: (“Prova.txt, PROVA.TXT,
prova.txt” sono lo stesso file) La stessa realizzazione grafica può
corrispondere a caratteri diversi (es. “A” latina e “A” cirillica e “A” greca)
Come rappresentare i caratteri nel computer?
Come creare la corrispondenza? (il codice) una tabella che definisce una corrispondenza
biunivoca (1-a-1) tra un repertorio di caratteri e un insieme di numeri interi non negativi a ogni carattere è assegnato un codice
numerico (punto di codice / code position) Come codificare il carattere?
algoritmo che determina come i codici dei caratteri vadano rappresentati in sequenze di bit (byte). Il problema è reso non banale dalla necessità di separare i caratteri:
43456 = (4)(34)(56) (4)(3)(4)(56)
Il codice ASCII(American Standard Code for Information Interchange)
Primo standard per l’assegnazione di codici a caratteri (dal 1963) set di caratteri riconosciuto da tutti i computer conosciuto come “ASCII Standard” o ISO-646
Codifica 7 bit
ciascun punto di codice è rappresentato con il numero binario corrispondente di 7 bit
in realtà 1 byte = 8 bit di cui un bit non è usato per la codifica (bit di parità)
7 bit = 27 punti di codice = 128 caratteri rappresentati
Sufficiente per rappresentare l’inglese mancano i caratteri accentati, umlaut, ecc. per
rappresentare altri alfabeti occidentali
ASCII Standarddecimale ed esadecimale
ASCII: Caratteri stampabili e di controllo I primi 32 caratteri
dell’ASCII sono caratteri funzionali (non necessariamente stampabili)
Cf. www.cs.tut.fi/~jkorpela/chars/c0.html
Caratteri di controllo
Si ottengono premendo una lettera mentre si tiene premuto il tasto Cntl. A volte “Control” viene scritto “^” o “Ctrl-” (“Control-A” = “Ctrl-A” = “^A”)
Compiono funzioni specifiche ai vari programmi. Corrispondono al carattere non stampabile che nell’ASCII si trova
64 posizioni indietro rispetto al codice della lettera maiuscola premuta insieme con Ctrl. Esempio: “G” = ASCII 71 “Control-G” = 71-64 = 7 = codice BELL (rappresentato dal suono beep
del computer)
Cf. http://it.wikipedia.org/wiki/Carattere_di_controllo\#Nella_tavola_ASCII
ASCII è completato da uno standard per la interpretazione dei caratteri di controllo, (ANSI X3; per approfondimenti vedi http://www.inwap.com/pdp10/ansicode.txt )
Caratteri di controllo: esempio del “fine riga” Può corrispondere a:
Carriage Return, (CR, lo spostamento alla prima colonna, carattere 13, o Ctrl-M del ASCII),
Line Feed, spostamento alla riga sottostante, senza cambiare colonna (LF, carattere n.10, Ctrl-J)
Scelte differenti nei vari sistemi operativi: Windows/DOS: CR+LF (entrambi i caratteri
necessari) Mac: solo CR (fino al System X, poi solo LF) Unix/Linux: solo LF
File binari e file ASCII I file possono essere di tipo ASCII o di tipo
binario. I primi contengono solo caratteri stampabili contenuti nel codice ASCII ristretto (dal 32 al 127), i secondi usano l'intero spazio dei valori possibili per il byte (256).
Un file binario non può essere in genere visualizzato sullo schermo dai comandi di base del sistema operativo stesso (p.es. “type”) ma solo da programmi specifici per quel tipo di file binario (niente resa grafica standard)
File binari e file ASCII I file eseguibili (windows .exe, .com, …), le
immagini (.jpg, .gif, .png, .tif, …) e tutti i file compressi (.zip, .gz, …) sono in genere in formato binario
Il protocollo dell’email può solo trasmettere file ascii
Con allegati (“attachment”) binari, necessità di ricodifica in ASCII
crescita di dimensioni attorno al 40%
Il set di caratteri ISO-Latin-1
ASCII Standard
Caratteri di controllo
0-32
128-159
ISO-Latin-1 (ISO-8859-1 o ASCII esteso) unica estensione standard di ASCII 1 byte = 8 bit = 28 punti di codice = 256 caratteri rappresentati sufficiente per lingue europee occidentali (italiano, francese, ecc.)
La famiglia di caratteri ISO-8859 14 set di caratteri standardizzati da ISO (International
Standard Organization) Codifica: 1 byte = 256 caratteri rappresentati da ciascun set Soprainsiemi dei caratteri ASCII Standard
punti di codice 0 - 127 (parte comune) ASCII punti di codice 128 - 159 codici di controllo (non
corrispondono a caratteri grafici) punti di codice 160 - 255 (parte variabile) caratteri
aggiuntivi per greco, cirillico, lingue slave, arabo, ebraico, ecc.
I set di ISO-8859 sono tutti reciprocamente incompatibili Punto di codice 232
ISO-8859-1 (Latin-1) = “è” ISO-8859-5 (Cyrillic) = “ш”
ISO-8859 non copre lingue come giapponese, cinese, ecc.
La famiglia di caratteri ISO-8859
ISO-Latin-1
The Universal Character SetUNICODE (ISO-10646)
Standard internazionale che si prefigge di rappresentare qualsiasi tipo di carattere appartenente ai sistemi grafici esistenti Sistemi di scrittura di tutte le lingue europee, asiatiche, africane,
ecc., sia antiche che moderne. Sistemi di caratteri basati sui fonemi (p.es. italiano), sulle sillabe
(p.es. Thai), su ideogrammi (p.es. Cinese), geroglifici, braille, ecc. Sistemi di simboli tecnici e scientifici (p.es. matematica, logica) Punteggiatura e segni diacritici (p.es. accenti)
Risolve i problemi di incompatibilità dei sistemi ISO-8859 estende l’insieme dei caratteri supportati permette la realizzazione di documenti multilingui
http://www.unicode.org
The Universal Character SetUNICODE (ISO-10646) Circa 96.000 caratteri grafici rappresentati (Unicode v. 4.0)
… ma i punti di codice disponibili sono più di 1 milione (4 byte)!!
I primi 65536 caratteri (216) costituiscono il Basic Multilingual Plane (BMP), primo di 17 “piani” in cui è diviso UNICODE. Nel BMP, 6500 punti di codice sono riservati per usi privati (loghi, trademarks…)
The Universal Character SetUNICODE (ISO-10646)
I punti di codice sono rappresentati con “U+numero esadecimale”, ed hanno un nome standard: “A” U+0041 = ”Latin Capital Letter A”
(decimale 65) “ω” = U+03C9 = ”Greek Letter Omega”
I primi 256 caratteri sono identici al set di caratteri Latin-1, a sua volta un soprainsieme dell' ASCII.
UNICODE: composizione dei caratteri
Caratteri complessi (p.es. “u” con umlaut) possono essere rappresentati in due modi: Come elementi precostituiti (codice U+00FC,
”ü”) Come elementi composti, formati da un carattere
di base quale ”u” (U+0075) ed uno o più caratteri che non introducono spaziatura (”non spacing”), che vengono quindi sovrascritti al precedente, in questo caso ”¨” (U+0308)
Problema dell’ordinamento alfabetico (come decomporre caratteri complessi)
Codifica dei caratteri
Vari tipi di codifica: UCS-2 (tutti i caratteri a 2 byte) UCS-4 (tutti i caratteri a 4 byte) UTF-8 (caratteri 0-127 con 1 byte, oltre
2, 3 o 4 byte) UTF-16, ecc.
Codifica più comune: UTF-8
Blocchi di codice I vari alfabeti sono divisi in gruppi detti
“blocchi di codice” (code blocks) Si è tuttavia cercato di non duplicare i
caratteri di lingue diverse. Non esiste p.es. una “A” italiana, una “A” norvegese.
Anche le migliaia di ideogrammi comuni alla scrittura cinese, giapponese e coreana (che discendono tutti da una scrittura comune) sono unificati.
The Universal Character SetUNICODE (ISO-10646)
Caratteri e computer
Ab bkйd و٦من
ds kjdks kdsk
sybco oθδjpjp
Unicode ISO-Latin-1
1010011101
1000100100
1001010010
0110010100
Ab bkƛd ƛƛƛƛ
ds kjdks kdsk
sybco oƛƛjpjp
1010011101
1000100100
1001010010
0110010100
Caratteri e computerRisoluzione dei problemi
Analisi dei caratteri nel testo individuare il set di caratteri con cui è scritto il
documento: ASCII Standard, Unicode, ISO-8859, ecc.
individuare il set di caratteri accettati dal programma con cui si deve elaborare il testo.
verificare l’eventuale esistenza di caratteri composti. Eventuale sostituzione dei caratteri
sostituzione dei caratteri non appartenenti al set accettato dal programma buona parte del sw. accetta solo ASCII attenzione alla perdita di informazione!!
è = e’ š s Muenich Münich