COMPUTATIONAL LINGUISTICS MOD. 2

Anno accademico
2019/2020 Programmi anni precedenti
Titolo corso in inglese
COMPUTATIONAL LINGUISTICS MOD. 2
Codice insegnamento
LMJ070 (AF:314082 AR:167829)
Modalità
In presenza
Crediti formativi universitari
6 su 12 di COMPUTATIONAL LINGUISTICS
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
L-LIN/01
Periodo
II Semestre
Anno corso
2
Spazio Moodle
Link allo spazio del corso
L'insegnamento si inquadra nelle attività caratterizzanti del percorso Language Sciences e nelle attività affini e integrative del percorso English Linguistics e ha lo scopo di fornire allo/alla studente/essa gli strumenti tecnici fondamentali per l'analisi computazionale e per il trattamento automatico della lingua.

Obiettivi dell’insegnamento sono:

- fornire allo/alla studente/essa le tecniche di base per l'analisi computazionale dei testi
- introdurre lo/la studente/essa all'ambiente di programmazione Python
- rafforzare la capacità di riflessione sul linguaggio
- esercitare la capacità di analisi della letteratura scientifica e la capacità di formulare e testare ipotesi alternative
1. Conoscenza e comprensione
- familiarità con l'ambiente di programmazione Python e con il pacchetto NLTK
- capacità di progettare ed implementare semplici algoritmi
- conoscenza dei principali approcci alla semantica distribuzionale
- acquisizione delle tecniche di base per l'estrazione di informazione linguistica da corpora
- familiarità con i più importanti livelli di annotazione linguistica del testo

2. Capacità di applicare conoscenza e comprensione
- conoscenza delle caratteristiche e dei limiti dei più comuni approcci per il trattamento automatico del linguaggio, in modo tale da poterli sfruttare per la propria ricerca linguistica
- utilizzo dell'ambiente di programmazione Python per lo sviluppo di moduli per il trattamento automatico della lingua
- capacità di reperire risorse bibliografiche adeguate e di utilizzarle in maniera critica e mirata (rilevante per gli studenti che optano per la modalità di esame da non frequentante)
- capacità di avanzare, in maniera fondata e critica, proposte originali (rilevante per gli studenti che optano per la modalità di esame da non frequentante)

3. Capacità di giudizio
- capacità di mettere in atto autonomamente strategie di rafforzamento della propria competenza tecnica
- sensibilità alle problematiche tecniche e deontologiche connesse all'analisi quantitativa ed automatica del linguaggio
- consapevolezza nella scelta di un quadro teorico di riferimento e indipendenza intellettuale rispetto al quadro teorico stesso (rilevante per gli studenti che optano per la modalità di esame da non frequentante)
- capacità di valutare ipotesi in competizione e operare sintesi tra ipotesi alternative (rilevante per gli studenti che optano per la modalità di esame da non frequentante)

4. Abilità comunicative
- capacità di stesura di un testo scritto di carattere argomentativo su un tema di ricerca originale (rilevante per gli studenti che optano per la modalità di esame da non frequentante)
- capacità di divulgazione delle principali teorie linguistiche ad un pubblico con un background scientifico variegato (in particolare, linguisti computazionali e psicolinguisti)
- capacità di interazione con i pari e con il docente, in modo critico e rispettoso

5. Capacità di apprendimento
- capacità di acquisire facilmente dimestichezza con altri linguaggi di scripting (p.e. R, PERL, Matlab, Javascript, Julia, SQL)
- capacità di acquisire conoscenze utili per la gestione di problemi non direttamente collegati al trattamento automatico del linguaggio (p.e. per l'analisi statistica, per la creazione di siti web dinamici, per la gestione di database)
- capacità di acquisire dimestichezza con nuovi strumenti tecnologici per il trattamento automatico del linguaggio (p.e. sistemi di annotazione, tool di interrogazione di corpora)
Nozioni di base di linguistica generale (morfologia e sintassi).

Nozioni base di matematica.

Familiarità con l'uso del computer. Non è richiesta alcuna conoscenza pregressa di programmazione o di qualche software specifico.
1. Introduzione al linguaggio Python / Introduzione a Jupyter notebook
2. Primi passi con Python / Stringhe
3. Funzioni
4. Liste
5. Manipolare file
6. Dizionari, set e altri tipi di dato
7. Espressioni regolari
8. Scrivere programmi strutturati
9. Usare moduli e pacchetti / Ricerca in un file di testo
10. Riepilogo: fondamenti di programmazione in Python
11. Lavorare con corpora annotati
12. Annotazione automatica del testo con NLTK
13. Misurare l'associazione tra parole
14. Semantica Distribuzionale
15. Riepilogo: introduzione al Natural Language Processing con Python
Sebbene per gran parte dell'attività laboratoriale sia incentrata sul materiale didattico disponibile sulla piattaforma di e-learning di ateneo in formato Jupyter notebook, le seguenti letture forniranno allo/alla studente/essa una spiegazione più dettagliata dei concetti chiave del corso:

LETTURE OBBLIGATORIE:

- S. Bird, E. Klein and E. Loper (2016) Natural Language Processing with Python: Analyzing
Text with the Natural Language Toolkit, Updated 1st edition, O’Reilly (ch. 2.1, 2.2, 3.2, 3.4, 3.5, 4.2-4.8, 5.1-5.4, 8). Disponibile gratuitamente online all'indirizzo: https://www.nltk.org/book/
- A. B. Downey (2015) Think Python: How to Think Like a Computer Scientist, 2nd edition,
O’Reilly (ch. 1, 2, 3, 5, 10, 11.1-11.5, 12.1-12.3, 14.1-14.4). Disponibile gratuitamente online all'indirizzo: https://www.greenteapress.com/thinkpython/thinkpython.html
- D. Jurafsky and J. H. Martin (2008/2019) Speech and Language Processing, 2nd or 3rd edition (ch. 2.1). Il draft del secondo capitolo della terza edizione è disponibile gratuitamente online all'indirizzo: https://web.stanford.edu/~jurafsky/slp3/2.pdf

LETTURE INTEGRATIVE:

- S. Evert (2009) Corpora and collocations. In A. Lüdeling and M. Kytö (eds.), Corpus
linguistics: An international handbook, Vol. 2, Mouton de Gruyter: 1212-1248 (sections 1-4). Versione estesa disponibile gratuitamente online all'indirizzo: http://www.stefan-evert.de/PUB/Evert2007HSK_extended_manuscript.pdf
- A. Lenci (2018) Distributional Models of Word Meaning, Annual Review of Linguistics, 4: 151-171. Disponibile gratuitamente online all'indirizzo: http://colinglab.humnet.unipi.it/wp-content/uploads/2012/12/annurev-linguistics-030514-125254.pdf
I metodi di accertamento delle competenze acquisite sono distinti per studenti frequentanti e studenti non frequentanti.

INDICAZIONI PER STUDENTI FREQUENTANTI

Per gli studenti che sono stati presenti almeno al 70% delle lezioni la verifica dell'apprendimento avviene attraverso tre gruppi di problemi di programmazione che verranno assegnati ogni 4/5 settimane e che dovranno essere consegnati in formato telematico prima della scadenza indicata dal docente.

Il voto finale sarà così calcolato:

- primo gruppo di problemi: 25% del voto finale
- secondo gruppo di problemi: 35% del voto finale
- terzo gruppo di problemi: 30% del voto finale
- partecipazione all'attività didattica: per il calcolo di questa voce verrà chiesto agli studenti di consegnare, all'inizio di ogni sessione di laboratorio, gli esercizi di programmazione assegnati la settimana precedente. Gli studenti che non avranno cercato di rispondere ad almeno il 50% degli esercizi verranno penalizzati nella misura del 2% del voto finale per ogni notebook insufficiente o non consegnato (penalizzazione massima: 10%).

È facoltà degli studenti frequentanti decidere in qualsiasi momento di svolgere l'esame con le modalità degli studenti non frequentanti. In questo caso, le prove in itinere già sostenute non verranno considerate per il calcolo del voto finale.

INDICAZIONI PER STUDENTI NON FREQUENTANTI

Per gli studenti non frequentanti la verifica dell'apprendimento avviene attraverso la discussione orale di un progetto di programmazione concordato con il docente.

Il progetto dovrà focalizzarsi sulla costruzione ed analisi computazionale di un corpus e dovrà essere documentato da un report corredato di codice che dovrà essere inviato telematicamente al docente almeno una settimana prima dell'esame orale cui si intende partecipare.

Il lavoro finale verrà valutato come segue:

- qualità (appropriatezza, funzionamento, stile) del codice: 40% del voto finale
- conoscenza del problema affrontato e della rilevante letteratura scientifica: 30% del voto finale
- chiarezza e completezza del report: 20% del voto finale
- discussione con il docente: 10% del voto finale
Laboratori di apprendimento attivo. Ogni sessione sarà strutturata nel seguente modo:

- lezione interattiva di circa 30 minuti in cui il docente e gli studenti rifletteranno su alcuni degli esercizi della precedente sessione;
- breve introduzione da parte del docente dei concetti chiave del nuovo gruppo di esercizi;
- svolgimento, da parte degli studenti, di esercizi di programmazione disponibili sulla piattaforma di e-learning di ateneo in formato Jupyter notebook.
Inglese
scritto e orale
Il programma è ancora provvisorio e potrà subire modifiche.
Data ultima modifica programma: 29/04/2020