Sei sulla pagina 1di 58

Procesadores de Lenguaje

Procesamiento de Lenguaje Natural

Cristina T auc rn a
Dept. Matesco, Universidad de Cantabria

Fac. Ciencias Ing. Informtica Primavera de 2012 a

Una muy breve introduccin a Python o


fue creado a nales de los ochenta por Guido van Rossum y debe su nombre a los los humoristas britnicos Monty Python a (pgina ocial: http://www.python.org/) a

Una muy breve introduccin a Python o


fue creado a nales de los ochenta por Guido van Rossum y debe su nombre a los los humoristas britnicos Monty Python a (pgina ocial: http://www.python.org/) a Tutorial: http://docs.python.org/tutorial/

Una muy breve introduccin a Python o


fue creado a nales de los ochenta por Guido van Rossum y debe su nombre a los los humoristas britnicos Monty Python a (pgina ocial: http://www.python.org/) a Tutorial: http://docs.python.org/tutorial/ es un lenguaje de programacin interpretado con una sintaxis o muy limpia

Una muy breve introduccin a Python o


fue creado a nales de los ochenta por Guido van Rossum y debe su nombre a los los humoristas britnicos Monty Python a (pgina ocial: http://www.python.org/) a Tutorial: http://docs.python.org/tutorial/ es un lenguaje de programacin interpretado con una sintaxis o muy limpia es un lenguaje multiparadigma: soporta orientacin a objetos, o programacin imperativa y, en menor medida, programacin o o funcional.

Una muy breve introduccin a Python o


fue creado a nales de los ochenta por Guido van Rossum y debe su nombre a los los humoristas britnicos Monty Python a (pgina ocial: http://www.python.org/) a Tutorial: http://docs.python.org/tutorial/ es un lenguaje de programacin interpretado con una sintaxis o muy limpia es un lenguaje multiparadigma: soporta orientacin a objetos, o programacin imperativa y, en menor medida, programacin o o funcional. usa tipado dinmico; no hay que declarar variables! a

Una muy breve introduccin a Python o


fue creado a nales de los ochenta por Guido van Rossum y debe su nombre a los los humoristas britnicos Monty Python a (pgina ocial: http://www.python.org/) a Tutorial: http://docs.python.org/tutorial/ es un lenguaje de programacin interpretado con una sintaxis o muy limpia es un lenguaje multiparadigma: soporta orientacin a objetos, o programacin imperativa y, en menor medida, programacin o o funcional. usa tipado dinmico; no hay que declarar variables! a modo interactivo (se escriben las instrucciones en una especie de intrprete de comandos) e

Una muy breve introduccin a Python o


fue creado a nales de los ochenta por Guido van Rossum y debe su nombre a los los humoristas britnicos Monty Python a (pgina ocial: http://www.python.org/) a Tutorial: http://docs.python.org/tutorial/ es un lenguaje de programacin interpretado con una sintaxis o muy limpia es un lenguaje multiparadigma: soporta orientacin a objetos, o programacin imperativa y, en menor medida, programacin o o funcional. usa tipado dinmico; no hay que declarar variables! a modo interactivo (se escriben las instrucciones en una especie de intrprete de comandos) e el contenido de los bloques de cdigo (bucles, funciones, o clases, etc.) es declarado mediante espacios o tabuladores (indentacin) o

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo Clase Notas Ejemplo

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str Clase Cadena Notas Inmutable Ejemplo Hola

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list Clase Cadena Secuencia Notas Inmutable Mutable, puede contener objetos de diversos tipos Ejemplo Hola [4.0, Hola, True]

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple Clase Cadena Secuencia Secuencia Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True)

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple set Clase Cadena Secuencia Secuencia Conjunto Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Mutable, sin orden, no contiene duplicados Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True) set([4.0, Hola, True])

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple set frozenset Clase Cadena Secuencia Secuencia Conjunto Conjunto Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Mutable, sin orden, no contiene duplicados Inmutable, sin orden, no contiene duplicados Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True) set([4.0, Hola, True]) frozenset([4.0, Hola, True])

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple set frozenset dict Clase Cadena Secuencia Secuencia Conjunto Conjunto Mapping Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Mutable, sin orden, no contiene duplicados Inmutable, sin orden, no contiene duplicados Grupo de pares clave:valor Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True) set([4.0, Hola, True]) frozenset([4.0, Hola, True]) key1: 1.0, key2: False

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple set frozenset dict int Clase Cadena Secuencia Secuencia Conjunto Conjunto Mapping Nmero entero u Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Mutable, sin orden, no contiene duplicados Inmutable, sin orden, no contiene duplicados Grupo de pares clave:valor Precisin ja, convertido en long en caso de overow o Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True) set([4.0, Hola, True]) frozenset([4.0, Hola, True]) key1: 1.0, key2: False 42

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple set frozenset dict int long Clase Cadena Secuencia Secuencia Conjunto Conjunto Mapping Nmero entero u Nmero entero u Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Mutable, sin orden, no contiene duplicados Inmutable, sin orden, no contiene duplicados Grupo de pares clave:valor Precisin ja, convertido en long en caso de overow o Precisin arbitraria o Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True) set([4.0, Hola, True]) frozenset([4.0, Hola, True]) key1: 1.0, key2: False 42 42L 456966786151987643L o

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple set frozenset dict int long oat Clase Cadena Secuencia Secuencia Conjunto Conjunto Mapping Nmero entero u Nmero entero u Nmero decimal u Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Mutable, sin orden, no contiene duplicados Inmutable, sin orden, no contiene duplicados Grupo de pares clave:valor Precisin ja, convertido en long en caso de overow o Precisin arbitraria o Coma otante de doble precisin o Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True) set([4.0, Hola, True]) frozenset([4.0, Hola, True]) key1: 1.0, key2: False 42 42L 456966786151987643L o 3.1415927

Una muy breve introduccin a Python (II) o


comentarios: se inician con el s mbolo #, y se extienden hasta el nal de la l nea variables: se denen de forma dinmica; se usa el s a mbolo = para asignar valores tipos de datos (mutables e inmutables):
Tipo str list tuple set frozenset dict int long oat bool Clase Cadena Secuencia Secuencia Conjunto Conjunto Mapping Nmero entero u Nmero entero u Nmero decimal u Booleano Notas Inmutable Mutable, puede contener objetos de diversos tipos Inmutable, puede contener objetos de diversos tipos Mutable, sin orden, no contiene duplicados Inmutable, sin orden, no contiene duplicados Grupo de pares clave:valor Precisin ja, convertido en long en caso de overow o Precisin arbitraria o Coma otante de doble precisin o Valor booleano verdadero o falso Ejemplo Hola [4.0, Hola, True] (4.0, Hola, True) set([4.0, Hola, True]) frozenset([4.0, Hola, True]) key1: 1.0, key2: False 42 42L 456966786151987643L o 3.1415927 True o False

Una muy breve introduccin a Python (III) o

Listas por comprensin: o squares = [x**2 for x in range(10)]

Una muy breve introduccin a Python (III) o

Listas por comprensin: o squares = [x**2 for x in range(10)] Programacin funcional: lter(), map(), reduce() o

Una muy breve introduccin a Python (III) o

Listas por comprensin: o squares = [x**2 for x in range(10)] Programacin funcional: lter(), map(), reduce() o Funciones

Una muy breve introduccin a Python (III) o

Listas por comprensin: o squares = [x**2 for x in range(10)] Programacin funcional: lter(), map(), reduce() o Funciones Condicionales

Una muy breve introduccin a Python (III) o

Listas por comprensin: o squares = [x**2 for x in range(10)] Programacin funcional: lter(), map(), reduce() o Funciones Condicionales Bucle for

Una muy breve introduccin a Python (III) o

Listas por comprensin: o squares = [x**2 for x in range(10)] Programacin funcional: lter(), map(), reduce() o Funciones Condicionales Bucle for Bucle while

Una muy breve introduccin a Python (III) o

Listas por comprensin: o squares = [x**2 for x in range(10)] Programacin funcional: lter(), map(), reduce() o Funciones Condicionales Bucle for Bucle while Mdulos o

Natural Language Toolkit (NLTK)


NLTK: http://www.nltk.org/download

Natural Language Toolkit (NLTK)


NLTK: http://www.nltk.org/download Instalar el software:

Natural Language Toolkit (NLTK)


NLTK: http://www.nltk.org/download Instalar el software: Python (2.4.*, 2.5.*, 2.6.*)
http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi

Natural Language Toolkit (NLTK)


NLTK: http://www.nltk.org/download Instalar el software: Python (2.4.*, 2.5.*, 2.6.*)
http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi

PyYAML
http://pyyaml.org/download/pyyaml/PyYAML-3.09.win32-py2.6.exe

Natural Language Toolkit (NLTK)


NLTK: http://www.nltk.org/download Instalar el software: Python (2.4.*, 2.5.*, 2.6.*)
http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi

PyYAML
http://pyyaml.org/download/pyyaml/PyYAML-3.09.win32-py2.6.exe

NLTK
http://nltk.googlecode.com/files/nltk-2.0b8.win32.msi

Natural Language Toolkit (NLTK)


NLTK: http://www.nltk.org/download Instalar el software: Python (2.4.*, 2.5.*, 2.6.*)
http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi

PyYAML
http://pyyaml.org/download/pyyaml/PyYAML-3.09.win32-py2.6.exe

NLTK
http://nltk.googlecode.com/files/nltk-2.0b8.win32.msi

Importar el paquete: >>> import nltk >>> nltk.download()

Natural Language Toolkit (NLTK)


NLTK: http://www.nltk.org/download Instalar el software: Python (2.4.*, 2.5.*, 2.6.*)
http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi

PyYAML
http://pyyaml.org/download/pyyaml/PyYAML-3.09.win32-py2.6.exe

NLTK
http://nltk.googlecode.com/files/nltk-2.0b8.win32.msi

Importar el paquete: >>> import nltk >>> nltk.download() Testear: >>> from nltk.corpus import brown >>> brown.words()

NLTK
Herramientas para procesar el texto

>>> from nltk.book import *

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous)

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous)

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very])

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate()

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3))

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3)) text3.count(earth)

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3)) text3.count(earth) sent1, sent2,..., sent9

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3)) text3.count(earth) sent1, sent2,..., sent9 sent1+sent2

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3)) text3.count(earth) sent1, sent2,..., sent9 sent1+sent2 sent1.append(Some)

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3)) text3.count(earth) sent1, sent2,..., sent9 sent1+sent2 sent1.append(Some) text4[173], text4.index(awaken), text6[1600:1625]

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3)) text3.count(earth) sent1, sent2,..., sent9 sent1+sent2 sent1.append(Some) text4[173], text4.index(awaken), text6[1600:1625] sent3[:3], sent3[3:], sent3[:-4]

NLTK
Herramientas para procesar el texto

>>> from nltk.book import * text3 text1.concordance(monstrous) text1.similar(monstrous), text2.similar(monstrous) text2.common contexts([monstrous, very]) text3.generate() len(text3), sorted(set(text3)), len(set(text3)) text3.count(earth) sent1, sent2,..., sent9 sent1+sent2 sent1.append(Some) text4[173], text4.index(awaken), text6[1600:1625] sent3[:3], sent3[3:], sent3[:-4] .join([Monty, Python]), Monty Python.split()

Herramientas para procesar el texto


Tareas a desarollar

Encontrar el nmero total de palabras en el texto 2. u Encontrar el nmero total de palabras unicas en el texto 2. u Imprimir las ultimas 20 palabras del texto 2. Indicar cuantas de esas son unicas. Imprimir las ultimas 20 palabras del texto 2 ordenado. Imprimir las ultimas 20 palabras unicas del texto 2 ordenado.

Diccionario de frecuencias

fdist = FreqDist(text1) fdist.keys() fdist.items() fdist.max() fdist.freq(and) fdist.N()

Diccionario de frecuencias
Tareas a desarollar

Imprimir las 20 palabras ms utilizadas en el texto 1. a Imprimir todas las palabras con ms de 10 letras del texto 1. a Imprimir todas las palabras frecuentes (que aparecen al menos 20 veces) del texto 1 con ms de 10 letras. a

Operadores para los strings

s.startswith(t) s.endswith(t) s.islower() s.isupper() s.isalpha() s.isalnum() s.isdigit() s.istitle()

Operadores para los strings


Tareas a desarollar

Utilizando el texto 4, imprimir: la lista de palabras (nicas) que acaban en -ableness; u la lista de palabras (nicas) que contienen gnt; u Utilizando el texto 8, encontrar: el nmero de palabras que empiezan con mayscula; u u el nmero de palabras compuestas enteramente por d u gitos.

Expresiones regulares

import re [w for w in text1 if re.search(ned$, w)] [w for w in text1 if re.search(..j..t..$, w)] [w for w in text1 if re.search([ghi][mno][jlk][def]$, w)] [w for w in text5 if re.search(m+i+n+e+$, w)] [w for w in text5 if re.search([0-9]+\.[0-9]+$, w)] [w for w in text1 if re.search([0-9]4$, w)] len(set([w for w in text1 if re.search( (ed|ing)$, w)]))

Earley parser
import nltk from nltk.book import * productions = S > S + M | M M > M T | T T > a grammar = nltk.parse cfg(productions) parser = nltk.EarleyChartParser(grammar, trace=2) sent = a + a a.split() trees = parser.parse(sent) trees = parser.nbest parse(sent) trees = parser.iter parse(sent)

Earley parser (II)

productions = E > E OP E | N OP > + | x N > a grammar = nltk.parse cfg(productions) parser = nltk.EarleyChartParser(grammar, trace=2) sent = a + a a.split() trees = parser.nbest parse(sent,2) for tree in trees: print trees

Potrebbero piacerti anche