Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Procesamiento de Lenguaje Natural, Python y NLTK

9.371 visualizaciones

Publicado el

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

Publicado en: Tecnología

Procesamiento de Lenguaje Natural, Python y NLTK

  1. 1. Raúl Garreta @raulgarreta PyDayUruguay 2011
  2. 2.  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
  3. 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. 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. 5.  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.
  6. 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. 7.  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.
  8. 8.  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)
  9. 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. 10.  Para realizar cosas mas complejas, necesitamos más librerías.  Simple, extensible, modularizado, infraestructura:  ExpresionesRegulares  Gramáticas  Parsers  Modelosestadísticos  Clasificadores
  11. 11.  Comunidadgrande, académica, tanto de desarrolladores y usuarios.  Recomiendotutoriales y demos de Jacob Perkins:  streamhacker.com  text-processing.com
  12. 12.  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…
  13. 13. ImportoNLTK Abro un archivode texto Tokenizaren oraciones Tokenizaren palabras
  14. 14. Etiquetado gramatical Chunking,extracciónde entidades
  15. 15. Importowordnet Obtengosynset Obtengolemasde sinónimos Obtengohipérnimos Obtengohipónimos
  16. 16. Definoset de atributos Obtengoejemplos Generoconjuntos de entrenamientoy testeo Entrenoun clasificador Utilizoel clasificador
  17. 17.  ¿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

×