Procesamiento de Lenguaje Natural, Python y NLTK
Upcoming SlideShare
Loading in...5
×
 

Procesamiento de Lenguaje Natural, Python y NLTK

on

  • 1,844 views

Introducción a Procesamiento de Lenguaje Natural en el lenguaje de programación Python utilizando la librería NLTK.

Introducción a Procesamiento de Lenguaje Natural en el lenguaje de programación Python utilizando la librería NLTK.

Statistics

Views

Total Views
1,844
Views on SlideShare
1,843
Embed Views
1

Actions

Likes
3
Downloads
19
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Procesamiento de Lenguaje Natural, Python y NLTK Procesamiento de Lenguaje Natural, Python y NLTK Presentation Transcript

  • 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… View slide
  •  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. View slide
  •  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