Está en la página 1de 47

UNIVERSIDAD TECNOLÓGICA METROPOLITANA

ESCUELA DE INGENIERÍA COMERCIAL

Extracción y análisis de datos de fuentes no estructuradas1.

Autores: Rafael Godoy Zavarce2 (rafael.godoyz@utem.cl)


Ariam Aranda Reyes3 (ariam.arandar@utem.cl)
Amaru Fernández Durán4(amaru.fernandezd@utem.cl)
Diana López Avilés5 (diana.lopez@utem.cl)
Claudio Molina Mac-Kay6(claudio.molina@utem.cl)

1 Documento sujeto a revisión continua, cualquier comentario contáctenos.


2 Estudiante de Ingeniería Comercial UTEM.
3 Investigadora del Laboratorio DATA FAE. Egresada Ingeniería Comercial UTEM.
4 Ingeniero en Informática, Diplomado Big Data, Docente Big Data.
5
Magister en Finanzas, Analista Banco Central, Docente Econometría Aplicada y Big Data.
6
Magister en Finanzas, Jefe de Carrera Ing. Comercial, Docente Finanzas, Mercado de Capitales,
Valorización de Instrumentos Financieros Derivados.

1
Índice
INTRODUCCIÓN ........................................................................................................................ 3
FILOSOFÍA DE DATOS ................................................................................................................ 3
¿CUÁNDO LOGRARÁ LA INTELIGENCIA ARTIFICIAL SUPERAR EL RENDIMIENTO HUMANO? ................................ 3
EVOLUCIÓN TECNOLÓGICA ....................................................................................................... 7
ERA DIGITAL ....................................................................................................................................... 7
INTELIGENCIA ARTIFICIAL (IA) ................................................................................................................ 8
PARADIGMA DE LOS GRANDES VOLÚMENES DE DATOS ............................................................................. 10
CARACTERÍSTICAS DEL BIG DATA .......................................................................................................... 11
FUENTES DE DATA MASIVA .................................................................................................................. 12
CARACTERÍSTICAS DEL SMALL DATA ...................................................................................................... 13
DILEMAS DE LOS GRANDES VOLÚMENES DE DATOS .................................................................................. 13
ARQUITECTURA TECNOLÓGICA ............................................................................................................. 14
FUENTES Y TIPOS DE DATOS .................................................................................................... 15
TIPOS DE DATOS ................................................................................................................................ 17
VARIABLES ....................................................................................................................................... 17
PROGRAMACIÓN ESTADÍSTICA ............................................................................................... 18
GIT ................................................................................................................................................. 18
BRANCH ........................................................................................................................................... 18
GIT-FLOW ........................................................................................................................................ 19
SOURCE TREE.................................................................................................................................... 20
RSTUDIO .......................................................................................................................................... 21
APRENDIENDO RSTUDIO – ALGORITMOS ............................................................................................... 21
OPERADORES .................................................................................................................................... 23
FUNCIONES ...................................................................................................................................... 24
CONDICIONALES ................................................................................................................................ 26
SECUENCIAS ..................................................................................................................................... 28
VECTORES Y LISTAS ............................................................................................................................ 29
DATAFRAMES ................................................................................................................................... 30
FOR Y LOOP ...................................................................................................................................... 31
HYPERTEXT MARKUP LANGUAGE ............................................................................................ 33
WEB SCRAPING....................................................................................................................... 38
PASO 1: IDENTIFICAR EL URL Y ASIGNARLO A UNA VARIABLE. .................................................................... 38
PASO 2: ALMACENAMIENTO DEL CONTENIDO HTML. ............................................................................. 39
PASO 3: EXTRACCIÓN DE LA INFORMACIÓN ÚTIL. .................................................................................... 39
PASO 4: ESTABLECER EL FORMATO QUE SE DESEA EXTRAER LA INFORMACIÓN .............................................. 40
PASO 5: EXTRAER COMO TABLA Y ALMACENAR EN UNA VARIABLE .............................................................. 41
PASO 6: VISUALIZACIÓN DE LA TABLA ................................................................................................... 41
EJERCICIO APLICADO .......................................................................................................................... 42
SCRIPT ECOOSFERA ............................................................................................................................ 43
ALCANCE Y RECOMENDACIONES ............................................................................................. 46
REFERENCIAS .......................................................................................................................... 47

2
Introducción
Este es un informe complementario de la asignatura Big Data, donde se realizará un
resumen, guía, ordenamiento y estructuración de la información impartida en el curso, con
el objetivo de servir como material de apoyo para los estudiantes que estén realizando esta
asignatura. Este abarca información básica de Big Data en relación a lenguajes
de programación, y en específico lo relacionado a R, y su IDE RStudio, que facilitan la
codificación, análisis y automatización de tareas repetitivas. Adicionalmente, se hará una
breve revisión de la historia de la evolución digital, una contextualización de los dilemas de
los grandes volúmenes de datos, definición de la arquitectura Hadoop y una explicación de
las técnicas de extracción de información (Web Scraping) a través de un ejercicio aplicado.

Filosofía de datos

¿Cuándo logrará la Inteligencia Artificial superar el Rendimiento Humano?

El desarrollo de la Inteligencia Artificial también nombrado por sus siglas como “IA”, es un
concepto de la última década. Con ella, la profundización de áreas como el Machine
Learning han inspirado múltiples estudios en la comunidad científica, quiénes se han
centrado en un solo aspecto, planteando interrogantes cómo ¿Serán los seres humanos
superados por las máquinas? ¿Llegará el desarrollo de IA al punto de suplir a los humanos?

El avance de la tecnología tendrá grandes consecuencias, no solo en el ámbito laboral


producto del desempleo, sino que también en otras actividades, como por ejemplo en el
sector automotriz, ya que el automóvil ya no necesita de una persona para ser conducido,
sino que en parte puede ser sustituido por una máquina, lo que traerá nuevos retos, como
una reconstrucción de la infraestructura vial, adaptación de las leyes y creación de Ciber-
Seguridad de los vehículos (Calo, 2015), lo que abarca diversos ámbitos de adaptación a
estas nuevas tecnologías, como los sociales, económicos y políticos.

Por otro lado, Grace, Salvatier, Dafoe, Zhang y Evans (2018) realizaron una encuesta
internacional a un total de 352 investigadores de IA, con el objetivo de captar su perspectiva
respecto al “Timing” en los avances de la Inteligencia Artificial, incluyendo aspectos
prácticos y de aplicación, además de la automatización de trabajos realizados por humanos,

3
incorporando su impacto en el aspecto ético y social. Los resultados son variados, puesto
que abarcan temáticas desde actividades sencillas como doblado de ropa, traducciones,
hasta otras más complejas como conducción de autos, escritura de reportes, procesos del
sector retail, entre otras. Un ejemplo dentro de esta investigación determina que la
realización de cirugías a través de máquinas, puede superar completamente el rendimiento
de los seres humanos en absolutamente todas las tareas.

Cabe mencionar que dicha investigación realiza énfasis en la predicción por parte de
expertos, indicando que en el momento que las máquinas puedan sustituir a los humanos
en dichas actividades, se hará necesario realizar un análisis de costos y el cálculo de la
Tasa de Conversión Baja, que respecta a que la utilización de esta maquinaria “inteligente”
no solo debe superar en rendimiento, sino que también en costo de la mano de obra.

Existen varias investigaciones que abarcan el crecimiento de la IA, su tendencia y


consecuencias en diferentes áreas, tales como en Hardware (Nordhaus, 2007), rendimiento
de actividades (Grace, 2013) y la automatización de los trabajos (Brynjolfsson y McAfee,
2012). Los resultados de la investigación se muestran en la siguiente gráfica, donde HLMI
significa “High-Level Machine Intelligence” o en español, Alto nivel de inteligencia artificial,
el cual es obtenido cuando una máquina, sin ningún tipo de guía puede realizar todas las
actividades de manera más eficiente y a menor costo que un humano.

En el gráfico 1, el eje Y representa la probabilidad de obtener un alto nivel de inteligencia


artificial, mientras que el eje X muestra la cantidad de años transcurridos a partir del 2016.
El objetivo de este es visualizar los resultados de las predicciones sobre HLMI, realizadas
por los profesionales de las áreas relacionadas con IA, en cierta cantidad de años,
reflejando una probabilidad de ocurrencia del 50% dentro de 45 años y un 10% dentro de
los 9 años.

4
Gráfico 1: Predicciones de HLMI de 352 investigadores.

Fuente: When Will AI exceed human performance (2018)

Por otro lado, las proyecciones de una completa sustitución del campo laboral se encuentra
en un rango completamente distinto, donde de manera agregada existe un 50% de
probabilidad de ocurrir dentro de 122 años, y un 10% de probabilidad dentro de 20 años.

Esta investigación se resume en 5 puntos:

1. Los investigadores creen que el campo del Machine Learning se ha acelerado


en los años más recientes. El 67% de los entrevistados opinan que el progreso es
más veloz en la segunda mitad de su carrera, considerando que la carrera promedio
de los entrevistados es de 6 años.
2. Un progreso explosivo de la inteligencia artificial después del punto HLMI es
percibido como algo posible pero improbable. Algunos autores afirman que
cuando HLMI sea completado, la Inteligencia Artificial será capaz de reemplazar a
los humanos en todas las tareas. Se les preguntó a los investigadores si esto
sucedería en un rango de 2 años posterior al HLMI y la media de las respuestas
fueron un 10%. También se les preguntó sobre un crecimiento explosivo posterior
al HLMI donde el promedio es de 20%.
3. HLMI es percibido como un evento que posiblemente tenga efectos positivos
pero con posibles riesgos catastróficos. Se preguntó si el impacto del HLMI será
positivo o negativo, donde el 25% respondió que será “Positivo” y el 20% espera un
impacto “Extremadamente positivo”. En contraste solo el 10% estima un impacto
“negativo” y 5% “Extremadamente negativo”.

5
4. La sociedad debe priorizar la investigación orientada a minimizar los riesgos
potenciales de IA. El 48% de los investigadores piensan que las investigaciones
de minimización de riesgos debe ser la prioridad de la sociedad más que el Status
Quo.
5. Los asiáticos esperan que HLMI ocurra 44 años antes que los
norteamericanos. En el gráfico 2 muestra los resultados agrupados por regiones
(Asia, Europa, Norteamérica y Otras) respecto a cuándo ocurrirá el HLMI. Los
asiáticos proyectan que dentro de los próximos 30 años aparecerá este fenómeno,
mientras que Norteamérica estima una media de 76 años, donde sus principales
representantes son los países de China y Estados Unidos, respectivamente.

Gráfico 2: Predicciones de HLMI de 352 investigadores.

Fuente: When Will AI exceed human performance (2018)

6
Evolución tecnológica
Alan Mathison Turing fue un matemático inglés nacido en 1912 que tiene el reconocimiento
por ser el creador de la primera máquina que pudo generar respuestas lógicas a base de
reglas, nombrada como Máquina de Turing (1936).

De aquí deriva el Turing Test, el cual es una prueba utilizada para evaluar máquinas según
su habilidad de poseer un comportamiento similar al de un ser humano. Dicho de otro modo,
este test evalúa la capacidad de una máquina y un evaluador (persona) de reconocer y/o
traducir el lenguaje natural de una conversación entre un individuo y una máquina. Cuando
el evaluador no pueda distinguir entre la máquina y el ser humano, ésta habrá pasado la
prueba.

Esto da paso al comienzo de una nueva era respecto a la tecnología y su capacidad de


avance, ayudando a automatizar procesos que antes habrían sido realizados por humanos.

Era digital

Gordon Moore fue un ingeniero norteamericano que descubrió que cada año el número de
transistores por unidad de superficie en circuitos integrados se estaba duplicando (gráfico
3). Una de las evidencias de esto es que cada año se necesitaba menos espacio para
realizar procesos más complejos en un dispositivo, entonces, por un lado, el tamaño del
transistor disminuye cada año, y por otro, aumenta su utilización (Revista digital de la
Universidad Nacional Autónoma de México, 2005, vol. 6). A esto se le llama Ley de Moore,
que ha marcado un hito en la era digital donde el aumento de la capacidad de cómputo de
las máquinas ha permitido la evolución de las tareas que son capaces de realizar, dando
espacio a la Inteligencia Artificial y la adaptación de nuevas tecnologías en el qué hacer
humano.

7
Gráfico 3: Evolución del número de componentes de función integrada en el tiempo.

Fuente: Cramming more components onto integrated circuits (1975)

Inteligencia Artificial (IA)

La inteligencia artificial es capaz de percibir, reaccionar y adaptarse al entorno donde se


desenvuelve, por medio de la creación de un programa o algoritmo que permita realizar
estas acciones.

Dentro de esta disciplina se encuentran sub áreas que sostienen a la IA, las cuales son
Machine Learning y Deep Learning Machine Learning, que presentan la característica de
mejorar sus algoritmos cada vez que se le expone a cantidades de datos más grandes en
el tiempo. Por su parte, Deep Learning es un grupo específico del Machine Learning donde
se crean redes capaces de aprender, sin supervisión o con supervisión parcial, con grandes
cantidades de datos (figura 1).

8
Figura 1: Bosquejo de los componentes de la Inteligencia Artificial

Fuente: Presentación de Clases de Big Data UTEM.

Debido al avance de la inteligencia artificial y la capacidad que demuestran las máquinas


para realizar las tareas que los seres humanos efectúan, se exponen las siguientes
interrogantes:

¿Qué pasará con el capital humano?


¿Cómo afectará a la sociedad?
¿Cómo afectará a la economía?
¿Son los robots más educados que los humanos?
¿Son los datos capaces de describir la conducta humana?

Las respuestas a estas preguntas no son de fácil desarrollo y en la actualidad tampoco


tienen un camino marcado de solución, sin embargo, lo importante está en entender y
hacerse parte de la evolución tecnológica.

En aspectos generales, no se es capaz de estimar cuándo la IA podrá sustituir a los


humanos en su totalidad, asimismo, existen tareas o funciones que aún no son capaces de
realizar los robots, y la inteligencia que deben desarrollar parece estar lejos de la actualidad
(Grace y Salvatier, 2018).

9
Paradigma de los grandes volúmenes de datos

La producción exponencial de información (figura 2) y el uso de redes sociales, han puesto


a disposición de grandes empresas un sin fin de información gratuita de perfiles y
caracterizaciones de usuarios, donde las personas exponen sus gustos, ideologías, sueños
futuros y sus diversas conductas. Las empresas por su parte, usan esta información con el
objetivo de obtener beneficios económicos, vendiendo estos datos de manera procesada,
o bien ofreciendo servicios y productos que puedan desear estos usuarios. Sin embargo, el
uso de estas redes sociales, no sólo ha servido para rentabilizar a entidades, sino que
también para comunicar y educar.

Figura 2: Transacción de información desde redes sociales.

Fuente: Centre for Learning and Teaching7

En este sentido, Seamean y Tinti-Kane (2013), realizaron una encuesta a aproximadamente


8,000 miembros pertenecientes a facultades de educación superior. Ellos descubrieron que
el uso de redes sociales en la enseñanza aumentó de 34% en 2012 a 41% en 2013 (figura
3), este resultado respecta tanto de la petición por parte de los profesores a los estudiantes
para que indaguen en redes como blogs, wikis, podcasts (videos), entre otras, como
también del aumento natural de estos medios producto de la digitalización8.

7
Véase en http://cltcms.vtc.edu.hk/what-happens-online-in-60-seconds/
8 Extracto obtenido de Centre for Learning and Teaching.

10
Figura 3: Resultados del uso de redes sociales enfocados a la enseñanza

Fuente: Seaman & Tinti-Kane (2013). Social media for teaching and learning

Por otro lado, no solo obtener una masa de información es útil para analizar aspectos
económicos, educacionales o de otra índole, sino que también es necesario manejar y
utilizar datos específicos que aborden temáticas complejas. Con esto nace el paradigma
entre Big Data y Small Data, donde la última es la más sencilla, ya que consta de una
cantidad y tamaño de datos suficientemente pequeños para el entendimiento humano. Big
Data, se enfoca en todo lo contrario, cantidades de información gigantes y difíciles de
comprender que deben ser realizadas por modelos y arquitecturas computacionales
complejas.

Características del Big Data

• Grande: Hace referencia a terabytes de información, aunque esta medida en la


actualidad parezca relativa a la era en la que vivimos, dado al alto dinamismo y la masa
de información que se transmite velozmente.
• Compleja: Existen datos estructurados y no estructurados que dificultan el análisis y
extracción.
• Diversa: La data es multimodal, es decir, posee diferentes tipos de dominios como
imágenes, tweets, números complejos, etc.
• Distribuida: La manera en que la data está almacenada y procesada.

11
Fuentes de data masiva

Previamente se ha mencionado la importancia del Big Data en el procesamiento y análisis


de gran cantidad de datos. Estos últimos pueden provenir de diferentes fuentes de data
masiva, tales como las siguientes:

Data Histórica:
• E-science (Astronomía, biotecnología, etc)
• Data Warehouse (Páginas con set de datos)
• Software applications (Logs, clicks, etc)

Streaming Data:
• Social Media (Facebook, twitter, Instagram, etc)
• Sensor Data (GPS, Weather, etc)

Figura 4: Datos que son difícil comprensión para un computador

Fuente: Presentación clase de Big Data UTEM

12
Características del Small Data

• No se requiere grandes volúmenes ni análisis estandarizados, se procesa la información


dependiendo de lo que se requiere.
• Se mezclan las identidades offline y online, es decir, se obtienen datos de múltiples
fuentes, no solo de internet.
• Big data es una disciplina incompleta, puesto que entrega una identidad virtual que
puede no ser correcta, además de estar basado en observaciones realizadas y editadas
por los usuarios. Este problema no se presenta en Small Data, ya que en ella es más
sencillo seleccionar las observaciones y especificar la calidad de esta información.

Dilemas de los grandes volúmenes de datos

De lo expuesto anteriormente, se desprenden disyuntivas respecto al Big Data relacionadas


con la capacidad de almacenamiento, el procesamiento de los distintos tipos de datos, el
entendimiento y análisis de información, como también la estabilidad técnica de mantener
el crecimiento de estos datos.
Estos dilemas (figura 5) podrían ser resueltos de la siguiente manera:

Figura 5: Dilemas que impulsan el Big Data

Fuente: INTEC Big Data y la Economía Digital

13
• Para guardar y procesar, se necesita una alta capacidad computacional, es decir,
un computador con la potencia necesaria para descargar y transformar la data a
exigencia del usuario. Esto resuelve el paradigma en cuanto al crecimiento del
internet y los grandes volúmenes de información.

• “Mass Media a Social Media” abarca los tipos de datos que se encuentran en las
principales fuentes de información de la Web, como lo son las redes sociales,
buscadores de Internet, entre otros. Siendo estos últimos quienes presentan
información en formatos “No Estructurados”, la cual se requiere modelar de manera
estandarizada para que sean posibles de analizar por una persona, sin embargo, al
tratarse de gigantescos volúmenes de datos se vuelve prácticamente imposible
obtener conclusiones, de esta manera Machine Learning y la Inteligencia Artificial
(IA) juegan un papel fundamental para entregar resultados de fácil entendimiento
humano.

• El “Internet de las Cosas” o IoT por sus siglas en inglés, es la interconexión de las
actividades y utensilios diarios al internet, impulsando a nuevas tecnologías como
la banda ancha de 5G. Es así, como el protocolo de Internet (IPv6) es un nuevo
reglamento que busca disminuir las restricciones al número de direcciones de
internet, limitaciones que existían en la versión anterior IPv4, permitiendo que el
crecimiento de los datos se mantenga en el tiempo.

Arquitectura tecnológica
El Big Data contempla repositorios de data masiva, lo cual hace referencia a la tecnología
necesaria para procesar y analizar grandes volúmenes de datos, lo que requiere una
arquitectura distribuida de la información, conseguida por ejemplo en un cluster.

Un cluster está compuesto por un conjunto de computadores que trabajan en paralelo para
realizar búsquedas a gran escala. El concepto que existe detrás de esta arquitectura es
que, si se necesita realizar una tarea, en vez de dársela a un computador gigante, se le
entrega dicha tarea a muchas máquinas, donde cada una leerá solo un pedazo de la
información y luego se sincronizarán sus respuestas. Por ejemplo, esto ocurre cuando se
hace una búsqueda en Google. Para ello, se debe buscar la información requerida en toda

14
la internet, si esta tarea la realizara una sola máquina, esta se demoraría semanas, meses
o años. En cambio, si se distribuye la búsqueda en varias máquinas, es posible cumplir la
tarea en tiempos que se perciben como casi instantáneos.

Una de estas arquitecturas se puede ver en la Figura 6, que muestra el Apache Hadoop
Platform, la cual consiste en un conjunto de herramientas que tienen la capacidad de
comunicarse con el sistema de archivo HDFS (del inglés Hadoop Distributed File System),
quien se encarga de distribuir la información en las diferentes computadoras o nodos, con
el objetivo de hacer consultas del tipo MapReduce. Considerando a “Map” como la
búsqueda de una llave en cada una de las particiones y “Reduce” que genera el conteo de
estas llaves. Posibilitando, el conteo de frases que permitan ordenar y entender tendencias
en grandes grupos de información. Cabe destacar, que este proceso es tratado de una
manera singular para cada tipo de información y fuente, debido a que cada una de ellas
presenta diversas maneras de extraer y analizar la data contenida.

Figura 6: Arquitectura Hadoop

Fuente: Presentación de clase Big Data UTEM.

Fuentes y tipos de datos


• Estructurada: Esta es una abstracción que se realiza sobre objetos o datos, para
ello se generaliza la información, lo que significa que una categoría se encuentra
relacionada a su detalle, para evitar la repetición de datos y exceso de información.
Por ejemplo, los países tienen capitales y estas últimas conforman las

15
características de aquel país, entonces, existirá una tabla que contenga todas las
características del país, y otra tabla contendrá el detalle de cada capital (figura 7).
Lo anterior evita que todo sea una gigante tabla llena de información. Luego, estos
datos son leídos y analizados por los softwares computacionales SQL, donde SQL
corresponde a la estructura sintáctica y semántica para extraer este tipo de
información. Entre estos se encuentran bases de datos como MS, SQL, ORACLE,
MySQL, POSTGRES.

Figura 7: Bases de datos relacionales

Fuente: Presentación clase Big Data UTEM

• Semi-estructurados: Son conocidas también como NoSql, dado que el detalle de


los datos puede ir cambiando en el tiempo, a diferencia del SQL que no lo permite
fácilmente. Las bases de datos SQL tienen una estructura que se ve limitada por los
campos de la tabla, por lo que si se desea agregar un nuevo campo, la cantidad de
procesos pueden llegar a ser tan complejos que al momento de crearlo se debe
considerar la mayor cantidad de casos posibles para evitar que se pierda
información al realizar este cambio, a diferencia de las semi estructuradas las cuales
pueden tener u omitir dicha información con mucha mayor libertad, sin embargo, su
velocidad no siempre es comparable a una base de datos SQL. Un ejemplo de
NoSql son bases de datos como MongoDB, DinamoDB, HBase, Neo4j, entre otros.

• No estructurada: Son aquellos datos agrupados en cualquier otro formato que no


facilite el entendimiento para los Softwares de consulta SQL o NoSql, por ejemplo,
tweets, blogs, imágenes, vídeos, words, correos, redes sociales, entre otras.

16
Tipos de datos

La tipología de los datos indica al computador y/o programador información de aquellos


datos que se van a procesar, esto incluye imponer restricciones como los posibles valores,
y las operaciones que puedan realizarse.

Absolutamente todos los valores poseen alguna de las siguientes tipologías:

• Enteros (INT): Números sin decimales, positivos y negativos


• Reales (DOUBLE): Números con decimales y fracciones.
• Booleanos (BOOLEAN): Dato que tiene dos posibles estados True o False
• Carácter (CHAR): Letras, símbolos o números que no van a ser utilizados para cálculos
y se representan entre comillas.
• Texto (STRING): Conjunto de caracteres que pueden incluir texto o números.

Variables

Es un espacio de almacenaje con nombre, donde se guarda información o datos de los


siguientes tipos:
• Lógico (Booleano)
• Número entero (Double)
• Número de coma flotante (Real o decimales)
• Carácter (Textos)
• Cadena
• Tablas de Datos (Data-Frame)
• Listas
• Vectores
Esta puede cambiar de valor en el transcurso del algoritmo, a través de la asignación que
se verá en el apartado de “Operadores”.

17
Programación estadística

En este apartado se revisarán conceptos de repositorios en la nube como gestionadores de


información y presentación de documentos, además del estudio y aplicación del lenguaje
R.

Git

Un Git es un administrador de los cambios que se van generando en la codificación,


permitiendo tener un orden de las actualizaciones que se van realizando. Además, es capaz
de llevar los registros de los cambios que se van efectuando en cada uno de los archivos y
coordina los distintos usuarios que trabajan sobre este.

Figura 8: Estructura de funcionamiento de GIT

Fuente: Presentación de clase Big Data UTEM

Branch

Branch o Rama corresponden al espacio de trabajo en el que estará versionado el código.


Existen cinco tipos de Branch, Rama Master y Rama DEVELOP además de 3 auxiliares
que son Rama Feature, Rama Release y Rama HotFix.

18
Figura 9: Ramas de trabajo en GIT

Fuente: Presentación de clase Big Data UTEM

Git-Flow

Es la organización de las versiones actualizadas de codificación según su importancia,


función y estructura, utilizando los tipos de ramas mencionadas anteriormente.

La rama master es aquella que contiene la versión final de la programación, debe


considerarse que la rama development es en la que se desarrollan nuevas características
del código en que se está trabajando, y representa una nueva versión que luego es
enlazada a la rama master. A continuación, se muestra su funcionamiento en la siguiente
figura.

19
Figura 10: Flujo para el versionamiento de tareas.

Fuente: Presentación de clase Big Data UTEM

Source Tree

Es un Cliente o Aplicación de escritorio para desarrolladores en


Windows, que permite utilizar a cabalidad todas las capacidades de los
GIT, con una interfaz sencilla y simple.

Sourcetree simplifica la manera en la que se interactúa con los repositorios de GIT, de


manera tal que enfocarse en codificar sea más fácil. Algunas de las características de este
software son las siguientes:

• Se pueden manejar los repositorios (GIT) desde la computadora de manera Local o


como Anfitrión.
• Conectar los repositorios en diferentes aplicaciones como GITHUB
• Subir archivos con el botón de “Push”
• Descargar los repositorios de estas páginas y editarlos desde la computadora.
• Llevar un registro de los cambios y recuperar versiones anteriores.
• Sube los registros en las diferentes ramas posibles.

20
RStudio

Es un desarrollador de ambientes integrado en lenguaje R para realizar


programaciones, es decir, un editor de código. RStudio es una aplicación
de escritorio que permite crear “Scripts” donde se puede escribir y
ejecutar códigos, visualizando simultáneamente el comando y sus
resultados. RStudio facilita la utilización y descarga de “Paquetes”, los que permiten usar
funciones para hacer cálculos o visualizaciones avanzadas.

Algunas de las funciones que permite R son:

• Escribir códigos sin que se obtengan errores antes de ejecutarlos.


• Guardar variables de diferentes tipos de datos.
• Ejecutar la selección que se desea del código.
• No perder lo que se ejecutó anteriormente y así corregirlo más rápido.
• Facilita la descarga de paquetes, su visualización y uso.
• Facilita la escritura del código a través de recomendaciones.

Aprendiendo RStudio – Algoritmos

Un algoritmo es cualquier proceso computacional que toma algún set de valores, como input
y produce un resultado con valor o valores residuales, también conocidos como outputs.
Entonces un algoritmo es una secuencia de pasos computacionales que convierten un input
en un output.

Ejemplo: Ordenar una secuencia de números de mayor a menor o de menor a mayor.


• Input: a ,a ,a ,…,a
1 2 3 n

• Output: a ,a ,a ,…,a en a <a <a …< a


1 2 3 n 1 2 3 n

21
Ejercicio 1: Ejercicio del Granjero

¿Cómo un granjero puede cruzar al otro lado del río una oveja, un lobo, y un arbusto, usando
una canoa, si la canoa sólo puede soportar el peso de uno de ellos?

Fuente: Presentación clase Big Data UTEM

La solución del ejercicio se muestra en el siguiente diagrama 1.

Diagrama 1: Resolución ejercicio 1.

Fuente: Elaboración propia.

22
Operadores

Es un símbolo que indica una operación matemática la cual se llevará a cabo en los
algoritmos que se crearán. Estas pueden ser:

• Asignación: Es aquel que permite asignar o reasignar valores a variables, normalmente


se representa con el signo igual (=) y en R se evidencia de la siguiente manera “<-“.

• Lógicos: Proporcionan un resultado a partir de que se cumpla o no una condición,


produciendo resultados booleanos (TRUE o FALSE) y sus operadores son valores
lógicos.

Figura 11: Operadores lógicos.

Fuente: Presentación clase Big Data UTEM

• Negación: Sirve para convertir un código en su inverso lógico sin necesidad de escribirlo
a la inversa, para ello se utiliza un signo de exclamación (!). Por ejemplo, !(TRUE) ->
FALSE.

• Disyunción: También conocido como “o” y representado con el símbolo “||” en R. En


cuanto a su funcionamiento, esta entrega un “TRUE” cuando al menos una de las
pruebas lógicas es verdadera y entrega “FALSE” cuando todas son falsas. Por ejemplo,
TRUE||FALSE->TRUE.

23
• Conjunción: También conocido como “y”, es representado por “&&” en R. Respecto a
su funcionamiento, esta entrega “TRUE” cuando todas las pruebas lógicas son
verdaderas y “FALSE” cuando al menos una de ellas es falsa. Por ejemplo, TRUE &&
FALSE -> FALSE.

• Comparación: También conocidos como operadores relacionales que sirven para tomar
decisiones mediante comparaciones (>, <, ==, !=, etc). Al utilizarlos el resultado obtenido
es un valor booleano.

• Aritméticos: Son aquellos que se usan para manipular datos enteros y/o reales. Existen
dos tipos, unarios y binarios, el primero es utilizado para dar valoración positiva o
negativa a los datos y el segundo para realizar cálculos entre 2 expresiones ( +, -, *, /,
%, etc).

Figura 12: Operadores matemáticos.

Fuente: Presentación clase Big Data UTEM

Funciones

Es una estructura que realiza tareas dentro de un programa, recibiendo valores de entrada
y entrega valores de salida, bajo esta definición existen 2 tipos de funciones:

• Predeterminadas: Son aquellas que se encuentran incorporadas en los paquetes que


se descargan, estos se encuentran disponibles en todo momento una vez activados con
la función “Library()”. Por ejemplo, la función “mean” que entrega el promedio de un
conjunto de datos numéricos.

24
• Creadas: RStudio ofrece la posibilidad de crear funciones a conveniencia, estas se
forman a través de la función “function”, la que requiere variables y las operaciones a
ejecutar (figura 13). Es importante que cada función sea nombrada de manera clara en
relación con su objetivo.

Para la realización de una función es necesario conocer una receta de diseño y para esto
es necesario saber:

• ¿Qué es lo relevante del enunciado del problema y qué se puede ignorar?


• ¿Qué valores y tipos de datos recibirá la función como parámetros de entrada y salida?
• ¿R provee las operaciones necesarias para realizar la tarea objetivo?
• Finalmente, es necesario testear la función y verificar que realice los cálculos de manera
efectiva.

Figura 13: Ejemplo para la creación de una función que entregue el área de un círculo9.

Fuente: Elaboración propia en RStudio

9 El resultado del ejemplo es 235.62

25
Condicionales

Estos son importantes en el lenguaje de programación, ya que permiten que la estructura


de los algoritmos sea secuencial. Existen dos estructuras de control:

● Condicionales o bifurcaciones: Ejecuta distintas instrucciones, mientras se van


verificando otras condiciones.
● Condicional IF: Tiene una estructura sencilla, verifica una condición determinada,
ejecuta una instrucción y luego sigue adelante. Si la condición no se cumple, entonces no
se ejecuta dicha instrucción y se sigue adelante.

Figura 14: Sintaxis en R y diagrama representativo de la estructura condicional simple.

Fuente: Presentación de clase Big Data UTEM

Ejemplo 1: Si la variable “X” es mayor a 5 muestra “Mayor”. Primero se asigna a la variable


X un valor, en este caso 6, y luego se ejecuta el condicional.

Fuente: Elaboración propia en RStudio

● Condicional IF-ELSE: Esta estructura permite incorporar condiciones donde hay


diferentes acciones a realizar, es decir, si se cumple una condición, se ejecuta una serie de
instrucciones, de lo contrario se ejecutan otras instrucciones.

26
Figura 15: Sintaxis en R y diagrama representativo de la estructura condicional IF-ELSE

Fuente: Presentación clase de Big Data UTEM

Ejemplo 2: Utilizando el mismo ejemplo anterior, se agrega la nueva condición en la que


si es menor a 5 responderá un “Menor”. Primero se le asigna un valor a la variable x y
luego se ejecuta el comando.

Fuente: Elaboración propia en RStudio

● Condicional Múltiple: Es una estructura más compleja que se rige por IF- ELSE IF-
ELSE. En este se verifica la primera condición, si esta se cumple, se ejecuta la primera
instrucción, de lo contrario, pasa a la segunda condición, corroborando si esta se cumple o
no, realizando el mismo proceso que la anterior y en caso que ninguna se cumpla se ejecuta
la tercera instrucción.

27
Figura 16: Sintaxis en R de la estructura condicional múltiple.

Fuente: Presentación de clase Big Data UTEM

Ejemplo 3: Utilizando el mismo ejemplo se obtiene lo siguiente: Si el número es mayor a 5


el código responde “Mayor”, si el número es menor a 5 responderá “Menor” y en caso que
ninguna de las dos condiciones anteriores sea la correcta, mostrará un “Igual”.

Primero se asigna el valor 5 a la variable x, posteriormente se ejecuta la condicional.

Fuente: Elaboración Propia RStudio

Secuencias

Permite mostrar una secuencia o conjunto de números ordenados de mayor a menor o


viceversa. El primer dato que se determina será quien inicie la secuencia y el segundo quien
la terminará. Este proceso se identifica con “:” entre los datos.

Ejemplo 4: Secuencias en R
1:10 resulta los números 1,2,3,4,5…..10
10:1 resulta los números 10,9,8,7….1

28
Vectores y listas

Los vectores son la estructura más sencilla que se puede realizar en R, en la que se guardan
uno o más datos de un mismo tipo, es decir, no se pueden mezclar datos de diversas
tipologías, es por ello que son nombrados como vectores numéricos, de cadena de texto,
lógicos o secuenciales. Para guardar y crear un vector se requiere asignar a una variable
el comando “c(dato, dato)”, según la sintaxis de R, donde “dato” es el número, texto o
booleano que quiere agregar al vector.

Ejemplo 5:
# Cree un for que recorra los días de la semana y dos vectores que almacenen los días
de la semana y fines de semana (sábado y domingo).

#Se crea vector vacío para días de la semana y otro para fin de semana
diassemana <- c()
diasfindesemana <- c()

#Se guarda información en un vector respecto a todos los días de la semana


semana <- c("lunes","martes","miercoles","jueves","viernes","sabado","domingo")

#Se crea un loop, donde su i es nombrado como días, los cuales se encuentran en vector
#”semana”. Este for recorrerá dicho vector y le asignará lo días correspondientes a los
#vectores vacíos que se crearon fuera del loop

for(dias in semana){
if(dias=="sabado"||dias=="domingo"){
diasfindesemana <- c(dias,diasfindesemana)
}else{
diassemana <- c(dias,diassemana)}
}
print(diassemana)
print(diasfindesemana)

29
Por otro lado, las listas son similares a los vectores, pero se diferencian en que los
elementos contenidos pueden tener diferentes tipos, es decir, se pueden mezclar datos
numéricos, caracteres, secuencias, entre otros. La sintaxis en R para guardar y crear una
lista consiste en otorgar un nombre y a él asignarle “list(número, “palabra”)”.

Ejemplo 6:

# Se crea una lista con todo tipo de datos


lista <- list(2,TRUE,6,2,"JUAN",c(5,6,10),11,20,15)
# Se muestra el tipo de dato de la variable "lista"
print(typeof(lista))
# Se muestra el valor ubicado en la posición de la variable "lista"
print(lista[5])
# Se muestran todos los datos de menos el de la posición 2 de la variable "lista"
print(lista[-2])
# Ejemplo de que pasa cuando se pone la ubicación de un valor que no existe en la variable
"lista"
print(lista[12])
# Recorriendo cada uno de los objetos de la lista y viendo los tipos de datos
for (elemento in lista) {
print(typeof(elemento))}

Dataframes

Un dataframe es similar a una hoja de cálculo con filas y columnas. Principalmente sirven
para almacenar vectores, listas o bases de datos con las que se puede trabajar en R. Para
que estas mantengan cierto orden que permita procesar fácilmente su información, es
necesario que las columnas representen cada una de las variables, y las filas cada una de
sus observaciones. Para guardar y crear un dataframe, la sintaxis es “data.frame()”
asignada a un nombre. Cabe destacar que en el contenido de aquella sintaxis se pueden
adjuntar estructuras de datos ya creadas, otorgándoles un nombre que saldrá en los índices
de filas y columnas.

30
Ejemplo 7:

# Se crea Data Frame


autos <- data.frame(auto = c("impreza","outback","palio","mazda3"),
marca = c("subaru","subaru","fiat","mazda"),
color = c("azul","rojo","blanco","blanco"))

# Ver el DataFrame
View(autos)

# Ver columna auto del dataframe autos


print(autos$auto)

# Ver una estadística rápida de la columna marca


print(table(autos$marca))

# Filtra y muestra solo los autos blancos


print(autos[autos$color == "blanco",])

# Crea gráfico rápido y sencillo de las marcas


plot(autos$marca)

For y loop

Un Loop es una forma de automatizar tareas repetitivas, un ejemplo de ello es un for, el


cual es un bucle que recorre una estructura o iteración de elementos donde se establece
una condición. Este bucle termina cuando se cumple la condición.

31
Figura 17: Estructura para un LOOP.

Fuente: Presentación de clase Big Data UTEM

Ejemplo 8: Función que contabilice de 1 a 5 misisipis (“Cuento 1:5 misisipis”). La primera


parte del For define una variable “i” que se le asignará una secuencia, en este caso,
números del 1 al 5. La segunda parte explica qué se hará con esa variable cuando tome
cada valor, en este ejemplo se le pide que imprima o responda cada número de la secuencia
entre 2 palabras, “cuento y misisipis”.

Fuente: Elaboración propia en RStudio

Ejemplo 9: For que recorre una lista de números

Fuente: Elaboración Propia RStudio

32
En el ejemplo 9, se le indica al For que “i” será un valor desde el 1 hasta el largo (comando
length) de una lista con sintaxis equivalente a “ListaDeNumeros <- list(1, 5), es decir, el For
recorrerá su contenido y dará como resultado la frase “cuento nº misisipis” al igual que en
el ejemplo anterior.

HyperText Markup Language


HTML es un lenguaje interpretado que nace en 1980 con Tim Berners-Lee, quien propuso
un nuevo sistema de "hipertexto" para compartir documentos, que permitía que los usuarios
accedieran a la información relacionada con los documentos electrónicos que se estaban
visualizando.

Este es un lenguaje de demarcación estándar (sin lógica) para la estructuración de páginas


web a través de etiquetas, orientado a los documentos. Este puede ser apoyado o asistido
por tecnología como CSS y JavaScript que son lenguajes de programación.

Por ejemplo, los browser o buscadores (Google Chrome, Mozilla, Firefox, etc.) reciben
documentos HTML en un servidor, que puede ser local o web, y utilizando “Tags” lo
transforman en otros recursos multimedia, como imágenes, videos, gif, textos coloridos,
entre otros.

HTML se conforma de elementos, que son los bloques que forman las páginas, que a través
de esta estructura se pueden incorporar desde imágenes interactivas, hasta tipos de textos
como encabezados, párrafos, títulos, links, notas y otros. Estos elementos son delimitados
por los ya mencionados “tags”, usando los “Angle Brackets” (</>).

Tags

Son etiquetas o instrucciones que se le entregan al navegador y son utilizados como guía
para la realización de funciones. Estos pueden tener un atributo, es decir, pueden agregar
características como “Cuadro de Texto”, “Cuadro de Contraseña”, “Botones”, etc.

33
Ejemplo 10: Esquema de un tag
<nombre-de-elemento atributo="valor">Contenido</nombre-de-elemento>

La Estructura básica de un HTML es la siguiente:

<html> 🡪 Inicia con esta etiqueta


<head> 🡪 Identifica la cabeza o encabezado de la página
<title> 🡪 Representa el título.
Título de la página 🡪 Se incorpora el texto que se mostrará como título.
</title> 🡪 Cierre del título
</head> 🡪 Cierre del Encabezado
<body> 🡪 Apertura del cuerpo de la página
… 🡪 Información de la página web
</body> 🡪 Cierre del cuerpo de la página
</html> 🡪 Finalización del código HTML

• Headings: Corresponde a los encabezados de los documentos, el tamaño puede


variar dependiendo del número que acompañe al Tag. Entre más grande el número,
menor será el tamaño del texto.

<h1></h1>

<h2></h2>

<h3></h3>

<h4></h4>

<h5></h5>

<h6></h6>

• Links: Son relaciones o accesos directos que son introducidos dentro de la


estructura en HTML y permiten acceder a otras páginas o archivos. Se escribe de
la siguiente manera:

<a href=”url”>Texto visible </a>

34
• Espacio de división: Es un Tag que especifica el lugar donde se desea mostrar la
información, imagen, video, etc. A dicho Tag se le asigna un nombre que
posteriormente será utilizado como referencia para realizar extracciones de datos.
Estas divisiones también pueden ser utilizadas para dar formato en conjunto con los
Style, que se verán en el siguiente apartado. Este espacio se representa de la
siguiente manera:

<div id= “Posición”>Contenido </div>

Las posiciones poseen múltiples opciones que se expresan en la figura 18.

Figura 18: Separación de una página web a través de div.

Fuente: Presentación clase Big Data UTEM.

• Tablas: Es un Tag que permite insertar tabulaciones dentro de páginas web,


especificando las filas a las que corresponde, empezando por los títulos. Este se
representa de la siguiente manera.

35
Ejemplo 11: Estructura de una tabla en HTML y su representación

<table style="width:100%"> 🡪 Se especifica el estilo de la tabla.


<tr> 🡪 Inicia Fila de títulos
<th>Título 1</th>
<th>Titulo 2</th> 🡪Al usar “th” los textos se centran y se
<th>Titulo 3</th> Se colocan en negrillas.
</tr> 🡪 Finaliza fila de títulos
<tr> 🡪 Inicia Fila 1
<td>Fila 11</td>
<td>Fila 12</td>
<td>Fila 13</td>
</tr> 🡪 Finaliza Fila 1
<tr> 🡪 Inicia Fila 2
<td>Fila 21</td>
<td>Fila 22</td>
<td>Fila 23</td>
</tr> 🡪 Finaliza Fila 2
</table> 🡪 Finaliza Tabla

Título 1 Título 2 Título 3

Fila 11 Fila 12 Fila 13

Fila 21 Fila 22 Fila 23

Fuente: Elaboración Propia con HTML

• Styles: Son nomenclaturas que se utilizan para dar estilo a las estructuras de una
página web, estas pueden ser Tablas, Nodes (Cajas), Headings (Títulos), entre
otros. Considerando que el conocimiento de cada uno de los componentes de HTML
permite extraer información desde los sitios web, teniendo en cuenta que se les
asigna un nombre único a cada estructura para incorporar un estilo. Los métodos
utilizados son:

36
1. <elemento class=”nombre”>contenido </elemento>, en este se especifica el
elemento que va a ser alterado y se le otorga un nombre único.

.nombre {Formato} se ubica en el apartado de Style donde se especifica el formato


que se va a aplicar al elemento, que puede ser de muchos tipos, desde la fuente, el
color de fondo, bordes, entre otros .

2. <div id=”nombre”> contenido </div> en este se especifica el elemento que va a


ser alterado y se le otorga un nombre único.

#nombre{Formato} se ubica en el apartado de Style donde se especifica el formato


que se va a aplicar al elemento.

Ejemplo 12: Estructura y representación de Style en HTML

<html>
<head>
<style> 🡪 Inicio de Style
.gris{ background-color: gray; } 🡪 Se establece el formato y se
.rojo{ background-color: red; } le asigna el elemento “gris”
#negro{ background-color: black; } Se establece el formato para “negro”
</style> 🡪 Finalización de espacio Style
</head>
<body>
<p class="gris">texto en gris</p> 🡪 Aplicando el style en nodo/caja “gris”
<p class="rojo">texto en rojo</p>
<p id="negro">texto en negro</p>
</body>
</html>

37
Web Scraping
Web Scraping es una técnica utilizada mediante programas de software para la extracción
de información no estructurada en sitios web, para esto se indaga en el protocolo HTTP de
aquellas páginas web y se busca extraer la información organizada en estos, ya sea en
tablas, nodes u otras cajas disponibles. El objetivo principal del Web Scraping es
transformar dicha información no estructurada de la web y convertirla en estructurada que
pueda ser almacenada en bases de datos y posteriormente analizada.

El programa a utilizar en este documento utiliza las <class> y <div id=” ”> para ubicar la
información dentro de la página y extraerla en el formato deseado. Este formato puede ser
tabla o nodes, donde estos últimos son cajas dentro de las páginas web en las que existe
información, por ejemplo, un botón que dice “Descargas” es un node que tiene dentro un
link y un texto.
Web Scraping en R se realiza principalmente a través de los paquetes llamados “rvest”,
“xml2” y “readr”. Inicialmente es necesario instalarlos, para luego activarlos utilizando los
comandos:

#Instalar paquetes
Install.packages('xml2')
install.packages('rvest')

#Activar paquetes
library('xml2')
library('rvest')
library('readr')

Paso 1: Identificar el URL y asignarlo a una variable.


Se debe almacenar en una variable el URL o dirección de página web de la que se desea
extraer la información, para ello se le pone un nombre y se asigna entre comillas el url que
en este caso será: 'http://transparencia.indap.cl/2016/Personas/remuneraciones.html'.

38
Código:

Respuesta:

Paso 2: Almacenamiento del contenido HTML.

Se utiliza un código para expresarle a R que debe acceder al sitio web y almacenar toda la
información en formato HTML que éste contiene, es decir, ingresa al URL y copia todo lo
que se encuentra en el apartado de “Inspeccionar sitio web” el cual aparece al situarse en
la página y presionar click derecho. Al hacer esto también reconoce tanto el “Head” como
su apartado “Body”, quienes, según lo visto en el apartado HTML, son las dos divisiones
más grandes que utiliza HTML. Además, recordar que “Head” posee el apartado de “Style”
que servirá para dar formato a los distintos atributos.

Código:

Respuesta:

Paso 3: Extracción de la información útil.

Ahora es necesario ubicar el nombre del elemento (tabla, nodo, división, etc) donde se aloja
la información que se desea extraer. En este paso, es crucial la exactitud en dos aspectos:

39
1. Identificar con claridad el nombre del elemento que se desea extraer la información.
Si estuviera mal escrito, no funcionará. Este siempre se muestra en el código HTML
entre comillas (“”), para el ejemplo expuesto anteriormente se reconoce la tabla
llamada “incentivos”.
2. El medio a utilizar para obtener los datos, los cuales pueden ser dos:

a. ID de divisiones (<div id=”incentivo>): Siendo este el método de extracción


dentro del código. El nombre a utilizar para ubicar el elemento HTML será
antepuesto por un “#”, en este caso “#incentivos”.

b. La Clase utilizada para dar formato (<div class=”nombre”>): Siendo este el


método de extracción, que queda dentro del código con el nombre a utilizar
para ubicar al elemento HTML, el cual será antepuesto por un punto (.), para
este caso “.incentivos”.

Código:

Respuesta:

Paso 4: Establecer el formato que se desea extraer la información

En este paso se ejecuta un código que busca identificar una estructura para extraer el dato
y ordenarlo dentro del programa, para ello se utiliza la nomenclatura “table” dentro de la
función, especificando así la estructura de tabla.

Código:

40
Respuestas:

Paso 5: Extraer como tabla y almacenar en una variable

Ahora se utiliza una función que extrae aquella tabla del HTML y la almacena en una
variable llamada “tabla”. Un dato importante es que esta función almacena dichas tablas o
datos en formato lista.

Código:

Paso 6: Visualización de la Tabla

Finalmente, del paso anterior se obtiene una lista llamada “tabla” dentro de la cual está
almacenada la o las tablas que se desean extraer. En este caso particular sólo se extrajo
la primera, por esto ella se encuentra dentro de la lista como el elemento uno.

Por otra parte, para extraer tablas, se hace necesario identificar el número que le
corresponde a esta y así obtenerla como un elemento de la lista a través de su posición, es
decir, según la sintaxis de R se utiliza el doble corchete y dentro de estos irá el número del
elemento que le corresponda, de la siguiente manera:

41
Código:

Resultado: Se obtiene una variable llamada “tablaExtraida” que posee 57 observaciones y


5 variables.

Ejercicio aplicado
Ecoosfera es una página web que nace en un Laboratorio de Conciencia Digital, su objetivo
es expandir el conocimiento de información respecto a la sustentabilidad, creatividad y
nuevas formas de entender la realidad, para ello presentan noticias sobre Arte, Evolución,
Guía Gaia, Medio ambiente, Noticias, SCI-Innovación, Wellness, Columna especial.

El trabajo de investigación se basó en determinar cuál de estas últimas categorías es la de


mayor interés para el público Ecoosfera, mediante la extracción de compartidos en redes
sociales (Facebook, Twitter y Pinterest).

La programación10 comienza asignando como una variable, la página web a utilizar


"https://www.ecoosfera.com/", luego se inspecciona el código en lenguaje html que se
encuentra detrás de este sitio web, mediante la función read_html aplicada a la variable
que contiene la web. Luego, se inspeccionan las etiquetas, donde se encuentran los links
con la información que servirá para el posterior análisis, es decir, se usa la función
html_nodes sobre la variable web creada, y la clase “.menú”, que se determinó
inspeccionando la página. Se le asigna un nombre para contener los datos, esto retornará
el detalle de las categorías que presenta en el menú, al cual se aplica nuevamente

10
El desarrollo completo se encuentra en el siguiente link https://github.com/ariamp21/Ecoosfera

42
html_nodes con el objetivo de acceder a los links de las categorías. A continuación, se
rescataron aquellos links a través de la función html_attr respecto a la última entrada.

Se crea un loop a través de un for, en el que su i será aquella variable contenedora de los
links por categoría. La idea de este for es extraer y limpiar los títulos de las noticias. Luego
se crean listas y data frame que servirán para guardar información obtenida con un nuevo
for, en este último se extrajo la cantidad de compartidos por categoría y red social. Además,
se guarda toda la información en csv mediante un write.csv.

Finalmente se crean data frames para cada categoría y se unen creando una base final
(DF), que será el producto de esta programación.

Con esta información contenida en la DF se pueden realizar gráficos y una estadística


descriptiva que nos oriente a determinar cuál es la categoría más compartida por el público
Ecoosfera y por ende, cuál es la de mayor interés. A continuación, se presenta el desarrollo
dentro de un script.

Script Ecoosfera

#Pagina Ecoosfera: "https://www.ecoosfera.com/"

#install.packages("rvest")

library('rvest')
library('ggplot2')

#Guardando la página
paginaEcoosfera <- https://www.ecoosfera.com/

#Leyendo el código de ecoosfera


paginaEcooRead <- read_html(paginaEcoosfera)
print(paginaEcooRead)

#Entrando a los links


paginaEcooNodes <- html_nodes(paginaEcooRead, ".menu")
paginaEcooNodes <- html_nodes(paginaEcooNodes, "a")
print(paginaEcooNodes)

#Obteniendo links
paginaEcooA <- html_attr(paginaEcooNodes, "href")
print(paginaEcooA)

43
#Extracción de Títulos de las "Noticias" de cada categoría

#El orden es el siguiente:


#1. Link de donde se obtuvo la información para que puedan corroborarlo
#2. Nombre de la categoría a estudiar
#3. Títulos de las noticias que presenta cada categoría

for (i in paginaEcooA){
print(i)
lecturaEcoo <- read_html(i)
CategoriaEcoo <- html_text(html_nodes(lecturaEcoo,"title"))
print(CategoriaEcoo)
TituloEcoo <- html_text(html_nodes(lecturaEcoo,".entry-header"))
TituloEcoo <- gsub("\t","",TituloEcoo)
TituloEcoo <- gsub("\n","",TituloEcoo)
TituloEcoo <- gsub(" ","",TituloEcoo)
TituloEcoo <- gsub(" ","",TituloEcoo)
print(TituloEcoo)
}

#Obteniendo compartidos de cada noticia

#El orden es el siguiente


# Nombre de la categoría
# Links de las 10 noticias que presenta cada categoría
# Compartidos de las noticias, respecto a Facebook, Twitter y Pinterest respectivamente

ListaCategorias <- list()


ListaLinks <- list()
estRRSS <- data.frame()

for (i in paginaEcooA){

lecturaEcoo <- read_html(i)


CategoriaEcoo2 <- html_text(html_nodes(lecturaEcoo,".archive-title"))
CategoriaEcoo2 <- gsub("\n","",CategoriaEcoo2)
CategoriaEcoo2 <- gsub("\t","",CategoriaEcoo2)
ListaCategorias <- c(ListaCategorias, (CategoriaEcoo2))
print(ListaCategorias)
NodesNoticias <- html_nodes(lecturaEcoo, ".entry-thumbnail")
NodesNoticias2 <- html_nodes(NodesNoticias,".icon-link")
LinksNoticias <- html_attr(NodesNoticias2, "href")
ListaLinks <- c(ListaLinks, (LinksNoticias))
print(ListaLinks)

44
for (x in LinksNoticias){
lecturaLinks <- read_html(x)
Compartidos <- html_text(html_nodes(lecturaLinks, ".sha_box"))
Compartidos <- gsub("Shares","",Compartidos)
Compartidos <- as.numeric(Compartidos)

#Se crea dataframe con los valores necesitados para realizar la estadística descriptiva

dfTemporal <- data.frame(Categoria = i, Fb = Compartidos[1], Tw = Compartidos[2], Pst


= Compartidos[3])
dfTemporal$SumaCompartidos <-
(as.numeric(dfTemporal$Fb)+as.numeric(dfTemporal$Tw)+as.numeric(dfTemporal$Pst))

#Se pone la información dentro de un data frame creado fuera del for para no perder los
datos

estRRSS <- rbind(estRRSS,dfTemporal)


print(Compartidos)

#Se guarda en csv para no perder la información de cada categoría

print(paste("============= crea csv",CategoriaEcoo2,"============="))


write.csv(estRRSS,paste(CategoriaEcoo2,".csv",sep = ""))

# Creando tablas por categorías

# El orden es el siguiente
# 1. Se crea un data frame vacío para luego incorporar la información necesaria de cada
categoría.
# 2. Se realizó data frame por separado según los 10 links por categoría que ofrece la
página.
# 3. Luego se adjuntó la tabla estRRSS la cual contiene los compartidos de cada categoría
por RRSS
# 4. Finalmente se unieron todos los datos respecto a los 90 links.

dfFinal <- data.frame()


dfArte <- data.frame(links= unlist(ListaLinks[1:10]))
dfFinal <- rbind(dfFinal,dfArte)

dfEvolucion <- data.frame(links= unlist(ListaLinks[11:20]))


dfFinal <- rbind(dfFinal,dfEvolucion)

dfGuia <- data.frame(links= unlist(ListaLinks[21:30]))


dfFinal <- rbind(dfFinal,dfGuia)

45
dfMA <- data.frame(links= unlist(ListaLinks[31:40]))
dfFinal <- rbind(dfFinal,dfMA)

dfNoticias <- data.frame(links= unlist(ListaLinks[41:50]))


dfFinal <- rbind(dfFinal,dfNoticias)

dfSci <- data.frame(links= unlist(ListaLinks[51:60]))


dfFinal <- rbind(dfFinal,dfSci)

dfWell <- data.frame(links= unlist(ListaLinks[61:70]))


dfFinal <- rbind(dfFinal,dfWell)

dfViajes <- data.frame(links= unlist(ListaLinks[71:80]))


dfFinal <- rbind(dfFinal,dfViajes)

dfCol <- data.frame(links= unlist(ListaLinks[81:90]))


dfFinal <- rbind(dfFinal,dfCol)

dfFinal <- cbind(dfFinal,estRRSS)

write.csv(dfFinal, file = "TablaFinalCompartidos.csv")

Alcance y recomendaciones
Aplicar modelos de conteo de palabras como TF-IDF, determinando relaciones entre estas
identificando alguna correlación.

Aplicar Visualizaciones ad hoc a los datos extraídos, y que permitan interpretar las ideas
por si solas.

Motivar y exponer modelos de Deep Learning a través de ejemplos sencillos.

Continuar mejorando este documento con la idea que sea un material de estudio atingente
a las necesidades de los alumnos.

46
Referencias
Chean Wong, J. (2005). Ley de Moore, nanotecnología y nanociencias: síntesis y
modificación de nanopartículas mediante la implantación de iones. Revista digital de la
Universidad Nacional Autónoma de México, No.7, Vol.6, ISSN: 1607 - 60.

Gonzales, R. (2019). El Cambio en los Paradigmas de la Información. Recuperado de:


https://rtc-cea.cepal.org/sites/default/files/2019-
11/BIG%20DATA%20El%20Cambio%20en%20los%20Paradigmas%20de%20la%20Infor
maci%C3%B3n.pdf

Guarnieri, M. (2016). The Unreasonable Accuracy of Moore’s Law. Recuperado de:


https://www.academia.edu/35560045/The_Unreasonable_Accuracy_of_Moores_Law

Sajwan, V., Yadav, V. y Dr.Haider, M. (2015). The Hadoop Distributed File System:
Architecture and Internals. International Journal of Combined Research & Development
(IJCRD). (3ª ed, Volumen 4).

Seaman J. y Tinti-Kane H. (2013). Social media for teaching and learning. Pearson Learnin
Solutions.
Recuperado de:
https://onlinelearningsurvey.com/reports/social-media-for-teaching-and-learning-2013-
report.pdf
Xindong W., Xingquan Z., Gong-Qing W. y Wei D. (2014). IEEE Transactions on
Knowledge and Data Engineering, Institute of Electrical and Electronics Engineers.
26(1),97-107. doi: 10.1109/TKDE.2013.109

47

También podría gustarte