Gramáticas Formales
Formalismos e implementaciones

Material para el seminario de la carrera de Letras de la UBA


Project maintained by fernandocar86 Hosted on GitHub Pages — Theme by mattgraham
Gramáticas formales

Requerimientos técnicos

En la cursada vamos a utilizar diversos recursos computacionales, principalmente en los lenguajes de programación Python y Prolog, librerías como NLTK, Spacy y Delphin, entre otras, programas como Wish, y el sistema de control de versiones git. Para poder hacer las actividades y correr los códigos que se suban a esta repositorio, es necesario que los estudiantes tengan todo lo necesario instalado.

En las partes teóricas de las clases vamos a usar handouts en pdf. Puestos que algunos de estos documentos incluyen campos especiales que no son compatibles con todos los visualizadores de pdf (por ejemplo, no todas las versiones del acrobat reader), recomendamos utilizar evince. Pueden encontrar una versión para Windows aquí o aquí. No hemos probado ninguno de los dos links, por lo que agredecemos si nos pueden avisar si funcionan bien.

Instrucciones para los trabajos prácticos

Para cumplir con la regularidad en este seminario, es necesario realizar una serie de trabajos prácticos que serán oportunamente presentados durante la cursada. Para poder resolverlos, es necesario tener en cuenta estas instrucciones.

Cronograma de clases y materiales

Clase Fecha Temas Materiales
01 29/03/22
  • Presentación del equipo y del programa.
  • Dinámica de clases.
  • Presentación de trabajos prácticos.
02 05/04/22
  • Uso básico de git.
  • Formalización como matematización. Teoría de conjuntos y funciones. Nociones básicas de teoría de los lenguajes (lenguaje, alfabeto, etc.).
  • Introducción a Python.
03 12/04/22
  • Jerarquía de lenguajes formales. Gramáticas, autómatas y lenguajes. Equivalencia débil y equivalencia fuerte; teoría de la complejidad.
04 19/04/22
  • Gramáticas Independientes de contexto. Definición; axiomas de dominancia y de precedencia. Algunas limitaciones.
  • Parsers: RecursiveDescentParser (NLTK), Shift-ReduceParser (NLTK), ChartParser (NLTK).
05 26/04/22
  • Diferenciación entre reglas de precedencia lineal y reglas de dominancia inmediata, metarreglas, postulados de significado. Principios: la convención de Rasgo Nuclear (Head Feature Convention), principio del rasgo Foot (Foot Feature Principle), principio del control de la concordancia, Restricciones de Coaparición de Rasgos, reglas léxicas.
  • El declive de GPSG: insuficiencia del poder restrictivo de las gramáticas independientes de contexto, complejidad computacional de GPSG.
06 03/05/22
  • Repaso de la gramática generativa. El minimalismo. Operaciones básicas: ensamble interno, ensamble externo, agree. Teoría de X'. Teoría de la frase desnuda. Estructura básica de la cláusula.
  • Gramáticas minimalistas (Minimalist grammars). Las operaciones de selección, ensamble (Merge), el léxico y los ítems léxicos.
  • Implementación en Prolog: mgpx parser.
07 10/05/22
  • Gramáticas minimalistas con ensamble interno (movimiento de remanentes, movimiento de núcleos).
  • Implementación en Prolog y Python: mghapx parser e implementación del minimalismo de Alex Warstadt.
08 17/05/22
  • Gramática minimalista. Adjunción, los operadores >> y <<
  • Nociones básicas de las gramáticas de unificación y rasgos: matrices de rasgos, rasgos simples y complejos, unificación y subsunción.
09 24/05/22
  • Gramáticas de unificación y rasgos. Implementación mediante Feature-based grammars en NLTK
10 31/05/22
  • LFG: estructura-c, estructura-f, estructura-a, ecuación funcional y descripción funcional.
  • Implementaciones computacionales: XLE (demo).
11 07/06/22
  • Gramáticas de dependencias. La noción de dependencia. Motivaciones para las gramáticas de dependencias. Tipos de dependencias: semánticas, sintácticas y morfológicas.
  • Definición formal. Axiomas de las Gramáticas de dependencias: condición de raíz única, conectividad, no multidominancia, proyectividad.
  • Implementación computacional; Spacy, MaltParser, parser de dependencias de Freeling, PyStanford Dependencies.
12 14/06/22
  • Gramática de dependencias como cuádrupla: relaciones, terminales, categorías, funciones de asignación.
  • Implementación computacional: ProjectiveDependencyParser de NLTK en Python.
13 21/06/22
  • Gramáticas categoriales: Conectivas. Reglas: aplicación, asociatividad, composición, ascenso/Regla de Geech, división. Representación de la estructura sintáctica en términos de funciones y argumentos.
  • Implementación de una gramática categorial clásica con el parser NLTK. CCG en Python. Proyecto OpenCCG.
14 28/06/22
  • Notación lambda. Paralelismo entre la sintaxis y la semántica. Reglas léxicas.
  • Gramáticas categoriales generalizadas. Implementación en NLTK y CCG.
15 05/07/22