Extracción de texto y automatización en Twitter

JJ Merelo, @jjmerelo

Primero, extraigamos la información

Luego, procesémosla

En el principio fue el API

Toma control de la web

Necesitas conocer un interfaz de programación de aplicaciones (API)

Un API permite usar la web por debajo

Entrando paso a paso

Que no cunda el pánico

Imagen de Nate Steiner

No hace falta programar

... demasiado

Recuperemos información

Autenticación ⇒ Autorizar aplicación

https://dev.twitter.com/rest/tools/console
usando la consola

Copia/pega entre llaves

copiando

Pero esto no funciona (salvo en casos muy concretos)

Instalemos Postman

Extensión Chrome/Chromium

Usando postman

⇒ Save Response

(icono copy/pegar)

Pero el formato es muy feo

Filtrando con jq

Id a jqplay.org

⇒ Pegad en "JSON"

Jugando
		 en JQPlay

Ya tenemos el texto en filas

Habrá que pararse para ver qué se ha hecho

Ejercicio

Hacer una búsqueda con Postman u otro sistema similar, guardarla (o copypaste) en JSON y extraer sólo los tweets

Pero no tememos a la línea de órdenes

Podemos usar tweet_rest.py

Búsqueda ⇒ Fichero .txt

⇒ Cambia extensión .csv ⇒ Importa Calc

⇒ Recorta columna ...

... O podemos usar get_tweets.py

Descarga de https://git.io/g-tpy

Nueva versión del de Mari Luz Congosto

python tweet_rest.py mis.keys donde_esta_la.key ongs.txt --tweets

⇒ Copia/Pega o añade >fichero.txt al final

Ejercicio

Usar este programa para descargar un fichero de texto con tweets, uno por línea

¿Por qué no programas?

La mejor forma de:

✔ Procesar y analizar datos

✔ Ir más allá en la noticia/informe

✔ Adquirir herramientas para resolver problemas

Considera Python

Imagen de EVLCN en Flickr

JSON = JavaScript Object Notation

Una forma compacta de comunicar y almacenar información

JSON es como un árbol

.statuses[]

Primera fase

.statuses[] .text

Segunda fase

Ejercicio

Tras visualizar la estructura JSON, extraer las fuentes (source) de todos los tweets anteriores

Ejercicio

Mirar los otros datos de un tweet y comentar en clase cuáles podían interesar medir y tabular

Con el texto extraído se puede trabajar de múltiples formas

✔ Buscar palabras

✔ Nubes de palabras

✔ Metadatos: longitud RTs...

Nubes en Tagul.com

Nube de pokemones

Ejercicio

Crear una nube de palabras usando el texto extraído anteriormente usando TagUl u otro servicio

Procesando la información: usando expresiones regulares

Usa expresiones regulares cuando quieras

sacar texto

filtrar texto

buscar expresiones complejas

Una expresión regular expresa la estructura de un texto

✔ Una o más palabras

✔ Dos Palabras En Mayúsculas

✔ Cualquier #hashtag

Usemos expresiones regulares online

RegExr: regexr.com

Una palabra es una expresión regular: /Pokemon/g

// ⇒ Delimita

gglobal ⇒ todas

Introduce en Expression

⇒ Mira en Text

⇒ Pulsa en List

pokemon regex

A veces Pokémon lleva acento

/Pok.mon/g
pok.mon regex

.: cualquier carácter (uno solo)

O no lleva mayúsculas

/[Pp]ok.mon/g
mayúsculas/minúsculas

[]: grupo de caracteres

Vocales ⇒ [aeiou]

O nos dan igual las mayúsculas

/pok.mon/gi
mayúsculas/minúsculas

/i: independiente de mayúsculas/minúsculas

/s: líneas múltiples

¿Han cantado bingo?

/\d/ig
escape-d

\ y letras: clases de caracteres

✔ Letras ⇒ \w

✔ Todo excepto letras ⇒ \W

✔ Espacio en blanco ⇒ \s

Esos acrónimos de dos o más letras...

/ [A-Z][A-Z]+ /g
rangos

[A-Z]: rangos de caracteres

✔ Combinado ⇒ [A-Z\d]

+: una o más repeticiones

*: 0 o más repeticiones

?: exactamente una aparición

Devorando hashtags

/\#.+/g
voraz

Devorando sólo hashtags

/\#.+? /g
voraz

List ⇒ Elimina $1 -

Tagcloud EPA

+,*: búsqueda voraz

+?,*?: búsqueda humilde: primero que cumpla

Volviendo a la línea de órdenes

Descarga git.io/trex-py

Usando expresiones regulares desde un programa

python get_tweets_regex.py jj.keys jjmerelo.key paro '[Ee][Pp][Aa]'
EPA rex

Ejercicio

Usar el último programa para extraer información sobre los hashtags asociados a alguna ONG conocida

Llegar donde nadie ha llegado...

✔ Usa el API para bajar tweets

✔ Usa expresiones regulares para extraer palabras o expresiones

✔ Procesa las palabras: nubes, gráficos

Hasta pronto

¿Dudas?