Linguistica dei Corpora (2) Lezione 4: Contare le parole ed

Transcript

Linguistica dei Corpora (2) Lezione 4: Contare le parole ed
Linguistica dei Corpora (2)
Lezione 4: Contare le parole ed interpretare i numeri
Malvina Nissim
[email protected]
7 Aprile 2009
1
Ci siamo lasciati con:
• comandi shell
• problemi relativi alla tokenizzazione
• liste di frequenza
• ssh gollum.sitlec.unibo.it
• login
• passwd
1
Cercare e contare
1.1
(Contare con) I comandi di linea
Shell commands
uscire da cqp (exit;)
siamo in una directory
• per vedere dove siamo: pwd
• per vedere cosa c’è dentro: ls (provare anche ls -lrt)
• dentro ci sono files e altre directories
• per accedere ad una directory: cd <nomedirectory>
• per tornare alla directory precedente (un gradino su): cd ..
• per vedere un file: cat <nomefile>
Manipolare i file di testo (1)
• cat <nomefile>
• troppo lungo per la schermata? more / less <nomefile>
• quanti caratteri contiene? wc -c <nomefile>
• quante parole contiene? wc -w <nomefile>
• quante linee contiene? wc -l <nomefile>
• wc <nomefile>
• due comandi a seguire: si può usare | (pipe)
• cat <nomefile> | wc -w
• cat <nomefile> | less
Manipolazioni avanzate
• trasformare un carattere in un altro: tr ‘<carattere>’ ‘<altroCarattere>’
• cat <nomefile> | tr ‘a’ ‘b’
• cat <nomefile> | tr ‘a’ ‘b’ | more
• sort: ordina tutte le occorrenze (alfabeticamente, di default)
• uniq: compatta tutte le occorrenze adiacenti della stessa stringa
• uniq -c: include il numero di occorrenze della stessa stringa
cat <nomefile> | tr ‘ ’ ‘\n’ | more
2
Interpretare i numeri
2.1
Distribuzione in un corpus
lista di frequenza BNC http://www.kilgarriff.co.uk/bnc-readme.html
lista di frequenza ”nostra”
Osservazioni
• quanti token abbiamo?
• quanti type?
• qual è il rapporto tra token e type?
• quali sono le parole (categorie) più frequenti?
Due domande
1. il rapporto token/type dipende dalle dimensioni del corpus?
2. in media ciascuna parola occorre x volte — ma qual è la distribuzione reale?
per quanto riguarda il punto 2 andiamo a vedere...
(file: ep-01-02-13.txt; counts.txt)
Distribuzione
• totale token = 90045
• rank 1-9 (le 9 parole più frequenti) = 15807 (17.5%)
• quasi il 10% delle parole occorre una volta sola
2
rango
1
2
3
4
5
6
7
8
freq
3541
2229
2066
1732
1531
1352
1141
1132
forma
di
e
che
la
in
il
per
a
• frequenza = numero di occorrenze di una data parola in dato corpus
• rango = posizione occupata da una parola in un ordinamento di frequenze discendente
relativo all’intero corpus
La legge di Zipf (1949)
la frequenza di una data parola è inversamente proporzionale al rango che data
parola occupa nella tavola di frequenza
f (z) =
C
za
• f (z) = frequenza della parola di rango z
• C è una costante corrispondente alla frequenza della parola di rango 1
• C dipende dalla dimensione del corpus e dal suo vocabolario
• a è un indice inverso della ricchezza lessicale del corpus
• più grande a e più ristretto è il vocabolario del corpus
• per Zipf, a ∼
=1
Legge di Zipf—Osservazioni
• per a = 1, vale che
– f(1) = C
– f(2) = C/2
– f(3) = C/3
– all’aumentare del rango la frequenza diminuisce sempre pi lentamente
• la Legge di Zipf prevede un decremento progressivo della frequenza di una parola proporzionale all’aumentare del suo rango
– la parola di rango 2 dovrebbe occorrere la metà delle volte della parola più frequente
– parole che appaiono molto in basso nella lista di Zipf tendono ad avere frequenze
simili
– la coda della curva di Zipf conterrà dunque tante parole con frequenza 1: gli hapax
3
2.2
Probabilità e n-grammi
Probabilità di un token
• qual e’ la probabilità che prendendo una parola a caso dal corpus questa parola sia “di”?
• più in generale: qual è la probabilità di una parola w che occorre nel nostro corpus?
• P(w) si definisce come
P (w) =
c(w)
N
• dove c(w) è il numero di occorrenze di w e N è la dimensione del corpus in numero di
tokens (corpus size)
N-grams: sequenze di stringhe
• una sequenza di due parole (“a casa”) si chiama bigramma
• una sequenza di tre parole (“vado a casa”) si chiama trigramma
• una sequenza di n parole si chiama n-gramma
come facciamo a cercare n-grammi invece di singole parole (unigrammi )?
Altri comandi shell
• paste <file1> <file2>: incolla due file fianco a fianco
• tail -n -<numero> <file>: prende solo le ultime <numero> linee
• tail -n +<numero> <file>: esclude le prime <numero> linee
Esempi da provare:
• tail -n -15 ep-01-02-13.tok
• tail -n +5 ep-01-02-13.tok
⇒ possiamo costruire n-grammi usando i comandi di linea che conosciamo?
n-grammi con i comandi di linea
• bigrammi: due parole in sequenza
• abbiamo una lista di parole in sequenza: ep-01-02-13.tok
• possiamo creare una lista con, per ciascuna riga, la parola successiva rispetto alla lista
originaria: tail -n +2 ep-01-02-13.tok > ep-01-02-13.next
• accostare i due file: paste ep-01-02-13.tok ep-01-02-13.next
• e infine sort & uniq: paste ep-01-02-13.tok ep-01-02-13.next | sort | uniq -c |
sort -n -r
4
Probabilità di un bigramma
• P(w1 w2) indica la probabilità della sequenza w1 w2 (“Signor Presidente”)
• la formula riflette quella vista per la probabilità degli unigrammi:
P (w1w2) =
c(w1w2)
N
• la formula si può estendere a n-grammi di qualsiasi misura
P (w1 . . . wn) =
2.3
c(w1...wn)
N
N-grammi e collocazioni
John Sinclair: Idioms vs open choice
• Sinclair (1996) distingue due principi in opposizione: the idiom principle e the open choice
principle
• The open choice principle: la lingua si basa su regole grammaticali e le parole vengono
scelte “slot by slot”; questo principio è vicino alla grammatica generativa
• The idiom principle: i parlanti fanno uso di espressioni lessicalizzate, o semi-lessicalizzate,
che sono archiviate nella memoria a lungo termine e recuperate come elementi singoli;
questo principio è vicino alla Construction Grammar
Sinclair (1991)
[I]t is folly to decouple lexis and syntax, or either of those and semantics. The
realization of meaning is far more explicit than is suggested by abstract grammars.
The model of a highly generalized formal syntax, with slots into which fall neat lists
of words, is suitable only in rare uses and specialized texts. By far the majority of
text is made of the occurrence of common words in common patterns. Most everyday
words do not have an independent meaning, or meanings, but are components of a
rich repertoire of multi-word patterns that make up text. This is totally obscured
by the procedures of conventional grammar.
Collocations
• Una collocazione è un gruppo di parole con cooccorrono abitualmente
• Termine introdotto da J.R. Firth (1930): You shall know a word by the company it keeps
• Esempi di collocazioni:
–
–
–
–
–
blond hair
sale e pepe
bandiera bianca
patate fritte
...
• Le collocazioni sono diverse da lingua a lingua: “make a decision” vs “prendere una decisione”
5
Idioms
• Una collocazione con un significato unico, fisso da tempo è un’espressione idiomatica
• Esempi
– tirare le cuoia
– prendere in giro
– mangiare la foglia
– ...
• NB: il significato dell’espressione non si compone direttamente dal significato delle parti
(non-composizionalità)
Bigrammi e collocazioni
tornando ai bigrammi che abbiamo trovato: sono collocazioni?
Il fatto che alcuni bigrammi occorrano spesso non li rende da solo delle collocazioni
• spesso si tratta di function words
• ma osservazione valida anche se consideriamo soltanto parole piene
• se le parole x e y sono eventi indipendenti, allora P(xy) = P(x)P(y)
• in una collocazione, però, le parole x e y sono fortemente dipendenti l’una dall’altra, e
quindi ci aspettiamo P(xy) > P(x)P(y)
• in altre parole, x e y dovrebbero co-occorrere in maniera nettamente superiore al caso
→ parleremo di misure di associazione
3
Cercare stringhe specifiche
Trovare una stringa in un file
come faccio a sapere se un dato file contiene una data parola?
• grep "<stringaDaTrovare>" <nomefile>
• grep "allora" <nomefile>
e se voglio vedere quali file contengono una data parola?
• grep "<stringaDaTrovare>" <files>
• grep "allora"
∗
• grep "allora" ep-∗
• grep "allora" ep-99-∗
• grep "allora" ∗ -15
• grep -l "allora"
6
Opzioni di grep
• trovare con grep tutte le occorrenze dell’articolo “i”
• grep "i" ep-* – funziona?
grep
grep
grep
grep
grep
grep
grep
-w "alle"
-i "alle"
-v "alle"
-c "alle"
-o "alle"
--color "alle"
--color -iw "alle"
parola a sé
case-insensitive
esclude stringa
numero occorrenze
output match soltanto
colora le occorrenze
opzioni multiple
grep -ow "alle.*" ep-99-12-15.txt | sort | uniq -c
Opzioni di grep
trovare una parola in contesto
grep -C10 "alle"
grep -A10 "alle"
grep -B10 "alle"
contesto (before & after)
contesto successivo
contesto precedente
7