Esercitazione 1 Felice Dell'Orletta ItaliaNLP Lab (www.italianlp.it) presso Istituto di Linguistica Computazionale A. Zampolli CNR felice.dellorletta@ilc.cnr.it 24 settembre 2014
Linguistica Computazionale: esercitazioni Cosa vedremo: Sviluppo di sistemi per l annotazione linguistica di base, basati su metodi simbolici e statistici: divisione del testo in frasi, tokenizzazione, analisi morfologica, analisi sintattica. Sviluppo di sistemi per l estrazione di informazione dai testi: calcolo di distribuzioni di frequenza, creazione di dizionari, estrazione di concordanze, calcolo della forza associativa tra le parole, calcolo della ricchezza lessicale, della leggibilità,...
Gli strumenti: Python Python è un linguaggio di programmazione sviluppato all inizio degli anni 90 Alcune caratteristiche: Linguaggio di programmazione ad alto livello Orientato agli oggetti Linguaggio interpretato Da www.python.it: Python è un linguaggio di programmazione dinamico orientato agli oggetti utilizzabile per molti tipi di sviluppo software. Offre un forte supporto all'integrazione con altri linguaggi e programmi, è fornito di una estesa libreria standard e può essere imparato in pochi giorni
Gli strumenti: NLTK Natural language ToolKit (NLTK: www.nltk.org): Progetto Open Source iniziato nel 2002 Project Leaders: Steve Bird, Edward Loper, Ewan Klein NLTK è un insieme di moduli Python che possono essere importati all interno dei programmi I moduli presenti in NLTK permettono un facile sviluppo di algoritmi per il trattamento del linguaggio naturale basati su metodi simbolici, statistici, sull apprendimento automatico, etc. NLTK viene distribuito insieme a diversi corpora annotati molto utilizzati all interno della comunità NLP (>di 850Mb di dati)
Python e NLTK Python è particolarmente adatto allo sviluppo di sistemi per il trattamento di dati testuali: Molte funzioni di base sono già presenti nelle librerie standard del linguaggio NLTK potenzia ed estende le funzioni di analisi e trattamento dei testi di Python, così da rendere facile anche l implementazione di moduli di analisi linguistica più complessi
Prima di iniziare: alcuni cenni su Linux GNU/Linux è un sistema operativo libero di tipo Unix (unix-like), sviluppato dal 1991 da Linus Torvalds Il più importante esempio di software libero ed open-source A differenza di Windows, in Linux c è una netta distinzione tra il kernel space e lo user space: Lo user space è l ambiente a disposizione degli utenti, in cui vengono eseguiti i processi; il kernel space è l ambiente in cui viene eseguito il kernel.
Prima di iniziare: le directory Una directory è un contenitore che può contenere sia file che altre directory Le directory vengono gestite attraverso una gerarchia ad albero La directory / è detta directory radice (o root) La directory home è la directory nella quale ci sono i programmi ed i dati inseriti o creati dagli utenti Attraverso un path (o percorso) si indica la posizione di un file o di una directory. Es.: /home/felice/filemiei/file2
Prima di iniziare: la shell di Linux La shell (o terminale) è un interprete di comandi ed è il metodo più rapido ed efficace per interagire con il sistema operativo Linux La shell stessa è un comando Linux Attraverso la shell si possono eseguire i vari comandi Nel file unixxtesto.doc (in http://moodle.humnet.unipi.it) trovate una breve lista di comandi utili per il trattamento dei file di testo attraverso la shell di Linux I comandi possono prendere degli input e restituire degli output sullo standard output (la shell stessa)
Prima di iniziare: esempi di comando linux ls: mostra il contenuto di una directory aggiungendo l opzione al vengono dati i dettagli del contenuto cd: cambia la directory (i vari elementi del path devono essere separati da slash, /) Es: cd miadirectory/.. indica la directory padre;. indica la directory corrente mkdir: crea una nuova directory (es: mkdir nuovadirectory) pwd: stampa il nome della directory corrente ed il proprio path
Prima di iniziare: esempi di comando linux grep: ricerca in uno o più file di testo le linee che corrispondono ad uno o più modelli specificati con espressioni regolari rm: elimina uno o più file (attenzione: l eliminazione è irreversibile!), es: rm nomefile rmdir seguito dal nome di una directory elimina la directory se è vuota man: seguito dal nome di un comando restituisce una pagina di manuale per il comando specificato (es: man nomecomando)...
Prima di iniziare: Emacs Emacs è il più famoso editor di testo per linux, serve per creare, modificare file di testo e per scrivere programmi. Creato nel laboratorio di intelligenza artificilale del MIT nel 1984 da Richard Stallman. Per avviare emacs basta digitare il comando emacs sulla shell di Linux, se il comando emacs è seguito dal nome di un file ed il file esiste tale file viene aperto ed è possibile modificarlo, se il file non esiste viene creato un nuovo file nella directory corrente con il nome usato nel comando. Digitando il comando emacs nomefile & il carattere & manda in background l esecuzione di emacs restituendoci l uso della shell.
Come creare ed eseguire un programma Python Esistono 2 metodi principali per creare ed eseguire un programma in python: scrivendo il programma direttamente nella shell, dopo aver eseguito il comando python (comando che avvia l interprete del python) creando (ad esempio utilizzando emacs) un file con estensione.py contenente il programma e passandolo come parametro al comando python
Python: alcuni esempi da shell Somma tra 2 numeri: Prodotto con variabile:
Python: alcuni esempi da shell Funzione range() e ciclo for: NB: a differenza di tanti altri linguaggi di programmazione il python non usa parentesi o delimitatori di inizio o fine blocco, ma usa l indentazione, che quindi acquisisce un valore semantico.
Python: le stringhe Le stringhe Il ciclo for scorre la stringa carattere per carattere
Python: le stringhe Il metodo split() e le stringhe: Il metodo split(delimitatore) divide la stringa sulla base del carattere (o caratteri) delimitatore e la trasforma in un vettore
Python: apertura di un file La funzione open(): In questo caso il for scorre il file riga per riga Il metodo endswith(str) controlla se la stringa finisce con str
Python: importare i moduli Import serve per importare i moduli: Il modulo sys contiene delle funzionalità specifiche del sistema, ad esempio sys.stdin è lo standard input
Python: stdin e stdout Il programma programma.py prende in input il file prova.txt Il carattere < redirige lo standard input nel programma Per salvare l output di un comando (o programma) in un file bisogna aggiungere > nomefileoutput. Il carattere > redirige lo standard output nel file nomefileoutput