TFM - Valle Gutierrez Guillermo
TFM - Valle Gutierrez Guillermo
Madrid
Julio 2021
Declaro, bajo mi responsabilidad, que el Proyecto presentado con el título
⮚ La Universidad informará a los usuarios del archivo sobre los usos permitidos, y no garantiza ni
asume responsabilidad alguna por otras formas en que los usuarios hagan un uso posterior de las
obras no conforme con la legislación vigente. El uso posterior, más allá de la copia privada,
requerirá que se cite la fuente y se reconozca la autoría, que no se obtenga beneficio comercial, y
que no se realicen obras derivadas.
⮚ La Universidad no revisará el contenido de las obras, que en todo caso permanecerá bajo la
responsabilidad exclusive del autor y no estará obligada a ejercitar acciones legales en nombre del
autor en el supuesto de infracciones a derechos de propiedad intelectual derivados del depósito y
archivo de las obras. El autor renuncia a cualquier reclamación frente a la Universidad por las
formas no ajustadas a la legislación vigente en que los usuarios hagan uso de las obras.
⮚ La Universidad adoptará las medidas necesarias para la preservación de la obra en un futuro.
⮚ La Universidad se reserva la facultad de retirar la obra, previa notificación al autor, en supuestos
suficientemente justificados, o en caso de reclamaciones de terceros.
ACEPTA
Motivos para solicitar el acceso restringido, cerrado o embargado del trabajo en el Repositorio Institucional:
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
Madrid
Julio 2021
Agradecimientos
Quiero expresar mi agradecimiento sobre todo a mis padres, Santos y Juana, y a mi hermana
María, por la educación recibida a lo largo de mi vida. También a Clara por el apoyo
incondicional que me ha dado siempre. Agradecer también a todas las personas que he
conocido en Madrid, en el C.M.U Barberán y Collar; mis compañeros en la UPM y en ICAI;
las que he conocido como jugador de fútbol en el Chamberí FS; y las que he conocido en mi
vida laboral en KPMG, The Cocktail y Baobab, por haber hecho que estos años vividos en
Madrid hayan sido de los mejores de mi vida.
Gracias,
Guillermo
APLICACIÓN DE TÉCNICAS DE WEB SCRAPING Y
PROCESAMIENTO DEL LENGUAJE NATURAL PARA LA
EXTRACCIÓN Y EVALUACIÓN DE INFORMACIÓN DE UNA
PÁGINA WEB DE EMPLEO
Autor: Valle Gutiérrez, Guillermo.
Director: Pita-Romero Rodríguez, Luis.
Entidad Colaboradora: Baobab Soluciones SL.
Palabras clave: web scraping, procesamiento del lenguaje natural, Python, NLTK,
BeautifulSoup, Selenium, VADER, TextBlob.
1. Introducción
El procesamiento del lenguaje natural o NLP, expresado así por sus siglas en inglés, es
el campo de la inteligencia artificial que permite a las máquinas ser capaz de leer,
entender y derivar significados del lenguaje humano.
Esta disciplina se encuentra entre el mundo de la ciencia de datos y el lenguaje humano
y se está expandiendo a muchas industrias. Pero no sería posible si no se tuviese la
capacidad de computación y la gran cantidad de información que se tiene hoy en día.
En relación con estas grandes cantidades de datos cabe destacar los dos tipos principales
de fuentes de datos en una compañía: las fuentes de datos internas y externas. Las fuentes
de datos internas son aquellos datos de los que dispone la empresa, que se encuentran
alojados en sus sistemas de información, sus servidores y bases de datos. Mientras que
las fuentes de datos externas son aquellas de las que la empresa no dispone en el
momento actual, pero puede recurrir a ellas para obtener información. En el presente
proyecto se ha utilizado Internet como fuente de datos externa, y la forma utilizada para
acceder a la información de manera automatizada ha sido la conocida como web
scraping.
El trabajo realizado se ha centrado en el desarrollo de modelos de clasificación en base
a los sentimientos. Para ello, se ha desarrollado un módulo de web scraping para la
extracción de valoraciones de una página web de empleo, y mediante técnicas de
procesamiento del lenguaje natural se han desarrollado los modelos que permiten
clasificar nuevas valoraciones como valoraciones positivas o negativas.
2. Definición del proyecto
El objetivo principal del proyecto es el análisis de viabilidad de la aplicación de
técnicas de procesamiento del lenguaje natural para el análisis de sentimiento en
valoraciones sobre empleos. Para el correcto cumplimiento del objetivo principal ha
sido necesaria la definición de unos objetivos específicos. El primero de ellos ha sido la
implementación de un módulo de web scraping para la extracción de las valoraciones de
una página web de empleo. El segundo ha sido el desarrollo de modelos de clasificación
mediante el uso de técnicas de procesamiento del lenguaje natural. El tercero y último
ha sido la exploración de las aplicaciones de estos modelos en contextos empresariales.
El proyecto se ha dividido en dos etapas principales: el desarrollo de módulo de web
scraping para la extracción de las valoraciones de la página web, y el desarrollo de los
modelos de clasificación de las valoraciones extraídas.
El módulo de web scraping se ha dividido a su vez en tres fases. Una primera fase de
obtención de información general, continuando con una segunda fase de extracción de
toda la información de las valoraciones y terminando con una fase de limpieza y
estructuración de los datos extraídos.
Para el desarrollo de los modelos de clasificación, la metodología empleada consiste
en realizar en la primera fase un procesado de las valoraciones mediante el uso de
técnicas del procesamiento del lenguaje natural. Posteriormente, se realiza una
transformación de la información procesada en variables aprovechables por los modelos.
Por último, se construyen los modelos de clasificación, se realiza su entrenamiento con
un conjunto de entrenamiento y se evalúan los resultados sobre un conjunto de test.
3. Descripción del módulo de web scraping
Los desarrollos correspondientes a esta parte se han llevado a cabo utilizando el software
libre Python, seleccionado principalmente por el amplio número de librerías de las que
dispone. Concretamente se han utilizado BeautifulSoup y Selenium.
Del mismo modo que el módulo de web scraping, el desarrollo de los modelos se llevó
a cabo utilizando el software libre Python, seleccionado principalmente por el amplio
número de librerías relacionadas con el NLP disponibles. Concretamente se han utilizado
NLTK y TextBlob.
6. Conclusiones
En particular, de los resultados obtenidos se concluye que los modelos de Naive Bayes
implementados son adecuados para llevar a cabo la clasificación de valoraciones
como positivas o negativas. Además, durante la realización del trabajo se ha obtenido
un amplio conocimiento en las técnicas de web scraping, un desarrollo personal y
profesional, además de todo el componente teórico asociado al proyecto.
7. Referencias
ABSTRACT
This paper studies the feasibility of the application of natural language processing techniques
for sentiment analysis in ratings. For this purpose, it has been necessary the implementation
of a web scraping module and the development of logistic regression and Naive Bayes
models for text classification based on sentiment analysis. In addition, a comparison of the
results of the developed models with two pre-trained models from the NLTK and TextBlob
libraries has been carried out. After the development of the project, satisfactory results have
been obtained for the Naive Bayes models.
1. Introduction
Natural language processing, or NLP, is the field of artificial intelligence that enables
machines to be able to read, understand and derive meaning from human language.
This discipline lies between the world of data science and human language and is
expanding into many industries. But it would not be possible without the computing
power and the vast amounts of information available today.
In relation to these large amounts of data, there are two main types of data sources in a
company: internal data sources and external data sources. Internal data sources are those
available to the company, which are housed in its information systems, servers, and
databases. While external data sources are those that the company does not have at the
present time but can be used to obtain information. In this project, the Internet has been
used as an external data source, and the way used to access the information in an
automated way has been known as web scraping.
2. Project definition
The main objective of the project is the feasibility analysis of the application of natural
language processing techniques for sentiment analysis in job evaluations. For the
correct fulfilment of the main goal, it has been necessary to define some specific
objectives. The first of them has been the implementation of a web scraping module for
the extraction of ratings from an employment web page. The second was the
development of classification models using natural language processing techniques. The
third and last one has been the exploration of the applications of these models in business
contexts.
The project has been divided into two main stages: the development of the web
scraping module for the extraction of the ratings from the web page, and the development
of the classification models of the extracted ratings.
The web scraping module has been divided into three phases. A first phase of
obtaining general information, continuing with a second phase of extraction of all the
information from the ratings and finishing with a phase of cleaning and structuring the
extracted data.
For the development of the classification models, the methodology used consists of
processing the ratings in the first phase using natural language processing techniques.
Subsequently, the processed information is transformed into variables that can be used
by the models. Finally, the classification models are built, trained with a training set and
the results are evaluated on a test set.
For the development of the web scraping module, a study of the different employment
web pages that contain the necessary information for the fulfilment of the project was
carried out. Before the implementation of the web scraping module, an analysis of the
legality of obtaining that information for the purpose of the specific project was carried
out. Once the web page was decided and the legality was validated, a study of the
possible implementations to be developed to extract that information was carried out.
For the present project, two implementations were developed to extract the necessary
information for the project. The first one is based on the HTTP programming of the
web servers, in such a way that it performs the same requests as the browser and extracts
the information from the response to the request. The second is based on the Selenium
tool, which allows the control of a web browser. This tool was initially created for testing
web pages under development, but by controlling a web browser, it has become a widely
used tool in the development of web scraping modules.
Both implementations are divided into three phases: the first phase has consisted in the
extraction of companies registered on the employment web page, storing the number of
ratings and the URL address where to find those ratings. In the second phase, the module
for extracting the reviews of any company registered on the website was implemented,
and in the third phase, the extracted information was cleaned, and the text of the review
was separated by language.
The developments corresponding to this part have been carried out using the free
software Python, selected mainly because for its large number of libraries available.
Specifically, BeautifulSoup and Selenium were used.
4. Description of the classification models
The development of the classification models focuses on the logistic regression model
and the Naive Bayes classification model. Both consist of initial data processing,
extraction of variables exploitable by the models, model building, and model training
and validation.
The dataset used for the development of the sentiment-based classification models uses
the rating score to perform a binary classification (positive or negative). Ratings scored
1-2 have been classified as bad ratings and ratings scored 4-5 have been classified as
good. It should be noted that the extracted set of ratings is unbalanced, as it has 75%
positive ratings and 25% negative ratings.
To ensure a proper analysis of the models and their predictions, the data set has been
divided into training data and test data. The test data has been isolated from the
construction of the models to be able to compare the model predictions with these
completely independent values.
In addition to the construction of the classification models, predictions on the test set
were carried out with two pre-trained models from the NLTK (Natural Language
Toolkit) libraries, namely VADER, and TextBlob. These predictions have been used to
make a comparison of the models implemented with libraries specifically trained in
sentiment analysis.
Like the web scraping module, the development of the models was carried out using the
free software Python, selected mainly because of the large number of NLP-related
libraries available. Specifically, NLTK and TextBlob were used.
5. Results
After the construction of the classification models based on the sentiments of the ratings,
the different models were tested. The developed models were tested with different types
of information extracted from the ratings. Initially, only the text of the valuation was
introduced. In later iterations, the texts corresponding to the title of the valuation and
the advantages and disadvantages that the users have described of the companies were
added. The best results are obtained with the Naive Bayes model, since it uses the a
priori probability that allows obtaining better results in unbalanced sets. The information
set with the best results has been the one containing the information of the text, title,
advantages, and disadvantages of the valuation. Table 1 shows the metrics obtained with
the Naive Bayes model for this set.
6. Conclusions
The work described above allows validating the feasibility of the application of natural
language processing techniques for sentiment analysis in ratings. Thus, it can be
confirmed that the application of NLP techniques is useful for the identification of
sentiment in the extracted ratings.
From the obtained results it is concluded that the implemented Naive Bayes models are
suitable to carry out the classification of ratings as positive or negative. In addition,
during the realization of the work, a wide knowledge in web scraping techniques, a
personal and professional development, as well as all the theoretical component
associated with the project have been obtained.
7. References
ÍNDICE DE LA MEMORIA
Índice de la memoria
Introducción.................................................................................................. 6
1.1 Motivación del proyecto ................................................................................................... 7
1.2 Descripción de las tecnologías .......................................................................................... 8
Definición del Trabajo................................................................................ 11
2.1 Objetivos ......................................................................................................................... 11
2.2 Metodología .................................................................................................................... 12
2.3 Estructura del documento ............................................................................................... 16
Web scraping............................................................................................... 18
3.1 Descripción teórica ......................................................................................................... 19
3.2 Aplicaciones del Web scraping....................................................................................... 24
3.3 Técnicas y recursos empleados ....................................................................................... 28
Procesamiento del Lenguaje Natural ........................................................ 31
4.1 Introducción .................................................................................................................... 32
4.2 Aplicaciones del NLP ..................................................................................................... 35
4.3 Técnicas empleadas ........................................................................................................ 36
Estado del arte ............................................................................................ 42
5.1 Naive Bayes y Regresión logística ................................................................................. 42
5.2 Ensemble de modelos ..................................................................................................... 43
Implementación módulo Web scraping ..................................................... 45
6.1 Análisis de las páginas web de empleo ........................................................................... 45
6.2 Estudio de la legalidad .................................................................................................... 48
6.3 Estudio de las posibles implementaciones ...................................................................... 49
6.4 Estructura de los módulos ............................................................................................... 53
6.5 Desarrollo de la implementación con BeautifulSoup ..................................................... 58
6.6 Desarrollo de la implementación con Selenium ............................................................. 62
Desarrollo de los modelos de NLP ............................................................. 66
7.1 Preprocesado del texto extraído de Indeed ..................................................................... 66
7.2 Regresión logística .......................................................................................................... 72
7.3 Naive Bayes .................................................................................................................... 75
7.4 Modelo pre-entrenado ..................................................................................................... 76
1
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ÍNDICE DE LA MEMORIA
2
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ÍNDICE DE LA MEMORIA
Índice de figuras
Figura 1. Procesos de proyecto web scraping 13
Figura 2. Modelo cliente – servidor [21]. 19
Figura 3. Ejemplo de comunicación REST [23]. 22
Figura 4. Elemento de HTML. 23
Figura 5. Ejemplo de petición HTTP con Requests. 28
Figura 6. Ejemplo de BeautifulSoup con HTML. 29
Figura 7. Ejemplo con Selenium. 30
Figura 8. Evolución del NLP [6]. 31
Figura 9. Función Sigmoide [31]. 33
Figura 10. URL opiniones de Glassdoor. 46
Figura 11. Registro al navegar en Glassdoor. 46
Figura 12. URL opiniones de Indeed. 47
Figura 13. Petición de navegador web al servidor. 49
Figura 14. Herramientas para desarrollador de Chrome. 50
Figura 15. Captura petición con datos. 51
Figura 16. Cabecera de la petición request a la información de Indeed. 52
Figura 17. Página extraída por el spider. 53
Figura 18. Ejemplo del fichero JSON “empresas.json”. 54
Figura 19. Página de inicio de una empresa. 55
Figura 20. Página de valoraciones de una empresa. 56
Figura 21. Extracción lista de 24 empresas página de inicio. 59
Figura 22. Elemento HTML que recoge la información de la empresa (página de inicio). 59
Figura 23. URL página 2 de valoraciones. 60
Figura 24. Elemento HTML con la información de cada valoración. 61
Figura 25. Extracción lista de 24 empresas página de inicio (Selenium). 62
Figura 26. Botones de paginación de las valoraciones. 63
Figura 27. Clic en el botón siguiente con la función execute_script de Selenium. 64
3
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ÍNDICE DE LA MEMORIA
4
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ÍNDICE DE LA MEMORIA
Índice de tablas
Tabla 1. Resultados obtenidos con Naive Bayes. 15
Tabla 2. Pesos del modelo 1 regresión logística 73
Tabla 3. Pesos del modelo 2 regresión logística. 73
Tabla 4. Pesos del modelo 3 de regresión logística. 74
Tabla 5. Número de claves de los diccionarios de log Likelihood. 76
Tabla 6. Resultados módulo web scraping. 78
Tabla 7. Métricas modelo con valoraciones. 80
Tabla 8. Métricas modelos con valoraciones y títulos. 80
Tabla 9. Métricas modelos con valoraciones, títulos, ventajas y desventajas. 81
Tabla 10. Ejemplo de matriz de confusión. 82
Tabla 11. Matriz de confusión modelo 3 regresión logística. 82
Tabla 12. Matriz de confusión modelo 3 Naive Bayes. 82
Tabla 13. Matriz de confusión modelo 3 modelo VADER. 82
Tabla 14. Matriz de confusión modelo 3 modelo TextBlob. 83
Tabla 15. Tabla de métricas sobreentrenamiento y test (Naive Bayes). 85
5
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
INTRODUCCIÓN
Capítulo 1. INTRODUCCIÓN
El procesamiento del lenguaje natural o NLP, expresado así por sus siglas en inglés, es el
campo de la inteligencia artificial (AI) que permite a las máquinas ser capaz de leer, entender
y derivar significados del lenguaje humano.
Todo lo que el ser humano es capaz de expresar (referido al lenguaje: escrito o hablado)
contiene gran cantidad de información. El tema elegido, el tono, la selección de las palabras,
la finalidad, todo lo que lo envuelve tiene infinidad de información y valor que pueden ser
extraídos.
El problema es que toda esta información no tiene un patrón común, es decir, forma parte de
lo que se denominan datos desestructurados. Todo lo que ser humano es capaz de producir
(declaraciones, artículos, libros, incluso tweets o valoraciones) son datos que no se pueden
organizar de la forma tradicional de una base de datos relacional (filas y columnas).
Pero gracias a la potencia de computación actual se pueden aprovechar algunas técnicas que
permiten la extracción de información del texto o la interpretación desde otro tipo de
enfoque. Este tipo de técnicas son las de procesamiento del lenguaje natural, y su enfoque
más sencillo es la extracción de palabras clave para analizar el contexto del documento o
texto que se esté procesando, pero se puede llegar a entender el significado detrás de cada
una de las palabras (lingüística cognitiva) y los sentimientos expresados.
6
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
INTRODUCCIÓN
Existen dos tipos de información en el ambiente empresarial: las fuentes internas y las
fuentes externas. Se diferencian en que las fuentes de datos externas son aquellas que no han
sido recogidas o que no dispone la empresa y las fuentes de datos internas son datos de los
que dispone la empresa, que se encuentran en sus sistemas de información, los servidores y
bases de datos (incluso documentos físicos que se están pasando a digital en los últimos
años). Existen muchos tipos de fuentes de datos externas, una de las más conocidas y usadas
dentro de las empresas son las redes sociales. La información de las redes sociales puede
ayudar a conocer mejor a los clientes y clientes potenciales, e incluso conectar con ellos.
El objetivo principal de las empresas que trabajan con datos es tener una gran cantidad de
información de calidad, para poder analizarla y tomar las decisiones que beneficien a la
empresa. Si no se dispone de la información necesaria para poder realizar este tipo de
proyectos, se tiene que recurrir a la recopilación de información mediante fuentes externas.
Otro de los objetivos es poder identificar los problemas tanto internos como externos para
adelantarse a la materialización de estos, evitando así las consecuencias negativas que
1
Acrónimo de Application Programming Interface, se define como un intermediario de software que permite
que dos aplicaciones se comuniquen entre sí [19].
7
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
INTRODUCCIÓN
puedan provocar. En particular, desde un punto de vista interno, uno de los focos de atención
más importantes debe ser el cuidado de la plantilla de trabajadores y sus condiciones
laborales. Para ello, es importante conocer su estado y las opiniones que tengan sobre su
puesto y el ambiente laboral.
Este tipo de información se puede obtener de una manera interna, cómo puede ser realizando
reuniones internas o encuestas para conocer la situación del trabajador cada cierto tiempo.
Pero también existen fuentes de datos externas que posibilitan la obtención de esa
información. En las páginas web de empleos existen ciertos apartados sobre las valoraciones
que han tenido los propios trabajadores sobre las empresas, y esta información puede ser
extraída para hacer uso de ella internamente y poder tomar decisiones que beneficien a los
intereses de los empleados y así poder mejorar la imagen interna y externa de la empresa.
Esto permitirá conocer analizar el sentimiento detrás de las valoraciones de la empresa que
hacen sus propios empleados, pudiendo ser esto un paso previo a la identificación de los
problemas principales mencionados en las opiniones. Haciendo uso de las conclusiones
obtenidas de estos análisis las empresas podrían tomar decisiones más eficaces y precisas
para mejorar la vida laboral de sus empleados.
En el siguiente apartado, se detallan las tecnologías que han sido necesarias para la
realización del proyecto.
8
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
INTRODUCCIÓN
El entorno de desarrollo integrado utilizado para la realización del proyecto ha sido Visual
Studio Code (VSC) [29]. Este entorno de desarrollo integrado consigue, con la extensión
Microsoft Python, ser un excelente editor de Python. Funciona en cualquier sistema
operativo, proporciona autocompletado, depuración y pruebas unitarias. Pero principalmente
ha sido elegido por su integración y fácil intercambio entre entornos virtuales. También
permite el control de los cambios con su integración con Git.
El software elegido para el control de versiones ha sido Git [11]. Consiste en un sistema de
control de versiones distribuido y gratuito, diseñado para realizar todo tipo de proyectos de
desarrollo de software. Está ampliamente extendido como software de control de versiones
lo que permite su sencilla incorporación al proyecto.
INTRODUCCIÓN
10
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
2.1 OBJETIVOS
Para el cumplimiento del objetivo principal del proyecto se han definido una serie de
objetivos específicos:
El objetivo específico se ha definido para la extracción de las valoraciones que tienen las
empresas en una página web de empleo. Las valoraciones han sido realizadas por
trabajadores de la empresa o antiguos trabajadores. Esta información extraída permite a
cualquier a empresa tener una información muy valiosa sobre su imagen.
11
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
CONTEXTOS REALISTAS
2.2 METODOLOGÍA
A continuación, se exponen los pasos utilizados para el desarrollo del módulo de web
scraping. En la siguiente lista de preguntas se diferencian los pasos a seguir para
implementar un módulo de web scraping:
Otro de los aspectos a tener en cuenta para el desarrollo de un módulo de web scraping, son
los bloques principales en los que se dividen las diferentes tareas a realizar. La gran mayoría
12
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
de los procesos de web scraping se pueden dividir en los tres bloques de desarrollo mostrados
en la Figura 1.
● Spider: proceso inicial que consiste en extraer todo lo que contiene información útil
y guardar su referencia para la fase de extracción (scraper). Este proceso puede
ejecutarse diariamente para comprobar si se tiene nueva información útil, actualizar
la información general, etc.
● Scraper: este proceso es el principal y se aprovecha de la información que se ha
obtenido en la fase de spider. Utiliza las referencias (URLs2, número de valoraciones,
etc.) para realizar el proceso de extracción de la información útil requerida. Este
proceso es importante al principio para extraer toda la información, y no es ejecutado
nuevamente hasta que se disponga de información nueva.
● Parser: es el proceso final que se ejecuta para limpiar y procesar toda la información
obtenida en el proceso anterior y que se pueda empezar a utilizar en la parte del
proyecto correspondiente a la ciencia de datos (en este caso NLP).
2
Es el acrónimo de Uniform Resource Locator, es la dirección de un determinado recurso único web.
13
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Los principales análisis que se pueden desarrollar en un proyecto de NLP son los siguientes:
14
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
En cuanto a la metodología seguida para el desarrollo de esta parte del proyecto ésta consta
de las siguientes partes:
15
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
● Análisis de los errores: identificación de los patrones en el texto que los modelos
no han sido capaces de identificar correctamente. Esto permite a través de un proceso
iterativo lograr un mejor ajuste de los modelos.
En la memoria se explican los conceptos básicos para la familiarización con el web scraping
y el procesamiento del lenguaje natural, así como la descripción del trabajo realizado para
el logro de los objetivos. Está dividida en las siguientes secciones:
16
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
17
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
Más adelante, concretamente en el año 2000 nació la primer API Web, facilitando el
desarrollo de los programas y el desarrollo Web. Y también en el año 2000 se lanzaron dos
APIs que permitían a los programadores acceder y descargar algunos de los datos disponibles
al público de esa API. Ese fue un momento muy importante, ya que desde entonces muchos
sitios web ofrecen su API para que se pueda acceder a su base de datos pública.
En los siguientes apartados se detallan los conocimientos teóricos para comprender cómo se
realizan este tipo de técnicas de extracción de datos, las posibles aplicaciones que tienen y
las tecnologías utilizadas para el desarrollo del módulo de web scraping del proyecto.
18
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
Este apartado reúne una introducción a todas las tecnologías que influyen en la realización
de un proyecto de web scraping. El orden de los apartados a explicar tiene relación con los
pasos a seguir dentro de la metodología de un módulo web scraping explicada en el punto
2.2.1.
En ella se muestra cómo los clientes se conectan a través de la red de Internet a los servidores.
CDN se corresponde con la red de distribución de contenido que permite reducir los tiempos
19
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
3.1.2 APIS
Las APIs suelen estar formadas por diferentes partes que están a disposición del programador
y que conforman los extremos del canal de comunicación que se ha mencionado en la
definición. A estos extremos de la comunicación se les llama endpoints o puntos finales. Los
puntos finales pueden incluir una URL de un servidor y proporcionan el punto de acceso
desde el que la API se conecta con el servidor y accede a los recursos que se han solicitado
a través de la petición. Las APIs funcionan de una forma similar a lo explicado en el modelo
cliente – servidor a través de peticiones y respuestas. Las APIs realizan peticiones a los
puntos finales y estas reciben una respuesta. Una API bien implementada debe tener una
20
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
correcta documentación para que el programador sea capaz de realizar las peticiones al
servidor y obtener la información que se requiera.
Por otro lado, uno de los propósitos de las APIs es ocultar los detalles internos del
funcionamiento de un sistema, proporcionando una capa de seguridad y exponiendo sólo
aquellas partes que un programador encontrará útiles, aunque los detalles internos cambien
posteriormente. Por ejemplo, los datos del teléfono de un usuario nunca están totalmente
expuestos al servidor y, del mismo modo, el servidor nunca está totalmente expuesto al
teléfono del usuario.
El tipo de API más extendido y utilizado es la API REST o también conocida como API
RESTful, y se trata de una interfaz de programación de aplicaciones que se ajusta a las
restricciones del estilo de arquitectura software REST (Transferencia de estado
representativa) y permite la interacción con servicios web RESTful.
REST [13] consiste en un estilo arquitectónico de software que define el conjunto de reglas
para crear un servicio web. Los servicios web que siguen este estilo arquitectónico se llaman
servicios web RESTful. Lo elementos más relevantes de un sistema RESTful son el cliente,
que realiza una petición de recursos, y el servidor que dispone de esos recursos y se los envía
al cliente (Modelo cliente - servidor). En un servicio web RESTful, las solicitudes realizadas
a la URL de un recurso obtienen una respuesta con una carga útil formateada en HTML,
XML, JSON o algún otro formato. Por ejemplo, la respuesta puede confirmar que el estado
del recurso ha cambiado. La respuesta también puede incluir enlaces de hipertexto a recursos
relacionados.
21
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
3.1.3 HTML
Otro elemento fundamental relacionado con el web scraping es HTML (Lenguaje de Marcas
de Hipertexto) que es un lenguaje informático sobre el que se desarrollan la mayoría de las
páginas web y aplicaciones en línea. Un hipertexto es un texto que se emplea para referenciar
a otros fragmentos de texto, mientras que un lenguaje de marcado de texto es una serie de
marcas que indican a los servidores web el estilo y la estructura del documento.
22
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
Los documentos HTML son archivos que terminan con la extensión .html o .htm. El
navegador web lee este archivo y representa su contenido para que el usuario final pueda
verlo. Los archivos HTML están formados por una serie de elementos, que no son más que
los componentes básicos del lenguaje marcados con una etiqueta y uno o varios atributos.
Las etiquetas informan al navegador dónde empieza y dónde acaba un componente, mientras
que el atributo describe las características principales de un elemento (ancho, largo, color,
etc.).
Se puede ver como todo elemento está formado por una etiqueta de inicio o creación del
elemento, por el contenido del elemento (en este caso es un párrafo con un texto) y una
etiqueta de fin del elemento.
La mayoría de las páginas web disponen de tres etiquetas que son las principales:
3
Atributo que especifica la codificación de caracteres del documento HTML.
23
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
Existen otro tipo de elementos dentro de una página web entre los que destacan los enlaces
(que están marcados con la etiqueta <a>) y los botones (marcados con la etiqueta <button>)
que son importantes dentro de un módulo de web scraping.
En este apartado se detallan los principales tipos de Web scraping que existen, sus
aplicaciones prácticas y los impedimentos que se pueden encontrar en cada una de ellas.
Existen diferentes técnicas para hacer Web scraping. En la siguiente lista se muestran las
más conocidas:
WEB SCRAPING
Una vez enumeradas las principales técnicas de web scraping existentes, se analizan las
posibles aplicaciones prácticas que tienen este tipo de técnicas.
A continuación, se exponen cuatro casos de uso en los que es necesario realizar web scraping
para poder acceder a los datos valiosos de cada uno de ellos.
El primer caso de uso presenta cierta similitud con el trabajo desarrollado en el presente
proyecto, pues tiene que ver con el análisis de las redes sociales. Aunque la mayoría de las
redes sociales tienen una API para poder acceder a la información, en algunas situaciones
no es suficiente. Estas casuísticas pueden ser: que la API pública esté limitada a una serie de
peticiones y que se necesite acceder a más información, o que las publicaciones son borradas
y no se puede acceder más a ellas. Es por esto por lo que en muchas ocasiones se proceden
a realizar módulo de web scraping que obtengan la información que se publica en las redes
sociales ya sea en tiempo real o cada poco tiempo, para no perder nada de información. En
cuanto a la utilidad de obtener este tipo de información, ésta presenta un valor cuando se
analiza en conjunto, porque se pueden identificar patrones de conducta o los temas más
repetidos. En el trabajo descrito en este documento se ha llevado a cabo el análisis de
25
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
sentimientos de forma similar a los que se suelen realizar en este tipo de proyectos de análisis
de redes sociales.
El tercer caso de uso pone de manifiesto los beneficios que aporta la unión con los modelos
de Machine Learning. Este tipo de modelos necesitan de muchos datos para poder
evolucionar y mejorar sus resultados. Con la realización de un módulo de web scraping se
pueden conseguir muchos datos precisos que realimenten a los modelos y en un tiempo
relativamente corto.
Por último, se mencionan las medidas que las páginas web están implementando para evitar
la extracción de la información contenida a través de técnicas de anti-scraping como las
descritas a continuación:
• Direcciones IP4: una de las técnicas más sencillas para identificar el web scraping
es el rastreo de la dirección IP. Mediante el seguimiento de la IP se puede conocer si
el usuario que está accediendo a la información es una persona o un robot.
Normalmente el comportamiento de un robot que ha sido programado para extraer la
información de la web realiza muchas peticiones en poco tiempo. Esto permite, a
través del rastreo de IPs, observar un comportamiento anómalo y poder bloquear esa
IP para que no acceda a la información de la web. La forma más frecuente de realizar
la medición es medir el número y la frecuencia de las visitas por unidad de tiempo.
4
Acrónimo de Internet Protocol, es el protocolo que define el conjunto de reglas para la comunicación por
medio de Internet.
26
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
27
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
Durante el desarrollo del módulo web scraping se estudiaron diferentes formas de acceder a
la información, y finalmente se han desarrollado dos formas distintas de poder extraer la
información de la página web de empleo.
En el apartado 6.1 se explican las diferentes páginas web y las decisiones tomadas para el
uso de las técnicas de web scraping que finalmente se han utilizado en el módulo.
Las técnicas empleadas para el desarrollo del módulo de web scraping han sido:
• Programación HTTP: para el uso de este tipo de técnica se han utilizado las librerías
de Python que se llaman Requests y BeautifulSoup.
• Selenium: para el uso de esta técnica se ha utilizado la librería de Python llamada
Selenium.
Esta librería permite enviar peticiones HTTP de manera sencilla. En la Figura 5 se muestra
un ejemplo sencillo de una petición HTTP realizada con la librería requests de Python.
28
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
Esta librería permite la extracción de datos de archivos HTML y XML. La función principal
de la librería es analizar la estructura del archivo y la creación de un árbol de contenido que
permite al usuario encontrar la información que necesita de una forma mucho más rápida y
sencilla.
El script realiza una petición HTTP al servidor web de la página Indeed y su respuesta es
enviada como entrada a la función de BeautifulSoup para extraer el árbol de contenido y
acceder a la información de una manera más rápida. Finalmente imprime por pantalla el
primer enlace (etiqueta <a>) que se encuentre en el archivo HTML.
29
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
WEB SCRAPING
La librería Selenium está diseñada para ser una herramienta de testeo de las páginas web,
pero al permitir el control de un navegador web, posibilita la utilidad de esta librería para la
implementación de un módulo de web scraping que extraiga información de las páginas web.
30
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
NATURAL
Los primeros enfoques conceptuales sobre el término de “máquina traductora” fueron a
mediados de los años 30. A partir de la nueva tecnología surgieron dos patentes, la primera
fue registrada por Georges Artsrouni y utilizaba un diccionario bilingüe para traducir las
palabras de un idioma a otro utilizando cinta de papel. La segunda patente pertenecía a Peter
Troyanskii [25] que trazó una estrategia para abordar la gramática de una lengua y poder
traducir de un idioma a otro en función de las reglas gramaticales generales.
Sin embargo, no fue hasta los años 40 cuando se realizó el primer intento de realizar una
traducción automática de idiomas. Surgió durante la Segunda Guerra Mundial como intento
de descifrar los códigos cifrados para enviar mensajes en la Guerra.
Desde entonces ha habido ciertos acontecimientos que han supuesto un paso hacia adelante
en el mundo del procesamiento del lenguaje natural. En la Figura 8 se muestra un resumen
de los más importantes:
31
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
4.1 INTRODUCCIÓN
Este apartado reúne todos los conocimientos teóricos necesarios sobre las técnicas que se
han empleado en el desarrollo del proyecto, así como otras técnicas que se han estudiado
para desarrollos futuros.
32
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Funciona de tal forma que modela la probabilidad de que un registro tome uno de los dos
valores. El modelo no realiza la clasificación, la clasificación se realiza a partir de la
probabilidad devuelta por el modelo seleccionando un umbral de decisión entre ambas
clases.
Este tipo de modelos es idóneo cuando se pretende obtener un modelo que sea interpretable,
ya que permite entender el impacto de cada predictor sobre la variable de salida.
Para devolver una probabilidad entre 0 y 1, el modelo de regresión logística hace uso de la
función Sigmoide. La función Sigmoide se representa en la Figura 9:
1
𝑆(𝑥) =
1 + 𝑒 −𝑥
Dónde para valores altos de la x la salida de función tiende a ser 1, y para valores bajos de
la x la salida tiende a ser 0.
33
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
𝑃(𝐵|𝐴) 𝑃(𝐴)
𝑃(𝐴|𝐵) =
𝑃(𝐵)
El nombre del algoritmo Naive significa ingenuo y proviene de la suposición de que las
variables de entrada son mutuamente independientes.
Está basado en un diccionario (Bag of words) que asigna una puntuación de sentimiento a
cada palabra recogida en el texto, de tal forma que la puntuación total obtenida se
corresponde con la nota de sentimiento que el modelo devuelve a ese texto. Además, es un
modelo basado en reglas, es decir, utiliza una serie de reglas gramaticales y convenciones
sintácticas que le permiten expresar la polaridad e intensidad del sentimiento.
VADER utiliza el léxico y las reglas gramaticales para poder analizar el sentimiento de cada
frase. La utilidad de las reglas gramaticales aplica principalmente en el análisis de las
estructuras del texto, que permiten cambiar la polaridad de una palabra que en principio es
positiva en una negativa, dependiendo del sentido que se haya utilizado de la palabra
(Ejemplo: “muy bueno” no es lo mismo que “no muy bueno”).
4.1.3.2 TextBlob
TextBlob es una librería de Python que se utiliza para el procesamiento del lenguaje natural,
y que hace uso de la librería NLTK para realizar el preprocesado de los textos.
Esta librería también permite extraer tanto la polaridad como la subjetividad de una frase.
Hace uso de un diccionario léxico que devuelve una puntuación a la palabra del texto y luego
aplica reglas gramaticales que pueden invertir la polaridad de la palabra. Además, incluye
etiquetas semánticas que permiten la interpretación de emoticonos, signos de exclamación,
etc.
El procesamiento del lenguaje natural tiene multitud de aplicaciones entre las que destacan:
modelos de clasificación de texto, traducciones entre idiomas o auto correctores de texto
35
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
entre otros. Mezclados con técnicas más avanzadas como el Deep Learning se pueden
realizar modelos de reconocimiento de audio para su transformación a texto. El proyecto
recogido en el presente documento se ha centrado en modelos de clasificación de texto
extrayendo el sentimiento, pero existen otras aplicaciones de clasificación de texto. A
continuación, se mencionan algunas de las aplicaciones más conocidas en clasificación de
texto:
A lo largo del presente proyecto se han empleado como técnicas de clasificación de texto
modelos de regresión logística, Naive Bayes y los modelos de las librerías pre-entrenadas
descritos en el apartado 4.1.3.
A continuación, se detalla cada una de las técnicas empleadas para el desarrollo del proyecto.
36
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
En el presente proyecto se han realizado algunas operaciones sobre las valoraciones y se han
aplicado algunas técnicas conocidas de NLP. Las técnicas que se han empleado para la
limpieza de las valoraciones extraídas de Indeed han sido las siguientes:
4.3.1.1 Tokenization
La tokenization es el proceso que separa un texto en fragmentos de menos tamaño que se
llaman tokens. El tamaño de los fragmentos puede variar (Frases, palabras, caracteres, etc.).
El tamaño de los fragmentos más utilizados es por palabras o por grupos de palabras (n-
grams). Los grupos de palabras ayudan a los modelos a interpretar el contexto global de una
frase.
4.3.1.2 Stemming
El stemming se define como el proceso de reducción de una palabra a su tallo. Esto se realiza
mediante un proceso heurístico que corta los extremos de las palabras, logrando la supresión
de los afijos derivativos. Forma parte del análisis sintáctico mencionado en el apartado 2.2.2
y es ampliamente utilizado por los motores de búsqueda para encontrar las mismas palabras
o palabras similares a las de la búsqueda.
37
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
La regresión logística utiliza como parámetro de entrada una regresión lineal regular y aplica
la función sigmoide para obtener una probabilidad entre 0 y 1.
𝑧 = 𝜃0 𝑥0 + 𝜃1 𝑥1 + . .. + 𝜃𝑁 𝑥𝑁
Siendo θ el vector de pesos de la regresión lineal. Este vector de pesos indica la importancia
de cada una de las variables de entrada del vector x al modelo.
1
𝑆(𝑥 (𝑖) , 𝜃) = 𝑇 𝑥 (𝑖)
1 + 𝑒 −𝜃
De tal forma que cuando θTx(i) tenga un valor se acerque a ∞, el valor de salida de la regresión
logística tienda a 1, si θTx(i) se acerca a -∞, el valor de salida de la regresión logística tienda
a ser 0.
En cuanto a la fase de entrenamiento del modelo para ajustar el vector de pesos θ de nuestro
modelo de regresión logística, se ha hecho uso del algoritmo de optimización del descenso
de gradiente junto con una función de coste que se explican en los siguientes apartados.
38
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
La función de pérdida para una valoración del conjunto de entrenamiento se define como:
El valor negativo delante de la función de coste se debe a que todos los logaritmos van a
ser negativos, ya que la función sigmoide S solo devuelve valores entre 0 y 1.
Esta función de coste tendrá un valor elevado en caso de la predicción realizada sea
distinta de la etiqueta de la valoración.
4.3.2.2 Gradiente
Para el ajuste del vector de pesos θ del modelo, se hace uso del descenso de gradiente, que
es un algoritmo de optimización iterativo que se utiliza para encontrar el valor mínimo de
una función [24] (Peng Shi, 2020).
El gradiente de la función de coste con respecto a uno de los pesos del vector θ es:
𝑚
1
∇𝜃𝑗 𝐽(𝜃 ) = ∑(𝑆(𝑖) − 𝑦(𝑖) )𝑥𝑗
𝑚
𝑖=1
Y para ajustar el peso θj del vector de pesos theta, se utiliza la siguiente fórmula:
𝜃𝑗 = 𝜃𝑗 − 𝛼 × ∇𝜃𝑗 𝐽(𝜃)
Donde α es la tasa de aprendizaje con la que se quiere entrenar el modelo. Cuando menor
sea la tasa de aprendizaje, la convergencia del modelo se alcanzará más lentamente.
39
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
𝑉𝑐𝑙𝑎𝑠𝑒1
𝑃𝑐𝑙𝑎𝑠𝑒1 (𝑉𝑐𝑙𝑎𝑠𝑒1 ) =
𝑉
𝑃(𝑉𝑐𝑙𝑎𝑠𝑒1 ) 𝑉𝑐𝑙𝑎𝑠𝑒1
𝑙𝑜𝑔𝑝𝑟𝑖𝑜𝑟 = log = log = log(𝑉𝑐𝑙𝑎𝑠𝑒1 ) − log(𝑉𝑐𝑙𝑎𝑠𝑒0 )
𝑃(𝑉𝑐𝑙𝑎𝑠𝑒0 ) 𝑉𝑐𝑙𝑎𝑠𝑒0
40
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
𝑓𝑟𝑒𝑐𝑐𝑙𝑎𝑠𝑒1 + 1
𝑃(𝑊𝑐𝑙𝑎𝑠𝑒1 ) =
𝑁𝑐𝑙𝑎𝑠𝑒1 + 𝑉
Dónde Nclase1 es el número total de las palabras que han aparecido en valoraciones de la
clase1 y V es el total de palabras que se tienen en el vocabulario de las valoraciones (positivas
y negativas). Nótese que en el numerador se suma uno a la frecuencia de que la palabra W
haya aparecido en valoraciones de clase 1, para en caso de que no aparezca, esa palabra no
tenga una probabilidad de 0.
𝑃(𝑊𝑐𝑙𝑎𝑠𝑒1 )
𝑙𝑜𝑔𝑙𝑖𝑘𝑒𝑙𝑖ℎ𝑜𝑜𝑑 = 𝜆 (𝑊) = log ( )
𝑃(𝑊𝑐𝑙𝑎𝑠𝑒0 )
Cuando se ha calculado el valor de log Likelihood de todas las palabras del conjunto de
entrenamiento, se puede realizar la inferencia de una frase sumando el valor de log
Likelihood de cada una de las palabras que aparecen en esa frase. Si el resultado es mayor
que 0, se considera que esa valoración es positiva.
41
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
En (Hanhoon Kang, 2012) se describe la utilización del modelo de Naive Bayes para la
mejora en la clasificación de valoraciones sobre restaurantes. El documento menciona la
solución implementada ante un problema de clasificación desbalanceada, en el que los
modelos desarrollados anteriormente obtenían mejores resultados en la clasificación de
valoraciones positivas que clasificando las valoraciones negativas. Para resolver este
42
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
problema se desarrolla el modelo de clasificación de Naive Bayes con el que se obtiene una
mejora notable.
A continuación, se describen las ideas principales de los papers científicos en los que se ha
utilizado el modelo de regresión logística. Además, en el segundo paper citado se utiliza
también el modelo de Naive Bayes.
En (Peng Shi, 2020) se realiza la implementación del modelo de regresión logística con
diferentes aproximaciones, incluyendo Descenso del Gradiente (GD), Descenso del
Gradiente Estocástico (SGD) y el Descenso de Gradiente Estocástico por lotes (MBSGD).
La implementación ha sido desarrollada en un entorno Big Data utilizando Hadoop y Spark,
dos softwares libres para el procesamiento de datos a gran escala.
En (Vikas Khullar, 2017) se cita la aplicación de los modelos de clasificación de Naive Bayes
y regresión logística para la clasificación binaria de Tweets. La solución está desarrollada
en un entorno Big Data con el uso de un clúster como almacenamiento y procesamiento de
los datos.
43
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Por último, en (David Zimbra, 2018) se describen los resultados obtenidos tras realizar una
comparación de 28 sistemas académicos desarrollados para la clasificación binaria de
Tweets basada en el análisis de sentimientos. Las claves que han identificado para el análisis
de sentimientos de Tweets son: los resultados de los modelos basados en el aprendizaje
automático supervisado ofrecían mejores resultados que los sistemas basados en un conjunto
de reglas predefinidas; los métodos de Ensemble de modelos ofrecen mejores resultados ya
que consiguen adaptarse mejor al desequilibrio entre clases; por último se describe cómo la
utilización de varios léxicos para la extracción de información consigue adaptarse mejor a
los sentimientos que se pueden expresar mediante emoticonos, léxicos de negación, léxico
de emociones, etc.
44
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
SCRAPING
Tal y como se describe en el apartado 2.2.1, para realizar un módulo de web scraping se
suelen seguir una serie de pasos. En el presento capítulo, se detallan cada uno de los pasos
seguidos para implementar el módulo de extracción de datos del proyecto y las decisiones
que se fueron tomando a lo largo de su implementación.
Una vez se ha decidido que el proyecto necesita de una fuente de datos externa, el primer
paso a seguir es el análisis de las distintas páginas web o de las fuentes de datos públicas que
existen para conseguir la información valiosa.
Por lo tanto, se comenzó el análisis de las páginas web con más potencial de ofrecer
información que sirviese para cumplir con los objetivos del proyecto. Los objetivos
mencionados son la obtención de información accionable de una web de empleo y el
desarrollo de modelos de procesamiento de lenguaje natural para clasificar esa
información.
La primera página web que se analizó fue Glassdoor. Se trata de una página web
estadounidense en la que antiguos y actuales empleados envían sus valoraciones sobre la
empresa de una forma anónima. Además de la valoración general sobre la empresa,
Glassdoor ofrece información sobre los salarios, entrevistas, beneficios y empleos de las
empresas.
45
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
La información objetivo del módulo web scraping son las opiniones que los usuarios envían
sobre las empresas para, en función de la puntuación y el texto de la valoración, poder
obtener una cantidad de información suficiente para comenzar a desarrollar modelos de NLP.
El primer paso fue realizar una navegación rápida a través de la página hasta el apartado de
opiniones de una empresa. Llegar hasta la información que se requiere es rápido e incluso se
puede llegar a través de una URL con la terminación de la Figura 10:
46
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Este problema supone que el módulo de web scraping debe saber autenticarse en la página
web de Glassdoor si quiere acceder a la información. Si una página web toma tales medidas
de protección frente a sus datos es precisamente porque intenta evitar el web scraping.
Por este motivo se decidió comenzar a analizar la siguiente página web de valoraciones,
Indeed.
Al igual que en el análisis de Glassdoor, lo primero que se realizó fue una navegación a
través del navegador hasta la información valiosa para el cumplimiento de los objetivos del
proyecto. Lo primero que se observa es una página en la que se muestran muchas de las
empresas que tienen información dentro de la página web. Esta página puede servir de ayuda
a la hora de recoger una primera información general sobre las empresas que hay y el número
de valoraciones que tiene para poder empezar a tomar decisiones.
Siguiendo con la navegación, se observa que llegar hasta la página que contiene las
valoraciones sobre la empresa es tan sencillo como en el caso de Glassdoor y simplemente
habría que ir modificando el nombre de la empresa que se quiera extraer la información para
llegar a las valoraciones de esta. En la Figura 12 se muestra la terminación de la URL para
poder llegar al apartado de valoraciones.
Cuando se realiza la navegación a través del listado de valoraciones que hay de cada
empresa, no hay ningún impedimento para llegar a la información como ocurría en
Glassdoor. Estos factores han sido muy importantes a la hora de tomar la decisión de utilizar
Indeed como fuente de datos externa, pero antes de extraer la información es necesario llevar
a cabo ciertos pasos importantes detallados en los siguientes apartados.
47
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Como se ha explicado en el apartado anterior, para poder acceder al total de las valoraciones
en la página web de Glassdoor, hay que iniciar sesión y que el módulo se identifique y recoja
las cookies de Glassdoor. Esto es un proceso más complejo y requiere que el usuario acepte
las condiciones de uso. Por lo que se ha optado por la utilización de Indeed como fuente de
datos.
Una de las posibilidades que ofrece Indeed es la utilización de su API privada para el acceso
a la información publicada dentro de la página web. Esta opción ha quedado descartada
puesto que se trata de una API de pago en función del uso que se vaya a hacer de la misma.
En el proyecto se requiere una numerosa cantidad de valoraciones, por lo que el uso de esta
API puede suponer un elevado coste.
• Normativa de competencia desleal [3]: esta normativa afecta cuando el que extrae la
información realiza un uso de los datos que pueda ser considerado como imitación,
y pueda ser perjudicial para la otra empresa.
• Violación de los términos y condiciones de uso [4]: esta normativa afecta desde el
momento en el que el usuario que navega por la página web acepta dichos términos
y condiciones de uso.
48
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
A continuación, se detalla cómo un módulo de web scraping suele interceptar este tipo de
peticiones que hace una página web a un servidor para mostrar el contenido de la página
web. En la Figura 13 se muestra a muy alto nivel cómo funciona este tipo de páginas.
Cuando un navegador carga una página web, se realizan una serie de peticiones que en
ocasiones están visibles y permiten al programador interceptar el punto final (endpoint) de
la API a la que llama el navegador para mostrar el contenido de la página. Cuando el
programador ha sido capaz de interceptar esta llamada a la API del servidor que devuelve la
información de la página, puede replicar esa llamada al servidor. Como se puede observar
en la imagen, la llamada a la API puede devolver la información en varios formatos. El
formato más extendido y utilizado para las APIs es el formato JSON. Es el acrónimo de
49
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Realizando un análisis de la red del navegador al cargar la página web se pueden analizar
las peticiones que realiza el navegador para obtener los datos con los que muestra la página
web. El navegador que se ha utilizado para este proyecto ha sido un navegador Chrome, por
lo que todas las capturas que se muestran pueden variar en función de la versión de Chrome
instalada o del navegador que se tenga instalado. En cualquier caso, el funcionamiento de
este tipo de herramientas en los navegadores suele ser muy similar.
Para analizar el tráfico que recibe un navegador web al cargar la página, se tiene que abrir la
ventana esta ventana y recargar la página web. Una vez se ha realizado esto, se puede
observar todo el tráfico que gestiona el navegador. En el proyecto en concreto se ha realizado
con la página web de Indeed, obteniendo lo que se muestra en la Figura 14.
50
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
En esta sección se informa de todo el tráfico y muestra algunos valores de interés para el
análisis de las peticiones relevantes para el módulo de web scraping. Los parámetros más
importantes dentro de esta ventana son:
• Tipo: este parámetro informa del formato de la respuesta. El tipo de formato puede
ser un documento, una hoja de estilo, un script, código JavaScript, etc.
• Tamaño: este parámetro informa del tamaño que tiene la información contenida en
la respuesta. Lo más habitual es que la petición que contiene los datos es la que tiene
un tamaño mayor.
• Waterfall: Este parámetro indica información sobre los tiempos que conlleva realizar
la petición (tiempo de espera, carga, etc.). Generalmente cuanto más tiempo tarda en
recibir la respuesta, más datos contiene la respuesta.
En la imagen se han destacado en rojo estos tres parámetros de una petición que ha sido de
interés, ya que ocupa un tamaño de 54,9 kB, y ha sido la que más tiempo se ha tardado en
procesar.
Por lo tanto, el siguiente paso es comprobar que se puede replicar esa petición en Python.
En la Figura 5 se muestra un ejemplo realizado con la librería Requests. De esta forma, se
puede confirmar que, si realizamos peticiones a las URLs de las valoraciones y realizamos
el procesamiento de la información del archivo HTML de la respuesta, se puede obtener la
información.
Esta es una de las implementaciones llevadas a cabo en el módulo de Web scraping cuyo
detalle del proceso de desarrollo se muestra en el apartado 6.5.
Sin embargo, uno de los objetivos secundarios es la exploración de las posibles vías a la hora
de desarrollar un módulo de web scraping. Una de las librerías más potentes y útiles para
hacer web scraping es Selenium, y la segunda forma de extraer la información se ha centrado
en realizarla con esta librería de Python.
En resumen, las formas desarrolladas para extraer la información han sido mediante la
programación HTTP (librerías Requests y BeautifulSoup) y mediante las técnicas de control
de navegador web basado en Selenium (librería Selenium).
52
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
La estructura desarrollada para los módulos sigue la explicada en el apartado 2.2.1 y que se
muestra en la Figura 1. El primer módulo que se ha desarrollado es el conocido como spider,
que intenta recoger la mayor información posible de las páginas web, siendo normalmente
la recopilación de nuevas URLs el objetivo de este módulo.
En el proyecto, este módulo se ha dividido en dos partes principales y con un objetivo bien
definido. Las partes que se han desarrollado han sido las siguientes:
53
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
54
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Estas partes se han desarrollado por separado, tanto con la programación HTTP, como con
la librería Selenium.
55
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
A diferencia del bloque con el spider, este bloque no se divide en dos partes. Sin embargo,
tiene dos tareas que se pueden diferenciar claramente:
56
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
o Título.
o Texto de la valoración.
o Texto de ventajas.
o Texto de desventajas.
o Nota de la valoración.
o Nota de las categorías: Indeed tiene cinco categorías definidas para valorar
(Equilibrio vida personal/laboral, Remuneración/Beneficios, Estabilidad
laboral/Facilidad de promoción, Gestión y Cultura).
o Puesto.
o Localidad.
o Fecha de la valoración.
o Votación útil: si la valoración le ha resultado de utilidad a otra persona.
o Votación no útil: si la valoración no le ha resultado de utilidad a otra persona.
Este bloque se ejecuta individualmente por empresa o por una lista de empresas que recibe
como parámetro.
57
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
En este apartado se describe la lógica de las funciones implementadas en los bloques del
spider y el scraper que se han explicado en el apartado anterior.
A continuación, se detalla la lógica implementada en la parte 1 del bloque. Los pasos que
sigue la función implementada para la parte 1 son los siguientes:
1. Lectura de los datos del fichero JSON (“empresas.json”) con la información de las
empresas ya guardadas, de esta forma el spider actualiza la información existente o
inserta una nueva empresa en caso de que no se haya encontrado todavía.
2. Creación de la variable “url” que tiene la dirección URL de la página de inicio de
valoraciones de empresas.
3. Creación de un bucle que se ejecuta el número de veces que se le pasa cómo
parámetro a la función (número de veces que se quiere recargar la página). En este
bucle se realiza lo siguiente:
a. Petición HTTP con la librería Requests.
b. Creación de un elemento de BeautifulSoup con la respuesta de la petición que
se conoce que es un archivo HTML.
c. Extracción de los elementos de BeautifulSoup que tienen la información de
cada empresa.
d. Bucle de extracción de la información de cada elemento.
4. Actualización y guardado del fichero “empresas.json” con la nueva información.
58
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Por lo tanto, el script ejecuta tantas peticiones HTTP – GET como número de iteraciones se
le pase a la función.
Uno de los elementos clave de este bloque es formar la lista de 24 empresas que carga la
página de inicio cuando se realiza la petición HTTP y se crea el elemento de BeautifulSoup.
En la Figura 21 se muestra la línea del código de la función para poder extraer dicha lista.
Figura 22. Elemento HTML que recoge la información de la empresa (página de inicio).
La clase se refiere al estilo que se le ha aplicado al elemento HTML y que se le pasa como
un atributo.
Cómo se puede observar, lo único que hay que añadir es el parámetro “start” en la petición
HTTP y de esta forma se carga la página 2 de valoraciones.
Una vez descrita la forma de navegar entre las distintas páginas, a continuación, se detallan
los pasos que realiza el script:
1. Lectura del fichero o lista de empresas que se quieran extraer sus valoraciones.
2. Creación de un bucle por cada empresa, que realiza lo siguiente:
60
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
a. Creación de una lista de enteros con los números que habría que pasarle al
parámetro “start” en la petición (Ejemplo: 1.000 valoraciones, entonces la
lista de enteros sería [0, 20, 40, 60, …, 980]).
b. Creación de la lista de URLs a partir de la lista de enteros obtenida.
c. Creación de un bucle por cada URL que realiza lo siguiente:
i. Petición Requests a la URL.
ii. Si es la primera URL, entonces se realiza la tarea 1 de extracción de
información general.
iii. Extracción de las valoraciones de la página correspondiente (20
valoraciones por página).
3. Guardado de un fichero JSON por cada empresa.
Para la extracción de las valoraciones por cada página se ejecuta la misma función que se ha
mostrado en la Figura 21, pero con el nombre de la clase “css-lqffld-Box eu4oa1w0”. En la
Figura 24 se muestra como se ha encontrado el nombre de la clase.
61
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
62
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
El desarrollo del scraper con Selenium tiene más diferencias con respecto al spider,
principalmente en la forma de navegar por las distintas páginas de las valoraciones. En el
scraper con la programación HTTP es necesario calcular con anterioridad el número de
peticiones que había que hacer para obtener todas las valoraciones y formar las URLs de
cada página. Sin embargo, con Selenium esto no es necesario puesto que se puede saber
cuándo se ha llegado al final por medio de los botones de paginación que hay. En la Figura
26 se muestra un ejemplo de los botones mencionados.
Una vez descrita la forma de navegar entre las distintas páginas, a continuación, se detallan
los pasos que realiza el script:
1. Lectura del fichero o lista de empresas que se quieran extraer sus valoraciones.
2. Comienzo del control del navegador de Chrome por parte de Selenium.
3. Creación de un bucle por cada empresa, que realiza lo siguiente:
63
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
El código que ejecuta el paso “i” explicado en la lista de pasos se muestra en la Figura 27.
Las acciones que realiza un usuario cuando controla el navegador (clic en botones, escribir
en los cuadros de texto o hacer scroll5 por la página web) son acciones que se realizan con
código JavaScript mediante la activación de ciertos eventos que modifican la página web
cuando se detectan. Esta posibilidad de interactuar es una de las grandes ventajas que ofrece
Selenium y que son posibles con la ejecución de comandos como el que se muestra en la
Figura 27.
5
Mover el texto o los gráficos mostrados en una dirección determinada en la pantalla de un ordenador para ver
diferentes partes de los mismos.
64
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Esta solución debe tener en cuenta los tiempos de carga de un navegador, por lo que se tarda
más que con la programación HTTP. En los pasos en los que se indica “tiempo de espera”
es donde se han introducido unos segundos para que le dé tiempo al navegador a cargar la
nueva página.
65
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
NLP
En el siguiente capítulo se describen los pasos llevados a cabo en el proyecto para el
desarrollo de los modelos de clasificación de las valoraciones.
• Consultoría.
• Transporte.
• Turismo.
• Alimentación.
Con esta decisión se consigue un vocabulario más extendido y más variedad en la puntuación
de las valoraciones.
En el primer entrenamiento de los modelos de clasificación se hizo uso sólo del texto
contenido en la valoración, pero en los siguientes entrenamientos se fueron introduciendo
los textos correspondientes al título de la valoración, a las ventajas y a las desventajas. Esto
ha aportado más información y ha permitido mejorar las métricas de los modelos.
66
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Las valoraciones que se han utilizado para entrenar los modelos de clasificación han sido las
valoraciones que estaban escritas en inglés. En esta decisión han influido dos motivos:
• El número de valoraciones en inglés era mayor: Tras haber analizado los datos de
salida del procesado realizado en el parser, se habían obtenido 99.484 valoraciones
en inglés, frente a las 9.820 de español.
• El desarrollo de las librerías de NLP utilizadas está más avanzado para el
procesamiento de textos en inglés.
Por lo tanto, los datos de entrada de los modelos son las valoraciones escritas en inglés.
Para poder entrenar los modelos de clasificación binaria se ha realizado la separación de las
valoraciones en valoraciones positivas y valoraciones negativas. Para ello, se ha elegido la
nota general de la valoración como umbral para separar en estas dos clases. Las valoraciones
que tienen una puntuación de 1 o 2 se han clasificado como malas (valor 0) y las valoraciones
con la puntuación de 4 o 5, se han clasificado como buenas (valor 1). En la Figura 29 se
muestra la distribución de las valoraciones obtenidas según la nota general de la valoración.
67
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Se puede observar que el número de valoraciones positivas es mayor que de las valoraciones
negativas, por lo que se tendrá un conjunto de datos desbalanceado. Una vez se ha realizado
la clasificación binaria (valoraciones buenas y malas), quedan eliminadas las valoraciones
con una puntuación de 3 y un porcentaje de valoraciones malas del 25%. En la Figura 30 se
muestra la distribución final del conjunto de valoraciones.
68
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Tras la preparación del conjunto de valoraciones a utilizar para el desarrollo del modelo, se
desarrolló el bloque de procesado del texto de cada valoración. Como se ha descrito en el
apartado 4.3.1 las técnicas que se han utilizado han sido la tokenization y el stemming.
Tras realizar un primer análisis de las valoraciones extraídas, se han observado que algunas
contenían hipervínculos a otras páginas web. Esta información no ha sido introducida a los
modelos por la posible falta de interpretabilidad, para ello, se ha utilizado una expresión
regular que elimina cualquier tipo de enlace. En la Figura 31 se muestra la línea de código
que realiza esta operación.
Los modelos que se han desarrollado utilizan el diccionario de frecuencias para la fase de
entrenamiento. Para poder desarrollar un diccionario de frecuencias, el primer paso a realizar
es la tokenization de las valoraciones. Los fragmentos en los que se ha dividido cada
valoración han sido las palabras. Para ello, se ha utilizado la librería NLTK, en concreto la
función TweetTokenizer que permite la separación de emoticonos, los cuales son de mucha
utilidad ya que expresan de forma muy clara la positividad o negatividad de una valoración.
En la Figura 32 se muestra las líneas de código que realizan el “tokenizado”.
En el lenguaje humano hay muchas palabras que no aportan información a la hora de analizar
el sentimiento de una frase, estas palabras son conocidas como stopwords. En el diccionario
de frecuencias construido para que los modelos realicen el entrenamiento no es
recomendable introducir este tipo de palabras porque puede llevar a resultados erróneos. Por
lo tanto, el siguiente paso que se ha realizado ha sido la eliminación de las stopwords. Se ha
69
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
hecho uso de la lista de palabras stopwords que tiene la librería NLTK para el inglés. En la
Figura 33 se muestra el fragmento de código que elimina este tipo de palabras de la lista de
tokens.
El último paso para la realización del procesamiento al completo de las valoraciones ha sido
la implementación de la técnica explicada en el apartado 4.3.1.2, el stemming. Para ello, se
ha utilizado la función PorterStemmer de la librería NLTK. Este algoritmo de reducción de
la palabra a su tallo sólo es utilizable para el inglés y se caracteriza por su rapidez y
simplicidad a la hora de eliminar los prefijos y sufijos utilizados en ese idioma. En la Figura
34 se muestra el fragmento de código que se ha desarrollado para realizar el stemming de las
palabras.
El proceso completo consigue transformar una valoración en una lista de palabras que tienen
significado dentro de la valoración, y en su forma más abreviada (tallo). Este procesamiento
es muy importante para poder realizar un diccionario de frecuencias de las palabras que
aparecen en las valoraciones que contenga la información que les resulta de mayor utilidad
a los modelos de clasificación.
70
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
En la Figura 35 se muestra un ejemplo de cómo quedaría una breve valoración tras haber
sido procesada por la función implementada.
71
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
• Sigmoide.
• Descenso de gradiente.
• Extracción de features: función que realiza la extracción de características de una
valoración para poder introducir estas características al modelo. Realiza el procesado
de la valoración y devuelve un vector con la positividad y la negatividad de la frase.
• Función de entrenamiento del modelo.
• Función de test del modelo.
6
Se define como el fenómeno de observar resultados sistemáticamente perjudicados por supuestos erróneos.
72
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
En el presente proyecto se han entrenado tres modelos diferentes, el primero de ellos sólo ha
utilizado el texto de las valoraciones. Tras realizar el entrenamiento del modelo se obtuvo el
siguiente vector de pesos θ, que indica la importancia y el efecto de cada una de las variables
a utilizar en la regresión logística. La positividad del texto se calcula accediendo a la
puntuación que tiene cada palabra en el diccionario de frecuencias positivo, y la negatividad
del texto se calcula accediendo a la puntuación que tiene cada palabra en el diccionario de
frecuencias negativo.
El segundo de los modelos entrenados ha utilizado el texto del título junto con el texto de la
valoración (concatenados). En la Tabla 3 se muestran los valores del vector de pesos θ.
Por último, se entrenó un modelo que introducía el texto correspondiente a las ventajas y el
texto correspondiente a las desventajas. Para ello, se han introducido ambos textos como
nuevos predictores del modelo de regresión y se han calculado sus diccionarios de
frecuencias del conjunto de entrenamiento para ambos (ventajas y desventajas). El vector de
pesos obtenido ha sido el siguiente:
73
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Sin embargo, este tipo de visualización no se puede realizar para el tercer modelo, ya que
hay más predictores y al realizar la visualización en dos dimensiones no se puede realizar
una buena interpretación de la visualización.
74
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Para la obtención de las métricas modelo, se ha implementado una función de test que realiza
las predicciones del conjunto de test. Los resultados obtenidos se detallan en el Capítulo 8.
• Función de entrenamiento del modelo: función que contiene todos los cálculos de
probabilidades necesarios para el cálculo del log Likelihood.
• Función de test del modelo.
Cuando se completa el entrenamiento del modelo se obtiene el diccionario con el valor del
log Likelihood de todas las palabras del conjunto de entrenamiento y el valor de la
probabilidad a priori (indica el desbalanceo del conjunto de entrenamiento).
Para realizar una comparación entre los resultados del modelo de clasificación utilizando
regresión logística o Naive Bayes, se ha realizado el entrenamiento de tres modelos. Estos
modelos emplean los mismos conjuntos de información que utilizan los tres modelos de
regresión logística explicados anteriormente. El primero de los modelos sólo utiliza el texto
de la valoración, el segundo modelo concatena el título con el texto de la valoración y el
tercer modelo concatena el título, el texto de la valoración y el texto de ventajas/desventajas.
El valor de logprior (probabilidad a priori) para los tres modelos ha sido de 1.47 y la longitud
del diccionario de log Likelihood crece con el aumento del diccionario de frecuencias
calculado en cada modelo. En la Tabla 5 se muestra el número de claves de cada diccionario.
Para la obtención de las métricas modelo, se ha implementado una función de test que realiza
las predicciones del conjunto de test. Los resultados obtenidos se detallan en el Capítulo 8.
Un modelo pre-entrenado es un modelo que ha sido entrenado con una gran cantidad de
datos para resolver un problema. En el presente trabajo se han utilizado dos modelos pre-
entrenados preparados para analizar el sentimiento que hay detrás de un texto.
76
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
El uso de estas librerías de referencia del análisis de sentimientos ha permitido comparar los
resultados obtenidos con los modelos de clasificación implementados en el proyecto con los
resultados que han proporcionado las librerías pre-entrenadas en la clasificación de las
valoraciones.
Para poder realizar una comparación de los modelos desarrollados, se han evaluado sobre el
conjunto de test los modelos pre-entrenados explicados en el apartado 4.1.3. Utilizando
únicamente el conjunto de test para evaluar el rendimiento de estos modelos, se han realizado
tres pruebas:
77
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANÁLISIS DE RESULTADOS
8.2.1 MÉTRICAS
En el siguiente apartado se van a comparar los resultados obtenidos en cada uno de los
modelos desarrollados. La comparación se va a centrar en la mejora que han tenido los
78
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANÁLISIS DE RESULTADOS
modelos tras incorporado más información con la adición del texto del título de la valoración
y con la adición del texto de las ventajas y las desventajas.
A continuación, se detallan las métricas que se han utilizado para la evaluación de los
resultados de un modelo. En las fórmulas de las métricas mostradas: TP se corresponde con
los valores positivos predichos de manera correcta; TN se corresponde con los valores
negativos predichos de manera correcta; FP se corresponde con los valores positivos
predichos de manera incorrecta; y FN se corresponde con los valores negativos predichos de
manera incorrecta.
79
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANÁLISIS DE RESULTADOS
Los mejores resultados son obtenidos con el modelo de clasificación Naive Bayes. Destaca
la baja precision del modelo de regresión logística, motivada por el desbalanceo encontrado
en el conjunto de entrenamiento (75% valoraciones positivas y 25 % valoraciones negativas).
El modelo de Naive Bayes logra un mejor desempeño ya que el parámetro de log prior ayuda
al modelo cuando las clases están desbalanceadas.
En cuanto a los modelos pre-entrenados, el algoritmo de VADER tiene mejores métricas que
el algoritmo de TextBlob sobre el conjunto de test utilizado.
Realizando un análisis de los resultados obtenidos con la adición del título, se puede observar
que los resultados son mejores, excepto en el modelo de regresión logística. En el último
80
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANÁLISIS DE RESULTADOS
El modelo que sigue ofreciendo los mejores resultados sigue siendo el modelo de
clasificación de Naive Bayes.
81
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANÁLISIS DE RESULTADOS
Predicción
Negativos Positivos
Negativos TN FP
Real
Positivos FN TP
8.2.2.3 VADER
Predicción
Negativos Positivos
Negativos 1.625 1.399
Real
82
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANÁLISIS DE RESULTADOS
8.2.2.4 TextBlob
Predicción
Negativos Positivos
Negativos 1.319 1.775
Real
Analizando los resultados obtenidos, se puede concluir que los modelos que presentan mejor
desempeño en la tarea de clasificación atendiendo a la métrica F1 score, ya que también aúna
las métricas recall y precision son los modelos de Naive Bayes. En el apartado 9.2 se
describe una serie de tareas a desarrollar en el futuro con el objetivo de mejorar los resultados
del resto de modelos.
1. Valoración negativa: “Its a great place for employees to get along with each other
but somethings should not be done in the work place but never the less it was a great
job and the staff is very friendly and the welcome you with open arms...”
Valoración procesada: ['great', 'place', 'employe', 'get', 'along', 'someth', 'done', 'work',
'place', 'never', 'less', 'great', 'job', 'staff', 'friendli', 'welcom', 'open', 'arm', '...']
83
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANÁLISIS DE RESULTADOS
2. Valoración positiva: “It was an okay place to work for good paycheck long hours
though upper management didn’t really care makes the lower management job
harder after 10 years I decided to try throw in the towel”
Valoración procesada: ['okay', 'place', 'work', 'good', 'paycheck', 'long', 'hour',
'though', 'upper', 'manag', '’', 'realli', 'care', 'make', 'lower', 'manag', 'job', 'harder', '10',
'year', 'decid', 'tri', 'throw', 'towel']
ANÁLISIS DE RESULTADOS
85
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
9.1 CONCLUSIONES
En particular, de los resultados obtenidos se deriva que los modelos de Naive Bayes
implementados son adecuados para llevar a cabo la clasificación de valoraciones como
positivas o negativas. Sobre el resto de los modelos, se pueden llevar a cabo tareas para la
mejora de su desempeño (descritas en el apartado 9.2).
Los errores analizados al término de la fase de test han permitido detectar los puntos débiles
de los modelos. Gracias a esto se han identificado posibles mejoras en los modelos
implementados, principalmente en la fase del preprocesado de los textos.
86
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
Tras la realización del presente proyecto, se han identificado trabajos futuros que mejoren
los resultados obtenidos y que amplíen las aplicaciones que tiene el procesamiento del
lenguaje natural.
87
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
• Uso de técnicas de Deep Learning: un posible trabajo futuro puede ser el uso de
técnicas de Deep Learning aplicadas a la clasificación de textos, en el caso del
trabajo, de la clasificación de valoraciones positivas o negativas.
• Análisis de la subjetividad: existen librerías que permiten la identificación de la
subjetividad en los textos (la librería TextBlob).
• Clustering: este tipo de técnicas permitiría identificar pequeños grupos en las
valoraciones que, junto con un estudio posterior, permite la segmentación de las
valoraciones.
En cuanto a las aplicaciones del uso de modelos de clasificación de texto se han identificado
los siguientes:
88
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
BIBLIOGRAFÍA
89
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
BIBLIOGRAFÍA
[17] Martin., D. J. (2020). Logistic Regression. Speech and Language Processing., 21.
Retrieved from https://web.stanford.edu/~jurafsky/slp3/5.pdf
[18] Monisha Kanakaraj, R. M. (2015). Performance Analysis of Ensemble Methods on Twitter
Sentiment Analysis using NLP Techniques. 2.
[19] mulesoft. (2021). Retrieved from https://www.mulesoft.com/resources/api/what-is-an-api
[20] Nadia Felix, E. R. (2014). Tweet Sentiment Analysis with Classifier Ensembles. 31.
[21] Nagappan, M. (s.f.). uwaterloo. Obtenido de
https://cs.uwaterloo.ca/~m2nagapp/courses/CS446/1195/Arch_Design_Activity/ClientServ
er.pdf
[22] nltk. (2021). Retrieved from https://www.nltk.org/
[23] ÖZLÜ, A. (2018). medium. Obtenido de https://ahmetozlu93.medium.com/mastering-rest-
architecture-rest-architecture-details-e47ec659f6bc
[24] Peng Shi, W. Y. (2020). Logistic Regression for Sentiment Analysis on Large Scale Social
Media Posts via Apache Spark. 6.
[25] Prashant Johri, M. K.-T. (2020). Natural Language Processing: History, Evolution,
Application and Future Work. 8.
[26] Raschka, S. (2014). Naive Bayes and Text Classification I. 20.
[27] selenium. (2021). Retrieved from https://selenium-python.readthedocs.io/
[28] Vikas Khullar, A. P. (2017). Sentiment classification on big data using Naïve bayes and
logistic regression. 6.
[29] visualstudio. (2021). Obtenido de https://code.visualstudio.com/
[30] webfoundation. (s.f.). Obtenido de https://webfoundation.org/about/vision/history-of-the-
web/
[31] wikipedia. (s.f.). Obtenido de https://en.wikipedia.org/wiki/Logistic_regression
[32] Zhang, X. (2018). Forbes. Retrieved from
https://www.forbes.com/sites/forbestechcouncil/2018/11/06/the-evolution-of-natural-
language-processing-and-its-impact-on-ai/?sh=17a2c7361119
90
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANEXO A
91
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
MÁSTER EN BIG DATA. TECNOLOGÍA Y ANALÍTICA AVANZADA
ANEXO A
92