Connecting Waterpeople
Baseform
Ministerio de Ciencia, Innovación y Universidades
Catalan Water Partnership
Ministerio de Vivienda, Construcción y Saneamiento del Perú
Consorcio de Aguas Bilbao Bizkaia
AVK Válvulas
CELESTIA TST
Centro Nacional de Tecnología de Regadíos (CENTER)
LayerExchange
Badger Meter Spain
Red Control
AGENDA 21500
TecnoConverting
Molecor
ESAMUR
TEDAGUA
Gestagua / SAUR Spain
ADECAGUA
Arup
Itron España
Ministerio para la Transición Ecológica y el Reto Demográfico
Fundación Botín
Almar Water Solutions
Ingeteam
HRS Heat Exchangers
BGEO OPEN GIS
Sacyr Agua
ACCIONA
ProMinent Iberia
POSEIDON Water Services
ICEX España Exportación e Inversiones
Cajamar Innova
Canal de Isabel II
IAPsolutions
Amiblu
Fundación CONAMA
FACSA
RENOLIT ALKORPLAN
Autodesk Water
Grupo Mejoras
VEGA Instrumentos
Telefónica Tech
ONGAWA
CAF
Veolia
Aganova
Cámara de Comercio de Fuerteventura
KISTERS
Ens d'Abastament d'Aigua Ter-Llobregat (ATL)
Ministerio de Medio Ambiente y Agua de Bolivia
LACROIX
Smagua
EMALSA
Saint Gobain PAM
Xylem Vue
AECID
J. Huesa Water Technology
Global Omnium
Schneider Electric
Asociación de Ciencias Ambientales
Cámara de Granada
MonoM by Grupo Álava
Minsait
Xylem Water Solutions España
Rädlinger primus line GmbH
Samotics
Lama Sistemas de Filtrado
Honeywell
ANFAGUA
NTT DATA
Bentley Systems
AMPHOS 21
Moval Agroingeniería
ISMedioambiente
FENACORE
ELECTROSTEEL
Kamstrup
Hidroconta
Barmatec
GS Inima Environment
Laboratorios Tecnológicos de Levante
Netmore
Gomez Group Metering
Aqualia
Adasa Sistemas
Open Intelligence
Terranova
SCRATS
Filtralite
Vodafone Business

Se encuentra usted aquí

IA en el agua para todos 6: ¿Qué se opina de nuestro servicio?

Sobre el blog

José María de Cuenca de la Cruz
Curioso, inquieto y creativo… aprendiz de escritor, e interesado también por las nuevas tecnologías y la educación. Me encanta asumir retos y compartir lo aprendido. Trabajando en lo que me apasiona…. me siento como un pez, en el agua claro.
  • IA agua todos 6: ¿Qué se opina nuestro servicio?

Solamente los necios que ya temen tener colaboradores más inteligentes que ellos deberían temer a los nuevos sistemas de inteligencia artificial.

En el cuarto post de esta serie ya apunté sobre su capacidad para ayudarnos a aprender y mantener nuestro desarrollo profesional. Una razón es porque nos aportan su potencia para detectar patrones temporales y encontrar explicaciones a los acontecimientos. Otra razón es su capacidad para registrar y analizar gran cantidad de observaciones mucho más rápido de lo que humanamente podemos hacerlo. Al fin y al cabo, muchas soluciones IA encuentran casi un alter ego en el Big Data, no solo por el volumen de información que utilizan, sino también por lo efímero de esa cantidad ingente de datos, que se genera a gran velocidad y casi al mismo ritmo puede caducar sin aprovecharse.

Creo que hoy, si hay algo voluble, es la opinión pública. Es una creencia general que solo la moda, lo mudable, lo contemporáneo, mueve el mercado. Y esto, aunque solo es cierto para algunos productos, ha sido suficiente para que apenas hace una década se definiesen las primeras profesiones del márquetin digital. Hoy su labor y esa creencia se han extendido a todos los sectores. Pero el desarrollo de estas profesiones, especialmente las que se centran en el uso de redes sociales, es impensable sin el apoyo de los sistemas de análisis de grandes volúmenes de datos e IA. Ya sean simples indicadores que contabilizan las interacciones recibidas del público, hasta sistemas que pueden interactuar con el usuario, al estilo de los asistentes virtuales que vimos justo en el post anterior.

En esta ocasión vamos a ver una aplicación a medio camino: el análisis de sentimientos, o lo que es lo mismo, de las opiniones –positivas o negativas- que se publican sobre un servicio de aguas. Estar informado es necesario para poder actuar, sea para adecuar nuestra forma de comportarnos, o para decidir la realización de una acción. Por ello la lectura de la prensa o sus resúmenes tradicionalmente es una de las primeras tareas que se realizan a diario en ciertos puestos de trabajo. Desde siempre, esa preocupación por la imagen que el servicio proyecta en la sociedad se variaba cíclicamente, disminuyendo en épocas de estío y rebotando fuertemente al aproximarse unas elecciones… Pero con las redes sociales esos brotes periódicos se han convertido en una pandemia, que nos puede llevar en los casos más graves, incluso a perder el sentido común, al erosionar nuestras percepciones de la conveniencia, la importancia y la urgencia.

Si has observado el estrés que puede producir esa info-dependencia, deberías intuir que un sistema de IA que trabaje para nosotros, en vez de exponernos a sobre dosis con lo que cree puede interesarnos (recuerda el funcionamiento de Google en el primer post de esta serie), puede sernos más útil y benefactor que resultarnos una amenaza profesionalmente apocalíptica.

Como siempre, el código con el ejemplo puede obtenerse en este enlace. Para esta ocasión utilizaremos la librería NLTK para procesar el lenguaje natural, es decir, la forma normal que usamos para comunicarnos entre personas. Y no hay ningún conjunto de datos o dataset: el contenido a analizar se tomará de la red, en función de las últimas noticias que recoja sobre el servicio de aguas El Norte de Castilla, periódico decano de la ciudad de Valladolid… Esperemos que sean siempre favorables.

El primer paso es obtener la información. Usaremos el caso ideal, que es consultar la hemeroteca de El Norte, ordenando por fecha en orden interno, y tomando solo la primera página de resultados que ofrece. De manera será el servidor web del periódico el que nos ahorre el trabajo de desarrollar un código para seleccionar las noticias que hablan de nosotros y quedarnos con las más recientes.

La respuesta será una página con código HTML, ya que al hacer la consulta el servidor no diferenciará nuestro sistema con un usuario real consultando con su navegador. Ese código lo almacenaremos en un objeto específico tipo soup para poder manejarlo sin problemas sintácticos.

A continuación, deberemos preparar el HTML obtenido para analizar “sentimentalmente” su contenido. Lo simplificaremos quedándonos solo con los titulares, donde se concentra la carga emocional del mensaje. En este caso, en el código se identifican como cabeceras h2, aunque esto puede variar según la maquetación de la página consultada. También dejamos únicamente los titulares, que se diferencian al situarse entre los marcadores HTML <a…> y , suprimiendo el resto.

Hecho esto, podemos comenzar con el análisis del texto resultante. Vamos recorriendo cada línea, extrayendo sus palabras a una lista, en minúsculas para reducir las variaciones y eliminando los signos de puntuación. Como solo deseamos las palabras relevantes, eliminamos las palabras vacías o stopwords, como por ejemplo artículos, preposiciones, etc. La eliminación se hace mediante comparación entre la lista de palabras obtenida de los titulares y la de palabras irrelevantes, a la que añadimos en este caso otras como “Valladolid” o “aguas”, porque al fin y al cabo, ya sabemos que probablemente aparecerán al formar parte de la selección de noticias realizada en la hemeroteca. Obtenemos por fin una lista con las palabras relevantes de los titulares que nos dedican.

Sobre esa lista realizaremos el análisis automático de sentimientos. Podemos hacerlo con una librería en inglés –TextBlob- que asocia la polaridad de cada palabra con un sentimiento positivo o negativo. Como nuestro texto está en español, tendremos que realizar la traducción, simplemente añadiendo una orden al código. Para evaluar el sentimiento, añadimos en un contador un punto por cada palabra positiva, y lo restamos si es negativa…

Como la librería TextBlob se usa para analizar textos con mucha carga emocional, es normal que no siempre arroje un resultado concluyente. Aunque si se ejecuta de nuevo, al tomar las últimas noticias del periódico, esto podría cambiar. ¡Un aliciente más para decidirte a ejecutar tus propios códigos!. El resultado obtenido al ejecutar el código poco antes de publicarse este post en octubre de 2020 puede verse en el cuaderno Jupyter aquí. Si el navegador del equipo no lo visualiza a la primera, puede ser por contener objetos HTML dentro del mismo cuaderno (la respuesta de la hemeroteca). Para solucionarlo, podemos usar las opciones Raw o Blame de Github, aunque recomiendo encarecidamente descargarlo y verlo en su propio Jupyter.

Volviendo al funcionamiento de TextBlob: podemos decir que tiene un problema de neutralidad, por un lado derivado de su propósito general, que asigna las puntuaciones más altas a noticias más escandalosas que un corte de agua, aunque para nosotros pueda ser un mundo… y por otro debido a estar preparada para el idioma inglés. Para solucionar ese problema de neutralidad, en el ejemplo se define nuestra propia lista de palabras relevantes, con su polaridad y en español, incluyendo los conceptos habituales de nuestro sector. Para nosotros una avería, una inundación o una fuga no son buenas noticias, y afortunadamente no hemos tenido que enfrentarnos a cosas peores como atentados o decesos. La comparación por listas en este caso sí obtiene una puntuación concluyente sobre la opinión pública de nuestro servicio. Y además permite definir la sensibilidad del análisis realizado, en función de las palabras del signo predominante sobre el total. A cierre del código podíamos dormir tranquilos.

Dejo a la iniciativa de los lectores imaginar un sistema IA que en vez del periódico, analice las opiniones expresadas a través de Twitter. Incluso uno que combinando un asistente virtual como el del post anterior, pueda interactuar adaptando el estilo de sus respuestas de forma acorde con los sentimientos detectados.

Suscríbete al newsletter

Los datos proporcionados serán tratados por iAgua Conocimiento, SL con la finalidad del envío de emails con información actualizada y ocasionalmente sobre productos y/o servicios de interés. Para ello necesitamos que marques la siguiente casilla para otorgar tu consentimiento. Recuerda que en cualquier momento puedes ejercer tus derechos de acceso, rectificación y eliminación de estos datos. Puedes consultar toda la información adicional y detallada sobre Protección de Datos.