Upload
raul-garreta
View
7.624
Download
0
Embed Size (px)
Citation preview
Raúl Garreta
@raulgarreta
PyDay Uruguay 2011
Subárea de Inteligencia Artificial, Ciencias de la Computación.
Estudia métodos que permitan a las máquinas interactuar con las personas mediante lenguaje natural.
Poder extraer significado, información, manipular texto.
Área interdisciplinaria: Lingüística + Ciencias Computación + Estadística
Traducción automática Systran, Google Translate
Clasificación de 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
Text databases: MongoDB, CouchDB
Extracción de 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ón Automática Compiladores / Intérpretes Mucho más…
50’s - Alan Turing “Computing Machinery and Intelligence” “Turing Test”
60’ – Noam Chomsky “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 capacidad de 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 de Oraciones Un “.” puede ser decimal, suspensivos, abreviación, etc.
Segmentación de Palabras (Tokenización) En algunos 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)
Etiquetado Gramatical (POS Tagging) 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 procesamiento de texto:
Soporte nativo de Unicode
Muchas funciones para procesamiento de texto
Baja barrera de entrada, prototipado rápido
Open source (éxito en el mundo académico y 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))
ordenar vocabulario: sorted(set(text))
▪ módulo re para expresiones regulares
▪ parsers de fechas (dateutil)
▪ y mucho mas…
Para realizar cosas mas complejas, necesitamos más librerías.
Simple, extensible, modularizado, infraestructura: Expresiones Regulares
Gramáticas
Parsers
Modelos estadísticos
Clasificadores
Comunidad grande, académica, tanto de desarrolladores y usuarios.
Recomiendo tutoriales y demos de Jacob Perkins: streamhacker.com
text-processing.com
Tokenizador de palabras Tokenizador de oraciones Etiquetador gramatical Chunkers Reconocedor de entidades Expresiones regulares Gramáticas Parsers Stemmers/Lemmatizers Wordnet Algoritmos de Aprendizaje Automático Corpus, grandes colecciones de texto Más…
Importo NLTK
Abro un archivo de texto
Tokenizar en oraciones
Tokenizar en palabras
Etiquetado gramatical
Chunking, extracción de entidades
Importo wordnet
Obtengo synset
Obtengo lemas de sinónimos
Obtengo hipérnimos
Obtengo hipónimos
Defino set de atributos
Obtengo ejemplos
Genero conjuntos de entrenamiento y testeo
Entreno un clasificador
Utilizo el 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