introducción a la lingüística computacional

23
César Antonio Aguilar Facultad de Lenguas y Letras 24/10/2017 Introducción a la lingüística computacional [email protected]

Upload: others

Post on 05-Jul-2022

48 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a la lingüística computacional

César Antonio Aguilar

Facultad de Lenguas y Letras

24/10/2017

Introducción a la lingüística

computacional

[email protected]

Page 2: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (1)

En esta clase vamos a abordar la relación que mantiene, dentro de la lingüística computacional, el estudio de la sintaxis con el uso de métodos gramaticales.

Durante los primeros años de desarrollo del PLN, estas cuestiones eran vistas como dos metodologías distintas entre sí:

Page 3: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (2)

Page 4: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (3)

Page 5: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (4)

Page 6: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (5)

Page 7: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (6)

Page 8: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (7)

Page 9: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (8)

Veamos otro ejemplo: en gramática, un problema sumamente interesante es la resolución de ambigüedades como la siguiente:

Page 10: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (9)

Page 11: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (10)

Page 12: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (11)

Page 13: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (12)

Page 14: Introducción a la lingüística computacional

¿Probabilidades y sintaxis? (13)

Page 15: Introducción a la lingüística computacional

Gramáticas probabilísticas en NLTK (1)

En NLTK podemos modelar gramáticas probabilísticas (o ProbabilisticContext-Free Grammar, PCFG) usando algunos comandos. Veamos:

>>> import nltk. re>>> grammar1 = nltk.parse_cfg("""S -> NP VPVP -> V NP | V NP PPPP -> P NPV -> "saw" | "ate" | "walked"NP -> "John" | "Mary" | "Bob" | Det N | Det N PPDet -> "a" | "an" | "the" | "my"N -> "man" | "dog" | "cat" | "telescope" | "park"P -> "in" | "on" | "by" | "with"""")>>> sent = "Mary saw Bob".split()>>> rd_parser = nltk.RecursiveDescentParser(grammar1)>>> for tree in rd_parser.nbest_parse(sent):print tree

Page 16: Introducción a la lingüística computacional

Gramáticas probabilísticas en NLTK (2)

Page 17: Introducción a la lingüística computacional

Gramáticas probabilísticas en NLTK (3)

Page 18: Introducción a la lingüística computacional

Gramáticas probabilísticas en NLTK (4)

import nltkGrammar01 = nltk.PCFG.fromstring ("""S -> NP VP [1.0]VP -> TV NP [0.4]VP -> IV [0.3]VP -> DatV NP NP [0.3]TV -> 'saw' [1.0]IV -> 'ate' [1.0]DatV -> 'gave' [1.0]NP -> 'telescopes' [0.8]NP -> 'Jack' [0.2]""")print (Grammar01)

Page 19: Introducción a la lingüística computacional

Gramáticas probabilísticas en NLTK (5)

viterbi_parser = nltk.ViterbiParser(Grammar01)for tree in viterbi_parser.parse(['Jack', 'saw', 'telescopes’]):

print(tree)

Resultado:

Page 20: Introducción a la lingüística computacional

¿Qué es lo que estamos haciendo? Básicamente, analizar frases y oraciones asignando un conjunto de probabilidades a cada uno de los componentes sintácticos que conforman una oración, de una forma muy similar al modo en como se pueden identificar secuencias de n-gramas:

Gramáticas probabilísticas en NLTK (6)

Page 21: Introducción a la lingüística computacional

Ahora bien, el algoritmo Viterbi es un algoritmo de programación dinámica que permite hallar la secuencia más probable de estados ocultos (el llamado camino de Viterbi) que produce una secuencia observada de sucesos, especialmente en el contexto una cadena de Markov.

Gramáticas probabilísticas en NLTK (7)

Andrew Viterbi(1935)

Page 22: Introducción a la lingüística computacional

Training Sentences

Aprovechando esta clase de recursos, podemos desarrollar programas y entrenarlos para que sean capaces de hacer análisis sintáctico en corpus, de modo que conforme vayan mejorando sus resultados, podríamos contar con un recurso sumamente útil para identificar patrones gramaticales regulares en una lengua natural:

Gramáticas probabilísticas en NLTK (8)

PCFGTraining

S → NP VPS → VPNP → Det A NNP → NP PPNP → PropNA → εA → Adj APP → Prep NPVP → V NPVP → VP PP

0.90.10.50.30.20.60.41.00.70.3

English

John ate the apple

A dog bit Mary

Mary hit the dog

John gave Mary the cat.

.

.

.

Page 23: Introducción a la lingüística computacional

Blog del curso:

http://cesaraguilar.weebly.com/introduccioacuten-a-la-

linguumliacutestica-computacional.html

Gracias por su atención