Raúl Garreta
@raulgarreta
PyDayUruguay 2011
 Subárea de InteligenciaArtificial,
Ciencias de la Computación.
 Estudia métodos que permitan a las
máquinasinteractuar con las
personas mediante lenguaje natural.
 Poder extraer significado,
información,manipular texto.
 Área interdisciplinaria: Lingüística +
CienciasComputación+ Estadística
 Traducciónautomática
 Systran, Google Translate
 Clasificaciónde texto:
 Spam filtering (spam/ham)
 Topic classification (política, negocios, tecnología, deportes, ...)
 Sentiment analysis (pos/neg/neutral)
 Recuperación de Información
 Search engines: Google Search, Lucene
 Textdatabases: MongoDB, CouchDB
 Extracciónde Información
 Resúmenes automáticos, palabras clave, categoría, entidades, fechas,
direcciones, emails. Scraping
 Entendimineto / Generación de lenguaje natural:
 Question & Answering, Chatbots
 CorrecciónAutomática
 Compiladores / Intérpretes
 Muchomás…
 50’s -AlanTuring “Computing
Machinery and Intelligence” “Turing
Test”
 60’ – NoamChomsky “Syntactic
Structures”Sistemas basados en
reglas.Traducción automática
 70’s– Ontologías, Chatbots
 80’s– Sistemas basados en
Aprendizaje Automático.
 90’s– Mayor poder de cómputo.
Teorías Lingüísticas de Chomsky
pierden fuerza. Modelos estadísticos.
 Subárea dentro de Inteligencia
Artificial.
 Estudia algoritmos que tienen la
capacidadde aprender a realizar una
tarea automáticamente.
 Mejoran su performance con la
experiencia.
 Permiten resolver tareas complejas,
cuya solución es muy difícil o
imposible de realizar manualmente.
 Segmentación deOraciones
 Un “.” puede ser decimal, suspensivos, abreviación, etc.
 Segmentación de Palabras (Tokenización)
 Enalgunos lenguajes no es simple
 Análisis Lexicográfico (segmentación de morfemas)
 Stemming / Lemmatizing: Obtener forma canónica, lexema, raíz
 Ej: run, runs, ran, running -> run
 Afijos: prefijos, infijos, sufijos (modifican significado de la palabra)
 EtiquetadoGramatical (POSTagging)
 Asignar una etiqueta gramatical a una palabra, ej: sustantivo, adjetivo, verbo, etc.
 Ej: “La (art) pelota(sust) es(verbo) redonda(adj)”
 Reconocimiento de Entidades (NER)
 Identificar entidades: personas, organizaciones, lugares, etc.
 Análisis Sintáctico (Parsing)
 Identificar estructuras gramaticales en una oración.
 Obtener árbol de parsing a partir de una gramática formal.
 Análisis Semántico
 Ambiguedades lexicas ej:
 “banco” (financiero, plaza)
 “planta” (industrial, natural).
 Ambiguedades sintácticas ej:
“Vi un hombre con un telescopio”
 Múltiples idiomas, traducción
 Semántica,lógica, metáforas,
ironías, anáforas, etc.
 Baterías incluidas para
procesamientode texto:
 Soporte nativo de Unicode
 Muchas funciones para procesamiento
de texto
 Baja barrera de entrada,
prototipadorápido
 Open source (éxito en el mundo
académicoy por lo tanto en PLN)
▪ startswith/endswith
▪ strip
▪ split
▪ upper, lower
▪ find, replace, count
▪ join
▪ Slicing
s[0] s[2:7] s[6:] s[:5] s[-1]
▪ String = list, set
contar vocabulario:
len(set(text))
ordenarvocabulario:
sorted(set(text))
▪ módulo re para
expresiones regulares
▪ parsersde fechas
(dateutil)
▪ y mucho mas…
 Para realizar cosas mas
complejas, necesitamos
más librerías.
 Simple, extensible,
modularizado,
infraestructura:
 ExpresionesRegulares
 Gramáticas
 Parsers
 Modelosestadísticos
 Clasificadores
 Comunidadgrande, académica, tanto de
desarrolladores y usuarios.
 Recomiendotutoriales y demos de Jacob
Perkins:
 streamhacker.com
 text-processing.com
 Tokenizador de palabras
 Tokenizador de oraciones
 Etiquetadorgramatical
 Chunkers
 Reconocedor de entidades
 Expresiones regulares
 Gramáticas
 Parsers
 Stemmers/Lemmatizers
 Wordnet
 Algoritmos de AprendizajeAutomático
 Corpus, grandes colecciones de texto
 Más…
ImportoNLTK
Abro un archivode texto
Tokenizaren oraciones
Tokenizaren palabras
Etiquetado gramatical
Chunking,extracciónde entidades
Importowordnet
Obtengosynset
Obtengolemasde sinónimos
Obtengohipérnimos
Obtengohipónimos
Definoset de atributos
Obtengoejemplos
Generoconjuntos de entrenamientoy testeo
Entrenoun clasificador
Utilizoel clasificador
 ¿Qué más se puede hacer?
 Mucho…
 Dificultades
 Requiere cierto conocimiento de la “teoría”
 Recursos para otros idiomas, ej: Español
 Ventajas
 Simple, rápido, poderoso, extensible
Procesamiento de Lenguaje Natural, Python y NLTK

Procesamiento de Lenguaje Natural, Python y NLTK

  • 1.
  • 2.
     Subárea deInteligenciaArtificial, Ciencias de la Computación.  Estudia métodos que permitan a las máquinasinteractuar con las personas mediante lenguaje natural.  Poder extraer significado, información,manipular texto.  Área interdisciplinaria: Lingüística + CienciasComputación+ Estadística
  • 3.
     Traducciónautomática  Systran,Google Translate  Clasificaciónde texto:  Spam filtering (spam/ham)  Topic classification (política, negocios, tecnología, deportes, ...)  Sentiment analysis (pos/neg/neutral)  Recuperación de Información  Search engines: Google Search, Lucene  Textdatabases: MongoDB, CouchDB  Extracciónde Información  Resúmenes automáticos, palabras clave, categoría, entidades, fechas, direcciones, emails. Scraping  Entendimineto / Generación de lenguaje natural:  Question & Answering, Chatbots  CorrecciónAutomática  Compiladores / Intérpretes  Muchomás…
  • 4.
     50’s -AlanTuring“Computing Machinery and Intelligence” “Turing Test”  60’ – NoamChomsky “Syntactic Structures”Sistemas basados en reglas.Traducción automática  70’s– Ontologías, Chatbots  80’s– Sistemas basados en Aprendizaje Automático.  90’s– Mayor poder de cómputo. Teorías Lingüísticas de Chomsky pierden fuerza. Modelos estadísticos.
  • 5.
     Subárea dentrode Inteligencia Artificial.  Estudia algoritmos que tienen la capacidadde aprender a realizar una tarea automáticamente.  Mejoran su performance con la experiencia.  Permiten resolver tareas complejas, cuya solución es muy difícil o imposible de realizar manualmente.
  • 6.
     Segmentación deOraciones Un “.” puede ser decimal, suspensivos, abreviación, etc.  Segmentación de Palabras (Tokenización)  Enalgunos lenguajes no es simple  Análisis Lexicográfico (segmentación de morfemas)  Stemming / Lemmatizing: Obtener forma canónica, lexema, raíz  Ej: run, runs, ran, running -> run  Afijos: prefijos, infijos, sufijos (modifican significado de la palabra)  EtiquetadoGramatical (POSTagging)  Asignar una etiqueta gramatical a una palabra, ej: sustantivo, adjetivo, verbo, etc.  Ej: “La (art) pelota(sust) es(verbo) redonda(adj)”  Reconocimiento de Entidades (NER)  Identificar entidades: personas, organizaciones, lugares, etc.  Análisis Sintáctico (Parsing)  Identificar estructuras gramaticales en una oración.  Obtener árbol de parsing a partir de una gramática formal.  Análisis Semántico
  • 7.
     Ambiguedades lexicasej:  “banco” (financiero, plaza)  “planta” (industrial, natural).  Ambiguedades sintácticas ej: “Vi un hombre con un telescopio”  Múltiples idiomas, traducción  Semántica,lógica, metáforas, ironías, anáforas, etc.
  • 8.
     Baterías incluidaspara procesamientode texto:  Soporte nativo de Unicode  Muchas funciones para procesamiento de texto  Baja barrera de entrada, prototipadorápido  Open source (éxito en el mundo académicoy por lo tanto en PLN)
  • 9.
    ▪ startswith/endswith ▪ strip ▪split ▪ upper, lower ▪ find, replace, count ▪ join ▪ Slicing s[0] s[2:7] s[6:] s[:5] s[-1] ▪ String = list, set contar vocabulario: len(set(text)) ordenarvocabulario: sorted(set(text)) ▪ módulo re para expresiones regulares ▪ parsersde fechas (dateutil) ▪ y mucho mas…
  • 10.
     Para realizarcosas mas complejas, necesitamos más librerías.  Simple, extensible, modularizado, infraestructura:  ExpresionesRegulares  Gramáticas  Parsers  Modelosestadísticos  Clasificadores
  • 11.
     Comunidadgrande, académica,tanto de desarrolladores y usuarios.  Recomiendotutoriales y demos de Jacob Perkins:  streamhacker.com  text-processing.com
  • 12.
     Tokenizador depalabras  Tokenizador de oraciones  Etiquetadorgramatical  Chunkers  Reconocedor de entidades  Expresiones regulares  Gramáticas  Parsers  Stemmers/Lemmatizers  Wordnet  Algoritmos de AprendizajeAutomático  Corpus, grandes colecciones de texto  Más…
  • 13.
    ImportoNLTK Abro un archivodetexto Tokenizaren oraciones Tokenizaren palabras
  • 14.
  • 15.
  • 16.
    Definoset de atributos Obtengoejemplos Generoconjuntosde entrenamientoy testeo Entrenoun clasificador Utilizoel clasificador
  • 17.
     ¿Qué másse puede hacer?  Mucho…  Dificultades  Requiere cierto conocimiento de la “teoría”  Recursos para otros idiomas, ej: Español  Ventajas  Simple, rápido, poderoso, extensible