diff --git "a/html/0-1 Pysentimiento.html" "b/html/0-1 Pysentimiento.html" --- "a/html/0-1 Pysentimiento.html" +++ "b/html/0-1 Pysentimiento.html" @@ -15101,7 +15101,116 @@ body[data-format='mobile'] .jp-OutputArea-child .jp-OutputArea-output { } init_mathjax(); - + + +
El siguiente notebook es un prototipo un detector de sentimientos de noticias.
+En este notebook, presentaremos un prototipo de detector de sentimientos de noticias, una aplicación emocionante de la inteligencia artificial en el campo financiero. Nuestro objetivo principal es realizar un análisis exploratorio de texto utilizando técnicas de procesamiento del lenguaje natural (NLP, por sus siglas en inglés) para clasificar las noticias según su tono emocional.
+ +En el prototipo del detector de sentimientos de noticias, se utilizan varias bibliotecas para diferentes tareas. Aquí hay un resumen de las bibliotecas utilizadas:
+os: Esta biblioteca proporciona funciones para interactuar con el sistema operativo, como la manipulación de rutas de archivos y directorios.
+pathlib: Esta biblioteca proporciona una interfaz orientada a objetos para trabajar con rutas de archivos y directorios de manera más intuitiva.
+matplotlib: Esta biblioteca se utiliza para visualizar datos y generar gráficos, como histogramas y gráficos de barras. En el prototipo, se utiliza para visualizar los resultados del análisis exploratorio de texto.
+pandas: Esta biblioteca se utiliza para el análisis y manipulación de datos en forma de tablas. En el prototipo, se utiliza para cargar y manipular los datos de las noticias.
+spacy: Esta biblioteca es una poderosa herramienta de procesamiento de lenguaje natural (NLP). En el prototipo, se utiliza para acceder a las palabras vacías (stop words) en español, que son palabras comunes pero no aportan información significativa para el análisis de sentimientos.
+wordcloud: Esta biblioteca se utiliza para generar nubes de palabras, que son visualizaciones que muestran las palabras más frecuentes en un texto. En el prototipo, se utiliza para visualizar las palabras más frecuentes en las noticias recopiladas.
+Estas son funciones que usan para hacer análsis de texto, lo importante es entender que lo usamos para plotear nube de palabras
+ +El tamaño del texto es crucial al seleccionar modelos adecuados. La longitud promedio y la variabilidad determinan si se requieren enfoques basados en transformadores y el impacto en los recursos computacionales. Esto optimiza el rendimiento del análisis de sentimientos y el procesamiento de texto.
+ +Limpiamos el código.
+|
El objectivo del modelo es predecir, el sentimiento de para targer, companies y consumer. Cada uno de estas se divide en tres Positiva, Negativa y Neutral. Por lo tanto la varaible objectivo va hacer un vector de nueve componente, esto se da por las tres variables y las tres categorias, lo que lo convierte en un problema de mutiples labels. En otras palabras una registro (Una fila en el dataset) puede pertenecer a varias categorias a la vez
+El objetivo del modelo es predecir el sentimiento para las variables "target", "companies" y "consumer", donde cada una de ellas se divide en tres categorías: positiva, negativa y neutral. Esto implica que el vector objetivo será de nueve componentes, ya que cada variable tiene tres categorías posibles. El problema de clasificación se convierte en un problema de múltiples etiquetas, lo que significa que una fila en el conjunto de datos puede pertenecer a varias categorías a la vez. El objetivo del modelo será predecir las etiquetas correspondientes a cada una de las nueve combinaciones posibles de sentimientos para las tres variables.
Aquí podemos ver el vector de caracteristicas. Lo que esperamos de la red neuronal es que entre más cercano esté a uno, es porque al texto se le asocia esta caracteristica.
+|
Entiendo. Según la imagen del vector de características, se espera que la red neuronal produzca valores cercanos a 1 para indicar la asociación del texto con una determinada característica o categoría de sentimiento. Esto implica que cuanto más cercano esté el valor a 1, mayor será la probabilidad de que el texto esté relacionado con esa característica específica.
+En un problema de clasificación de múltiples etiquetas, donde se busca predecir varias categorías simultáneamente, los valores del vector de características pueden interpretarse como la probabilidad de pertenencia a cada una de las categorías. Por lo tanto, un valor cercano a 1 indica una alta probabilidad de que el texto pertenezca a una categoría en particular.
+Es importante tener en cuenta que la interpretación exacta de los valores depende del enfoque y la configuración específica del modelo utilizado. Algunos modelos pueden generar probabilidades directamente a través de una función de activación de salida, como la función sigmoide, mientras que otros pueden producir valores continuos que luego se convierten en probabilidades utilizando un umbral determinado.
+En resumen, se espera que la red neuronal produzca valores cercanos a 1 en el vector de características para indicar una mayor asociación con una característica específica o categoría de sentimiento en un problema de clasificación de múltiples etiquetas. Estos valores pueden interpretarse como probabilidades de pertenencia a cada categoría.
+Para el análisis exploratorio, se va a centrar en saber que palabras son común mente más usadas y tambien cada una de las caracteristicas
- +Se puede ver como el dataset está desvalanceado. En este caso para la variables target_sentiment, se tiene más registros para las etiquetas positivas.
+|
La imagen 3 anterior muestra que el dataset está desbalanceado, especialmente en la variable "target_sentiment" donde se observa una mayor cantidad de registros con etiquetas positivas en comparación con las etiquetas negativas y neutrales. El desbalance de clases puede tener un impacto en el rendimiento y la capacidad de generalización de los modelos de aprendizaje automático
Es importante tambien ver el tamaño de oración. Aquí podemo ver como valor máximo 160 de caracteres y el valor mínimo de 69. También para target_sentiment los encabezados con sentimiento neutro son más pequeñas
+|
Basados en la imagen 4, el tamaño de las oraciones también es un aspecto importante a considerar en el análisis. Según los datos proporcionados, se observa que el tamaño máximo de las oraciones es de 160 caracteres. Esto puede ser útil para determinar la longitud máxima de secuencia que se puede utilizar al entrenar los modelos.
+Además, se menciona que los encabezados con sentimiento neutral tienden a ser más cortos en comparación con los encabezados con sentimientos positivos. Esta información es relevante, ya que la longitud de las oraciones puede influir en la forma en que se expresan los sentimientos y en cómo se relacionan con las características específicas del texto.
+Si todos los datos en la variable "target_sentiment" son positivos y no se observan datos atípicos, esto puede indicar un desbalance en la distribución de las clases en esta categoría. Es importante tener en cuenta este desbalance al desarrollar y evaluar los modelos de análisis de sentimientos, ya que puede afectar la capacidad de generalización y la precisión de las predicciones.
+En resumen, al analizar el tamaño de las oraciones en el conjunto de datos y considerar las características relacionadas con la variable "target_sentiment", es posible tener una comprensión más completa de los datos y tomar decisiones informadas en el desarrollo de modelos de análisis de sentimientos.
|
En la imagen 5, se puede observar que el tamaño de los textos varía desde un mínimo de 69 caracteres hasta un máximo de 160 caracteres. Esta información es relevante para determinar el tamaño adecuado de secuencia que se utilizará en el modelo.
+Dado que existe una variabilidad en la longitud de los textos, es posible aplicar técnicas de padding para estandarizar el tamaño y asegurarse de que todos los textos tengan la misma longitud. El padding implica agregar tokens especiales (como ceros) al inicio o final de los textos más cortos para igualar el tamaño de los textos más largos. Esto es especialmente útil cuando se trabaja con modelos basados en transformadores, ya que estos modelos generalmente requieren que todas las secuencias de entrada tengan la misma longitud.
+Aplicar padding garantiza que el modelo pueda procesar todos los textos de manera uniforme y mantener la coherencia en la estructura de entrada. Además, esto permite aprovechar al máximo el poder de los modelos de lenguaje, que están diseñados para capturar patrones y relaciones en datos secuenciales.
+ +En este caso, se tienen más registros para la neutral, y menos registros para el positivo.
+|
|
df_train.groupby("companies_sentiment").len.describe()
-
- | count | -mean | -std | -min | -25% | -50% | -75% | -max | -
---|---|---|---|---|---|---|---|---|
companies_sentiment | -- | - | - | - | - | - | - | - |
negative | -301.0 | -72.269103 | -18.411699 | -22.0 | -61.0 | -71.0 | -83.0 | -159.0 | -
neutral | -430.0 | -70.395349 | -18.389644 | -17.0 | -59.0 | -71.5 | -81.0 | -137.0 | -
positive | -173.0 | -71.427746 | -16.919843 | -22.0 | -60.0 | -72.0 | -83.0 | -120.0 | -
positive | -1.0 | -75.000000 | -NaN | -75.0 | -75.0 | -75.0 | -75.0 | -75.0 | -
Por lo general los caracteres tienen tamaños similares para las tres clases.
+|
|
Se pueden ver que en general hay un desvalance en los datos, pero el tamaño de los datos es pequeña, la palabra más grande tiene 160 caracteres.
+|
En conclusión, al analizar los datos, se pueden destacar los siguientes puntos:
+Desbalance de datos: Existe un desbalance en las etiquetas de la variable "target_sentiment", con una mayor cantidad de registros etiquetados como positivos en comparación con las etiquetas negativas y neutrales. Este desbalance puede requerir técnicas de manejo de clases desbalanceadas durante el entrenamiento del modelo.
+Tamaño de los datos: El tamaño de los textos en el conjunto de datos es relativamente pequeño, con una longitud máxima de 160 caracteres. Esto es útil para determinar la longitud máxima de secuencia que se puede utilizar en los modelos de análisis de sentimientos.
+Análisis de palabras: Se puede realizar un análisis exploratorio para identificar las palabras más comúnmente utilizadas en el texto y examinar las características asociadas con cada etiqueta de sentimiento.
+Padding: Dado que existe variabilidad en la longitud de los textos, se puede aplicar padding para estandarizar el tamaño y asegurarse de que todos los textos tengan la misma longitud. Esto facilita el procesamiento y análisis uniforme de los textos en el modelo de análisis de sentimientos.
+|
plots_world_cloud(df_train[df_train.target_sentiment == "negative"].text, "Word Cloud - target(Negative)")
-
|
|
|
plots_world_cloud(df_train[df_train.companies_sentiment == "neutral"].text, "Word Cloud - companie(neutro)")
-
|
|
|
Las noticias están en un contexto europeo, al parecer podemos ver de allí se nombra la zona euro y diferentes empresas de allá. Tambien que todas hablan de aspectos económicos. Se intuye que algunas noticias sean de la epoca de Trump, por lo que da un sesgo temporal a las noticias. Algunas palabras en un contexto negativo, tiene palabras como Huelga, Coronavirus y crisis. La positivas habland de empleo, subida y recuperación
+|
Además de los puntos mencionados anteriormente, hay algunas observaciones adicionales sobre el contexto de las noticias:
+Contexto europeo: Las noticias se sitúan en un contexto europeo, como se puede inferir de la mención de la zona euro y diferentes empresas europeas. Esto puede ser relevante para comprender el enfoque y las perspectivas económicas presentes en las noticias.
+Enfoque económico: Todas las noticias parecen estar centradas en aspectos económicos. Esto sugiere que el contenido se relaciona principalmente con eventos, tendencias y noticias relacionadas con la economía y los mercados financieros.
+Sesgo temporal: Se intuye que algunas noticias pueden ser de la época de Trump, lo que indica un sesgo temporal en los datos. Es importante tener en cuenta este sesgo temporal al interpretar y generalizar los resultados del análisis de sentimientos, ya que las condiciones económicas y los eventos pueden haber cambiado desde entonces.
+Palabras asociadas a sentimientos negativos y positivos: Algunas palabras en un contexto negativo, como "huelga", "coronavirus" y "crisis", pueden indicar aspectos desfavorables o eventos problemáticos mencionados en las noticias. Por otro lado, palabras relacionadas con sentimientos positivos, como "empleo", "subida" y "recuperación", sugieren una visión más optimista y perspectivas positivas en el contenido.
+