Tecnologie per l'Elaborazione del Linguaggio

 

Programma

I linguaggi formali. Grammatiche. Classificazione delle grammatiche e dei linguaggi. Analisi lessicale. Progettazione di analizzatori lessicali. Uso di Lex. Analisi sintattica: alberi sintattici, analisi top-down e bottom-up. Grammatiche LL(1), LR(1) e LALR(1). Uso di YACC. L’elaborazione del linguaggio naturale. Entità lessicali: parole e morfologia; spell-checking; N-gram models (stima, tecniche di smoothing e backoff). Part-Of-Speech Tagging: tagsets, rule-based PoS tagging, probabilistic PoS tagging e Hidden Markov Models. Analisi sintattica: Context Free grammars in NLP. Costituenti e chunking: esempio per la Parte Nominale (Noun Phrase). Implementazione delle regole per l'accordo di genere/numero e per le costruzioni verbali (subcategorization frame). Ambiguità e costruzione degli alberi di analisi (attachment ambiguity, coordination ambiguity). Parser di Earley. Vincoli e grammatiche con strutture di feature. Probablistic Context Free Grammar (cenni). Semantica lessicale: significati, relazioni fra significati. Wordnet. Word sense disambiguation. Similarità fra parole.

Slides del Corso

  1. Linguaggi e compilatori
  2. Linguaggi regolari
  3. Linguaggi Context Free
  4. YACC
  5. NLP: parole (morfologia, spell-checking, N-gram models)
  6. NLP: Part of Speech Tagging
  7. NLP: Sintassi
  8. NLP: Semantica lessicale
  9. OpenNLP

Esempi e riferimenti

  1. Flex
  2. Parser CF
  3. Eliza (Netbeans project - zip file)
  4. Stuttgart Finite State Transducer (zip con esempi)
  5. Porter Stemmer (zip)
  6. Morph-it (Analizzatore morfologico per Italiano)
  7. Wordnet, Wordnet::similarity, WordVis, VisuWords
  8. OpenNLP