INTRODUZIONE ALLA LINGUISTICA COMPUTAZIONALE E LABORATORIO
Modulo MODULO B: STRUMENTI DI ANALISI DEL LINGUAGGIO NATURALE
Anno accademico 2024/2025 - Docente:
MISAEL MONGIOVI'
Risultati di apprendimento attesi
Secondo i descrittori di Dublino studenti e studentesse dovranno, alla
fine del corso, acquisire:
1)
Conoscenza e comprensione: Gli studenti
acquisiranno le basi del pensiero computazionale e della filosofia della
programmazione strutturata in Python (primo modulo). Inoltre è previsto l’apprendimento
delle principali tecniche per l’elaborazione del testo attraverso l’utilizzo
del linguaggio Python (secondo modulo).
2)
Capacità di applicare conoscenza e
comprensione: gli studenti acquisiranno la capacità di risolvere
algoritmicamente semplici problemi sia dal punto di vista formale che
applicando gli strumenti forniti dal linguaggio di programmazione Python,
realizzando così semplici programmi (primo modulo).
3)
Autonomia di giudizio: i contenuti
saranno trasmessi con esempi di casi concreti, allo scopo di sollecitare le
personali intuizioni degli apprendenti.
4)
Abilità comunicative: gli studenti
acquisiranno capacità di descrivere appropriatamente, analizzare e discutere
con altri problemi di programmazione e loro soluzioni.
5)
Capacità di apprendimento: gli
studenti svilupperanno la capacità di applicare il pensiero computazione ad
un’ampia famiglia di problemi e di utilizzare librerie di programmi in Python attraverso
lo studio della loro documentazione
Modalità di svolgimento dell'insegnamento
L'insegnamento sarà svolto attraverso delle lezioni frontali in cui
verranno presentati i contenuti del corso, anche attraverso delle dimostrazioni
pratiche di programmazione in aula. L’insegnamento prevede l’applicazione dei
concetti attraverso l’utilizzo del linguaggio Python. Lo studente avrà a
disposizione ulteriori ore di lezione frontale durante le quali avrà la
possibilità di perfezionare la propria preparazione sulla programmazione
strutturata in Python. Inoltre, lo studente avrà a disposizione una piattaforma
di apprendimento attraverso la quale sarà possibile esercitarsi durante le ore
di studio e autovalutarsi sui contenuti appresi a lezione. La medesima
piattaforma fornisce un valido strumento per la preparazione all'esame.
Prerequisiti richiesti
Lo studente che accede al corso dovrà conoscere i fondamenti
dell'Informatica. In particolare, lo studente dovrà avere dimestichezza con il
concetto di informazione e con i principi di funzionamento del sistema di
elaborazione e del sistema operativo.
Frequenza lezioni
Obbligatoria
Contenuti del corso
Il corso è diviso
in due moduli principali.
Nel primo modulo lo
studente apprenderà le basi del pensiero computazione e della programmazione nel
linguaggio Python. Apprenderà l’utilizzo dei costrutti di base, delle funzioni,
della ricorsione, dei file e delle principali strutture di dati disponibili in
Python. Il secondo modulo del corso ha lo scopo di fornire gli strumenti
essenziali per l’elaborazione del testo e del linguaggio naturale a partire
dalla normalizzazione del testo, fino alla rappresentazione semantica delle
parole e delle frasi ed al loro utilizzo per la classificazione. Il programma include la divisione in token, lo
stemming e la lemmatizzazione, il Part-Of-Speech tagging ed il Named Entity
Recognition, utilizzando le librerie di Python NLTK e spaCy. Si proseguirà con
l'acquisizione di competenze sull'accesso ai corpora di NLTK, al dizionario
WordNet ed ai dataset disponibili su HuggingFace. Si introdurranno gli elementi
di base per il trattamento di dati e matrici attraverso pandas e numpy. Saranno
acquisite inoltre competenze sulla rappresentazione semantica delle parole
mediante word embeddings a partire dal word embedding statico e introducendo
l'embedding contestuale e di un intero testo. Si tratteranno gli elementi di
base della classificazione di testi e si introdurranno le metriche per la
classificazione utilizzando la libreria scikit-learn.
Testi di riferimento
Il testo di
riferimento al primo modulo è “Pensare in Python: come pensare da informatico”
di Allen B. Downey, edito da O’Reilly Media (anno 2019, verranno svolte le
prime 213 di 259 pagine). Il libro rappresenta uno strumento ideale per
imparare le basi della programmazione, utilizzando il linguaggio Python. Nello
specifico il testo introduce al linguaggio in modo graduale, iniziando con i
concetti base della programmazione per poi passare a funzioni, ricorsione,
strutture di dati e progettazione orientata agli oggetti. Gli esercizi,
presenti in ogni capitolo, consentono di testare immediatamente i concetti
appresi.
Il testo di
riferimento al secondo modulo è “Python 3 Text Processing with NLTK 3 Cookbook”
(in lingua inglese, verranno svolte 228 di 279 pagine complessive), di Jacob
Perkins, edito da Packt Publishing (anno 2014). Il testo introduce lo studente
alle tecniche essenziali di elaborazione del testo e del linguaggio naturale.
La seconda parte del secondo modulo, relativa al Natutal Language Processing
tramite SpaCy verrà trattata seguendo dispense fornite dal docente (28 pagine)
e la documentazione ufficiale di SpaCy reperibile online
(https://spacy.io/usage).
Si ricorda che, ai
sensi dell’art. 171 della legge 22 aprile 1941, n. 633 e successive
disposizioni, fotocopiare libri in commercio, in misura superiore al 15% del
volume o del fascicolo di rivista, è reato penale.
Per ulteriori
informazioni sui vincoli e sulle sanzioni all’uso illecito di fotocopie, è
possibile consultare le Linee guida sulla gestione dei diritti d’autore nelle
università (a cura della Associazione Italiana per i Diritti di Riproduzione
delle opere dell’ingegno - AIDRO).
I testi di riferimento
possono essere consultati in Biblioteca.
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
La verifica
dell’apprendimento sarà effettuata attraverso una prova pratica, la
realizzazione di un progetto ed un esame orale.
La prova pratica verterà
sulla risoluzione al computer di problemi computazionali su temi di
programmazione di base in Python (primo modulo). Il progetto richiederà lo
sviluppo di un programma in Python per l’elaborazione di testi in linguaggio
naturale (secondo modulo). La prova orale consisterà in una discussione del
progetto ed una verifica delle competenze acquisite.
La valutazione terrà
conto della padronanza dei contenuti e delle competenze acquisite,
dell’accuratezza linguistica e proprietà lessicale, nonché della capacità
argomentativa dimostrata dal/la candidato/a.
Esempi di domande e/o esercizi frequenti
Per quanto riguarda il modulo A gli studenti dovranno essere in grado di risolvere esercizi della seguente tipologia:
- Si consideri una struttura dati (tupla o dizionario) che comprenda le seguenti informazioni: NOME STUDENTE, VOTO DI LAUREA. Fornire un algoritmo che prenda in input una sequenza di elementi organizzati nella struttura dati precedentemente indicata e restituisca l'elenco degli studenti che hanno avuto un voto di laurea non inferiore a 100 e il relativo voto conseguito.
- Si consideri una struttura dati (tupla o dizionario) che comprenda le seguenti informazioni: NOME STUDENTE, VOTO DI LAUREA, CORSO DI LAUREA. Fornire un algoritmo che prenda in input una sequenza di elementi organizzati nella struttura dati precedentemente indicata e restituisca per ogni corso di laurea presente la media del voto di laurea.
- Si consideri una struttura dati (tupla o dizionario) che comprenda le seguenti informazioni: NOME STUDENTE, VOTO, MATERIA. Si consideri inoltre una struttura dati che comprenda le seguenti informazioni: DOCENTE, MATERIA. Fornire un algoritmo che prenda in input una sequenza di elementi per ognuna delle strutture dati precedentemente indicate e restituisca la media dei voti ottenuti dagli studenti per ogni docente e corso.
L’eserciziario e le prove assegnate nell’anno passato saranno resi disponibili attraverso la piattaforma Studium. Per quanto riguarda il modulo B, gli studenti discuteranno un progetto concordato con il docente. Durante la verifica orale i docente potrebbe porre domande sul programma quali:
- Cosa rappresentano le metriche precision, recall ed F1 nella classificazione?
- Cos'è la lemmatizzazione e quali strumenti possono essere usati per ottenerla?
ENGLISH VERSION