====== 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: 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': 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: 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): 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()