Indice

Prime operazioni con il testo

Il grafico delle frequenze con NLTK

Aprire il programma IDLE-Portable.exe contenuto nella cartella 'Portable Python 2.7.x.x'. Provare le istruzioni seguenti:

1
import nltk
frase='se un uomo con la pistola incontrasse un uomo con il fucile quello con la pistola sarebbe un uomo morto'
print frase
frase=frase.split()
print frase
fd=nltk.FreqDist(frase)
fd.plot()

Resettate la shell (menu in alto 'Shell', selezionare 'Restart Shell' - Ctrl+F6) e provate le istruzioni seguenti, che utilizzano il file contenente il romanzo 'Pinocchio':

1
import codecs
import ntlk
file=codecs.open('Testi/collodi_pinocchio.txt', encoding='iso-8859-1', mode='r')
testo=file.read()
testo=testo.split()
fd=nltk.FreqDist(testo)
fd.plot(50)

Dovrebbe comparire un grafico con la distribuzione dei valori di frequenza delle 50 parole più frequenti. Quali imperfezioni presenta la lista di parole contenuta in questo grafico?

Problemi di codifica

In Python un file può essere aperto anche con la semplice funzione open() [anziché codecs.open()]. Provate a eseguire le istruzioni seguenti:

1
import codecs
import ntlk
file=open('Testi/collodi_pinocchio.txt', mode='r')
testo=file.read()
testo=testo.split()
fd=nltk.FreqDist(testo)
fd.plot(50)

A cosa si deve il problema incontrato dall'interprete? (vd. i paragrafi sulla codifica del testo in Lenci et al.)


Per evitare problemi di questo tipo, se analizziamo con python una frase che contiene caratteri non ASCII dobbiamo far precedere la stringa da una u minuscola (segnalatore di stringa unicode):

1
import nltk
frase=u'quando un uomo con la pistola incontra un uomo con il fucile quello con la pistola è un uomo morto'
print frase
frase=frase.split()
print frase
fd=nltk.FreqDist(frase)
fd.plot()