Extracción de variables a partir de datos no estructurados para generación de redes

34

Transcript of Extracción de variables a partir de datos no estructurados para generación de redes

Extracción de variables a partir de datos no

estructurados para generación de redes.

Adolfo J. De Unánue T.

4 de Septiembre, 2014

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 1 / 34

Outline

1 Entendiendo a los Gobiernos

2 Plan General

3 Datos elegidos

4 Siguientes pasos

5 Conclusiones

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 2 / 34

¾Cómo de�nirlos?

Una de�nición burda es la siguiente:

Los gobiernos son organizaciones complejas,

que distribuyen recursos

en áreas geográ�cas

para resolver problemas especí�cos

de la comunidad que ahí reside.

Los conceptos resaltados pueden (½y deberían!) ser modelados.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 3 / 34

¾Cómo se ha hecho?

Censos.

Variables macro, principalmente numéricas.

Encuestas.

Análisis.

Estos enfoques son un modelo con muy pocos puntos, muy dispersosy/o con muchas supuestos.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 4 / 34

¾Para que sirven estos datos?

En teoría. . .

Los gobiernos toman esos datos (más alguna teoría en boga),discuten (en congresos, cámaras) expiden leyes, reparten presupuestoy ejecutan.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 5 / 34

Recientemente

Los gobiernos se están dando cuenta de que tienen muchísimosmás datos que podrían ser utilizados:

Dependiendo de la interpretación, se pueden utilizar paraI mejorar la economía (dando mejores datos a las empresas),I vigilar (proteger) a sus ciudadanos,I liberar datos para transparencia (dando acceso a los ciudadanos

para que tengan una mejor perspectiva),I y quizá para rendición de cuentas.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 6 / 34

Complejidad

El gobierno ya es demasiado complejo.I En 2012, cerca de 4,000,000 de personas trabajaban en la

administración pública a nivel federal, estatal y municipal(INEGI, 2012).

I Sólo a nivel federal había 97 instituciones centralizadas, 18secretarías de estado y 74 órganos desconcentrados, además de197 instituciones paraestatales (INEGI, 2012).

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 7 / 34

¾Qué otros datos existen?Como todo sistema, el gobierno emite información que esrecolectada a través de

I Publicaciones periódicas, comoF el Diario O�cial (de publicación diaria) y a nivel estatal.F las cámaras de diputados y senadores, publican sus debates

(Diarios de debates).F las cortes publican sus versiones estenográ�cas.

Además podemos ver los concursos, gastos públicos, procesos,presupuestos, etc.

Los periódicos publican análisis, interpretaciones y noticias.

La ciudadanía tuitea, compra, interactúa, opina, etc.I Otra idealización burda.

El país, además tiene las variables mencionadas arriba:geográ�cas, socioeconómicas, dinámicas, estadística de crimen,aduanas, etc.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 8 / 34

¾Es una idea nueva?

Juan Jacobo Rousseau

"To discover the rules ofsociety that are best suitedto nations, there wouldneed to exist a superiorintelligence, who couldunderstand the passions ofmen without feeling any ofthem. . . "

Chile, Siglo XX

Salvador Allende,

Sta�ord Beer

Cybersyn

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 9 / 34

¾Qué?

Esta información no estructurada, más la tradicional, es usadaactualmente para toma de decisiones por agentes de gobierno.¾Por qué no utilizar técnicas de análisis de datos, ciencia de datos,aprendizaje de máquina para ayudar a la toma de decisiones,mediante algoritmos, simulaciones, modelos matemáticos, etc.?

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 10 / 34

Algunos ejemplos de quienes

En latinoamérica:

SCJN (MEX)I Information Retrival

JusBrasil (BRA)I Information Retrival

Open Intelligence (MEX)I Modelado, Planeación y Seguimiento

. . .

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 11 / 34

¾Cómo?

Selección de fuente de datos.

Adquisición de la fuente de datos.

Almacenamiento de la fuente de datos.

De�nición de dato de interés.

Limpieza de datos.

Mezclado de datos.

Interpretación.

Aplicación.

Infraestructura.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 12 / 34

Problemas con los datos

Formatos sólo pensados en la publicación no en la explotación.

Datos no estructurados.

Datos históricos inaccesibles.I Imágenes, no digitalizado, perdido.

Sitios lentos o mal diseñados.

Búsquedas hechas para no ser utilizadas.I ¾Malicia?

La información se debe de pedir, no siempre está publicada(aunque sea pública).

Etc.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 13 / 34

¾Qué especí�camente?

Extracción de redes de personajes importantes en la políticamexicana.

I Ver redes de poder / corrupción.I ¾Se podrá percibir narrativa?I Descripción del sistema.I Entender el sistema democrático mexicano.I Memoria histórica.I Predicción de comportamientos.I Incorporación del elemento humano a otros modelos.I Generación de vocabulario/contexto para otras fuentes.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 14 / 34

¾Con qué datos?

Revista ProcesoI Hemeroteca digitalizada

F Artículos desde 1976.

I Es necesario pagar para acceder a ella.F Pero el contrato indica que si es con �nes de investigación se

puede reutilizar.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 15 / 34

Plan especí�co

Obtener todos los articulos de la hemeroteca.I Siendo buen ciudadano.

Almacenarlos en un formato explotable.

Analizarlos de manera reproducible y abierta.

Convertirlos a red.

Analizar la red: Estructura y Dinámica.

Obtener conclusiones.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 16 / 34

Tamaño

Hemeroteca de la revista Proceso.I 4 Gb en formato BSON.I 1,931 revistas.I 88,873 artículos.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 17 / 34

Adquisición y almacenamiento

Para obtenerla se desarrolló un scrapper del sitio en python.

Se almacenó en una base de datos orientada a documentos:MongoDB en dos colecciones:

I magazines

I articles

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 18 / 34

Estructura

Magazines> db.magazines.findOne(){

"_id" : ObjectId("52957965e89883c32e4385e4"),"flagged" : true,"published" : "27 de diciembre de 1986","title" : " Proceso 530","url" : "http://hemeroteca.proceso.com.mx/?page_id=143775","year" : 1986

}

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 19 / 34

Estructura

Articles> db.articles.findOne(){

"_id" : ObjectId("52957aebe89883c32e4385f4"),"category" : "Edicion Mexico","author" : "La Redacción","url" : "http://hemeroteca.proceso.com.mx/?page_id=278958&a51dc26366d99bb5fa29cea4747565fec=125047","text" : "EL 82, AUNQUE EXAGERADO, UN ARTICULO TABU:MARTINEZ BAEZ Para ser Presidente de la República

�señala el artículo 82 constitucional en su fracción I�se requiere ser ciudadano mexicanopor nacimiento, en pleno goce de sus derechos, e hijo de padres mexicanos por nacimientoEl último requisito del precepto �que ha sido en diversas épocas tema de discusióngeneralmente solapada�ha adquirido en ...",

"year" : 1978,"summary" : "EL 82, AUNQUE EXAGERADO, UN ARTICULO TABU:MARTINEZ BAEZ\r\nPara ser Presidente ...","magazine" : " Proceso 113","published" : "30 de diciembre de 1978","title" : " El 82, aunque exagerado, un artículo tabú: Martínez Baez","flagged" : true

}

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 20 / 34

De�nición de la red

Construir la red de la siguiente manera:

Un nodo es una persona mencionada en el texto del articulo.

Dos nodos están relacionados si están mencionados en el mismoartículo (vértice).

La red es weightedI Si la relación se repite en varios artículos, su peso es el número

de artículos.

Queremos modelar de manera multicapa, en el caso más simpleserá una red temporal, el paso del tiempo será anual.

Queremos simpli�car la extracción de datos del texto delartículo, por lo que la red NO será direccionada.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 21 / 34

Extracción de los datos

Pseudocódigofor year in years:

for article in articles:clean_metadata()remove_stop_words()# lemmatize# steamtokenize()pos_tagger()get_ner()store_as_network()

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 22 / 34

Herramientas

Python NLTK 3.0

Python scikit

Python NetworkX

MongoDB

PostgreSQL

scripts

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 23 / 34

POS tagger

POS: Part Of Speech

Vector de palabras -> Tupla de la forma (palabra, tag).

El tag indica si la palabra es un adjetivo, sustantivo, verbo, etc.

El taggeador es una entidad entrenable.

Python NLTK viene con algunos taggers implementados y contextos ya etiquetados para su entrenamiento.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 24 / 34

NER: Name Entity RetrivalEl paso crucial es obtener los nodos a partir del texto (Identi�carentidades).Las entidades de interés son:

I Personas, Lugares, Organizaciones, Roles, Datos, Acciones,Fechas, Lugares, Acrónimos.

Las entidades en las que estamos interesados, en esta primeraetapa son Personas.Para este paso, es indispensable contar con un chunkerentrenado.

I Extrae pequeñas frases de un texto ya etiquetado.

NER o NEE es una especie de chunker que asigna tags deentidades.

I NLTK ya trae uno entrenado, no incluye el corpus para entrenarnuevos.

I Aunque incluye otro basado en el NYT.

Lo que existe: PERSON, ORGANIZATION, GPE, NE (binaria)Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 25 / 34

Pseudocódigo ( de nuevo )

Pseudocódigo 1.1for year in years:

for article in articles:clean_metadata()remove_stop_words()# lemmatize# steamtrain_pos_tagger()train_chunker()tokenize()pos_tagger()get_ner()store_as_network()

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 26 / 34

Problemas (de nuevo)

Estamos en español ->I stop words

F incluido (*)

I tokenizerF incluido

I steammerF incluido (*)

I postaggerF no incluido, sólo en inglés

I chunkerF no incluido, sólo en inglés

I ner chunkerF no incluido, sólo en inglés

Necesitamos corpora taggeada, NLTK incluye el cess_esp

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 27 / 34

Problemas (de nuevo)

cess_espIn [1]: import nltkIn [2]: from nltk.corpus import cess_espIn [3]: cess_esp.parsed_sents()[0]Out[3]: Tree('S', [Tree('sn-SUJ',[Tree('espec.ms',[Tree('da0ms0', ['El'])]),Tree('grup.nom.ms',[Tree('ncms000', ['grupo']),Tree('s.a.ms', [Tree('grup.a.ms', ...

½No estandarizado!

Etiquetas no documentadas basadas en EAGLE. . .

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 28 / 34

Problemas (de nuevo)

¾Esperanza?

Existe un conjunto completo de datos etiquetados, con wordnet,lemmatizer, léxico, etc.

Se puede descargar en GRIALI Universidad

No está incluido con NLTK.I Estamos trabajando en integrarlo.

Una vez hecho eso, esperamos mejorar los resultados.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 29 / 34

Por mientras . . .

Entrenar con cess_esp y luego hackear para usar el ne chunker.

Se intentaron tres modelos sencillos:

spanish_tagger = pick_best_tagger()

Entrenado taggers...Cargando desde archivo: unigram_spanish.pickleCargando desde archivo: bigram_spanish.pickleCargando desde archivo: trigram_spanish.pickle...OKEligiendo el mejor tagger...bigram: 89.405332 %unigram: 87.617646 %trigram: 88.958410 %Se selecciona el tagger: bigram

Aunque la precision (a la hora de taggear) es buena, existen muchísimos falsos positivos.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 30 / 34

ResultadosNodosJorge Madrazo|nullFox|nullSegundo|nullCarlos Salinas Gortari Mexico|nullJoaquin Lopez Doriga|nullAdriana Raul|nullRaul Salinas\u201d|nullRaul CSG\u201d|nullCarlos Salinas Gortari Hector|nullLeonel Godoy|nullCamara Diputados|nullUniversal|nullReforma|nullJuan Jose Salinas Pasalaguas|nullCodigo Procedimientos Penales|nullRaul Almoloya|nullAmbriz Cesar Cruz|nullVicente Fox|nullMartha Sahagun|nullFox Fobaproa|nullErnesto|nullEnrique Jackson|nullRosario Robles|nullJose Murat|nullOaxaca|nullManuel Aguilera Oscar Espinosa Villarreal|nullDiodoro Carrasco|nullEduardo Vega|nullIvan Olaf Corro Labra Trinidad Rodriguez Ballesteros|null

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 31 / 34

Resultados

VérticesEnrique Krauze|Octavio Paz|{"count": 2}Enrique Krauze|Sari Bermudez|{"count": 3}Enrique Krauze|Gabriel Garcia Marquez|{"count": 2}Carlos Fuentes|Enrique Krauze|{"count": 3}Fondo Cultura Artes|Victor Flores Olea|{"count": 2}Sitios Monumentos Patrimonio Cultural|Victor Flores Olea|{"count": 2}Octavio Paz|Sari Bermudez|{"count": 2}Carlos Fuentes|Octavio Paz|{"count": 4}Biblioteca Mexico|Octavio Paz|{"count": 2}...Roberto Albores|Vicente Fox|{"count": 2}Roberto Hernandez|Unidos|{"count": 2}Roberto Madrazo|Tabasco|{"count": 2}Rosario Green|Vicente Fox|{"count": 2}Rosario Robles|Vicente Fox|{"count": 3}Salinas|Zedillo|{"count": 2}Salud|Vicente Fox|{"count": 3}Samuel Villar|Seguridad Publica|{"count": 2}San Cristobal|Vicente Fox|{"count": 2}San Diego Churubusco|Sergio Raul Arroyo|{"count": 2}San Diego Churubusco|Teresa Franco|{"count": 2}San Francisco Rincon|Unidos|{"count": 2}San Francisco Rincon|Vicente Fox|{"count": 2}San Lazaro|Vicente Fox|{"count": 2}Santiago Creel|Vicente Fox|{"count": 7}...

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 32 / 34

¾Que sigue?

Regresar a mineria de texto, usando Aprendizaje de Máquina

Scikit Learning

¾/Deep Learning/?

Apache Hadoop.

Análisis de estructura y dinámica de redes.

Liberación de código y taggeadores entrenados.

Incorporación de los corpora del GRIAL.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 33 / 34

Resumen

Se cuenta con una fuente de datos de textos (taggeados)relacionados con la historia reciente de México.

Creación de red unimodal, multicapa en proceso.

Código disponible para ser utilizado por la comunidad.

Incorporación de GRIAL al NTLK.

NLP en español, precario en soporte en FOSS.

Corpus de entrenamiento no integrados.

Recurrir a técnicas de text mining, machine learning nosupervisado

Es necesario entender el contexto.

Adolfo J. De Unánue T. Extracción de variables a partir de datos no estructurados para generación de redes.4 de Septiembre, 2014 34 / 34