COMPUTATIONAL LINGUISTICS MOD. 2
- Anno accademico
- 2020/2021 Programmi anni precedenti
- Titolo corso in inglese
- COMPUTATIONAL LINGUISTICS MOD. 2
- Codice insegnamento
- LMJ070 (AF:318582 AR:175734)
- Modalità
- In presenza
- Crediti formativi universitari
- 6 su 12 di COMPUTATIONAL LINGUISTICS
- Livello laurea
- Laurea magistrale (DM270)
- Settore scientifico disciplinare
- L-LIN/01
- Periodo
- I Semestre
- Anno corso
- 2
- Spazio Moodle
- Link allo spazio del corso
Inquadramento dell'insegnamento nel percorso del corso di studio
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
Risultati di apprendimento attesi
- 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)
Prerequisiti
Nozioni base di matematica.
Familiarità con l'uso del computer. Non è richiesta alcuna conoscenza pregressa di programmazione o di qualche software specifico.
Contenuti
2. Primi passi con Python
3. Stringhe
4. Funzioni
5. Liste
6. Manipolare file
7. Dizionari, set e altri tipi di dato
8. Espressioni regolari
9. Ricerca in un file di testo
10. Usare moduli e pacchetti
11. Introduzione ai corpora di NLTK
12. Lavorare con corpora annotati
13. Annotazione automatica del testo con NLTK
14. Misurare l'associazione tra parole
15. Riepilogo
Testi di riferimento
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.6-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
Modalità di verifica dell'apprendimento
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
Metodi didattici
- 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.