Despliegue automatizado hacia Raspberry utilizando Team Services y Azure

Les comparto el video de la sesión del evento en Colombia, el cual pudimos terminar una vez resueltos los problemas que hubieron con internet y la caída de servicio de Azure Service Bus.

Arquitectura para la automatización del despliegue

image

Video de la presentación y demostración:

Agradezco personalmente la colaboración de Jorge Castro quien participó de la presentación conmigo y sufrió los desperfectos de internet y la caída del servicio de Azure de Service Bus.

Les comparto un blog de Fabrizio Hernandez, en donde podrán encontrar los pasos necesarios para ejecutar una app simple de .Net Core en Raspbian.

Error de acceso a Service Bus y error en el portal

En la demo que estuve realizando el día de hoy hubo un error de acceso al service bus de Azure. Y un segundo error al intentar regenerar la clave primaria de acceso. El primer error indica que una clave es inválida cuando la misma continúa siendo válida. El segundo error se produce en el portal, al no permitir modificar la clave primaria para un service bus, modificando siempre la clave secundaria.

Les comparto un video que documenta el error:

 

Análisis sentimental en español con Machine Learning

A medida que el avance nos permite darle una mayor inteligencia a los sistemas que implementamos, para que el uso sea más natural, nos encontramos con diversas características que nos gustaría desarrollar. Sin duda, una de estas características es la posibilidad de analizar una frase y determinar si es positiva, negativa o neutral.

Por supuesto, que este análisis de información tiene muchas implicaciones, entre ellas cuestiones culturales, de idioma, expresiones regionales, etc. No existe un algoritmo que de forma determinista pueda dar ese resultado. Incluso no podría reconocer aspectos del lenguaje, como la ironía.

Existen distintas alternativas para resolver este problema e implementar estas capacidades en nuestros sistemas.

Existe un API de Machine Learning que permite resolver este problema, sin embargo actualmente solo tiene soporte para Ingles, por lo cual debemos resolver este problema sin utilizar este API.

En este artículo primero vamos a ver como utilizar el API para análisis sentimental de Azure Machine Learning y posteriormente como podemos resolver este problema para realizar un análisis sentimental en español:

Para poder comenzar a utilizar este servicio, primero debemos ingresar al siguiente link para crear una instancia de la API:

http://go.microsoft.com/fwlink/?LinkID=761108

image

Una vez creada la instancia de la API tendremos acceso a una Key para poder utilizar el servicio.

Como datos de ejemplo utilizaremos el siguiente registro en donde tenemos 3 frases distintas que deseamos analizar:

  1. hello world
  2. hello foo world
  3. hello my world

image

En el primer escenario se solicitan analizar las palabras claves de la oración:

image

En el segundo escenario se solicita analizar el idioma en que se encuentra la frase:

image

En el tercer escenario se solicita hacer un análisis sentimental de la frase:

image

Como resultado de ejecución se obtiene:

image

Ahora bien, si queremos realizar un análisis sentimental en español, este servicio aún no está preparado.

En el siguiente link podrán encontrar un experimento para realizar en machinen lerarning análisis sentimental. Este experimento requiere ser entrenado con una base de tweets precalificados sentimentalmente.

https://gallery.cortanaintelligence.com/Experiment/Binary-Classification-Twitter-sentiment-analysis-4

image

Por supuesto, mientras mayor sea la base calificada mayor precisión tendrá el algoritmo. La base de datos que se utilizará para entrenar a este experimento en un pequeño porcentaje de la base generada en sentiment140.

El problema que tenemos al utilizar este experimento para realizar análisis sentimental en español, es que la base se encuentra en ingles y esta es la parte más importante para que el análisis funcione correctamente.

Lo ideal, es contar con tweets generados por culturas de habla hispana y que sean calificados sentimentalmente por personas de esa misma cultura. Por distintos motivos esto representa un gran esfuerzo humano. Inicialmente lo que podemos hacer es traducir la base de entrenamiento utilizada para el experimento.

Esa tarea la he realizado utilizando tanto bing como google translate. Les comparto los resultado para que puedan utilizar el experimento con una base en español:

https://maxmvpstorage.blob.core.windows.net/max/tweet_translated.txt

También se puede solicitar acceso al uso del corpus del TASS, aunque hay que solicitar permiso y tienen algunas limitaciones.

Realizando el mismo experimento, pero utilizando esta base de tweets que les comparto, podemos realizar el análisis semántico en español.

Por supuesto, tenemos 3 problemas principales:

  1. 160,000 frases calificadas es un número muy bajo para hacer un análisis preciso, dado que esa cantidad de frases no son representativas para algo preciso.
  2. Las frases fueron traducidas en forma automática, por lo que las palabras que se encontraban mal escritas no fueron interpretadas. Para esto se podría utilizar un diccionario online, identificar las palabras no encontradas y manualmente hacer una sanidad de la fuente de datos.
  3. La traducción automática no permite hacer una traducción precisa de como se expresaría ese concepto en español y menos aún en una cultura particular.

Sin embargo, aún con estos problemas, el ejercicio es interesante y permite realizar el análisis sentimental en español con cierta precisión.

De esta manera podemos comenzar a utilizarlo, con tweets en español. Para aquellas frases que el resultado no ha sido el correcto se puede hacer una revisión manual y posteriormente corregirlos he incorporarlos a la base de entrenamiento. De esta manera vamos incrementando la base y mejorando la calidad de la misma. El resultado a lo largo del tiempo irá mejorando en base al entrenamiento.

Ahora podemos actualizar el ejercicio del post anterior, incluyendo el sentimiento de cada frase. Nuevamente el resultado no es el más preciso, pero aún así es bastante correcto.

Actualmente está tomando algunas frases como positivas, cuando en realidad el sentido es negativo. Para estas frases lo correcto es incluirlas en la base de entrenamiento, con la calificación correspondiente, para que el algoritmo tenga una mejor precisión.

image

Análisis de redes sociales con Azure App Logic y Power BI – Tomando decisiones

Desde hace mucho tiempo múltiples compañías conocen la necesidad que tienen de capitalizar la información que se encuentra en redes sociales. Un hecho muy simple de comprender es que si somos capaces de entender la tendencia, gustos y diversos factores fundamentales, sobre un determinado sector de población o clientes, podremos tomar decisiones más certeras.

Sin embargo, son muy pocas las compañías que logran llegar a realizar dicho análisis. Muchas veces por falta de madurez en los datos de clientes y en caso de distintos organismos, por no tener conocimiento de los grupos en donde se deben analizar las diversas opiniones.

También existe un cierto grupo de empresas, que aún teniendo la información de sus clientes, no son capaces de abarcar un proyecto que pueda obtener la información relevante. Y en los pocos casos donde logran llevar a cabo esta tarea, no saben que análisis realizar sobre los datos para poder obtener información útil en la toma de decisiones.

Dentro de App Logic de Azure, hay distintas funciones que nos permiten acceder a diversas Apis de diferentes proveedores, como twitter, facebook, etc. Primero y principal, debemos comprender que App Logic en un componente para procesos recurrentes, y no es la alternativa ideal para ejecutar un proceso del tipo Long Runing. Este aspecto es importante a la hora de determinar si App Logic será o no útil para resolver nuestro problema.

Problema a resolver:

A modo de ejemplo, voy a proponer en análisis de un tema bastante polémico dentro del país en el cual radico (México). Dicho tema se trata de la Reforma Energética, les dejo unos links para que puedan conocer un poco acerca del tema:

http://www.presidencia.gob.mx/reformaenergetica/#!landing

https://es.wikipedia.org/wiki/Reforma_energ%C3%A9tica_(M%C3%A9xico)

Incluso dentro de la página oficial de gobierno podrán encontrar una opción para opinar a favor o en contra de la reforma.

image

Claramente este tema es de interés para distintos actores y el poder analizar la información y las tendencias es fundamental para la correcta toma de decisiones.

Por tal motivo, primero vamos a buscar que información podemos encontrar al respecto en twitter.

image

Inicialmente debemos separar el problema en dos partes:

  1. Analizar los posts que ya se han realizado anteriormente.
  2. Poder captar los futuros posts a medida que se realizan.

Para resolver la parte (1) del problema debemos realizar un proceso el cual se ejecutará una única vez y obtendrá el histórico de las publicaciones. Este problema podemos resolverlo de múltiples formas, incluso hay muchos códigos de ejemplo que podemos utilizar de ejemplo.

La segunda parte del problema, sin embargo, implica un proceso que constantemente esté verificando las publicaciones realizadas. Dentro de App Logic tenemos las siguientes opciones para utilizar la API de Twitter:

imageimage

Sin embargo, no todas estas funciones pueden ser utilizadas como inicio de un flujo, sobre todo porque no todos pueden ser considerados como un disparador periódico o eventual de una acción.

Creación del componente de recolección de Tweets con App Logic:

El primer paso que debemos realizar es crear un componente de App Logic en Azure.

image

En nuestro caso de estudio iniciaremos nuestro flujo con la acción “Cuando se publica un tweet nuevo

image  

Posteriormente agregamos acción que nos permita guardar el resultado de la acción anterior para poder realizar un posterior análisis.

image

Para realizar este paso debemos seguir las acciones indicadas y establecer una conexión a una base de datos. Por supuesto, si la misma no existe debemos crear una.

Como resultado de la consulta a la API de twitter tenemos una serie de propiedades que podemos utilizar sobre el tweet:

image

image image

Para nuestro ejemplo utilizaremos los siguientes

  • Creado: indica la fecha del tweet.
  • Texto del Tweet: devuelve el texto de la publicación. Claramente el contenido pudiera ser un link a otro tipo de contenidos, imágenes, etc. No es objetivo de este artículo hacer un análisis más profundo, pero se podría obtener el contenido de estos posts e incluso utilizar los servicios de Media Services para obtener el texto de un video o analizar la imagen con cortana analytics.
  • Nombre del usuario: devuelve el nombre del usuario que realizó el post. Este dato también podría ser utilizado para diferenciar si la fuente del comentario es gobierno, privado o una persona sin relación política / empresarial.
  • Id del tweet: este dato es útil para identificar si existe algún contenido duplicado en la tabla.

El análisis podría ser más profundo y también incluir un análisis sentimental, el cual estaré mostrando en un siguiente post.

El formato de la tabla donde insertaremos la información queda definida de la siguiente forma (no es el formato ideal pero en cuestiones prácticas para el ejemplo es lo mismo):

image

Una vez finalizada la creación del flujo guardamos los cambios.

image

Visualizando el proceso de ejecución:

Cuando el flujo comienza a ejecutarse podremos visualizar la actividad dentro del panel de información general:

image

Al seleccionar una ejecución en particular podremos ver el estado de cada uno de los pasos y el resultado devuelto:

image

Al seleccionar cada uno de los pasos obtendremos el detalle del mismo:

image

image

Si visualizamos la base de datos veremos los registros procesados:

image

El siguiente paso es realizar un análisis de la información.   

Para comenzar a construir nuestro proyecto de BI para el análisis de datos utilizaremos Power BI Desktop.

image

En mi caso seleccionaré la opción de Recent Sources para acceder a mi base de datos.

image 

seleccionamos la tabla que utilizaremos para el reporte

image

image

En mi caso he utilizado el componente de visualización WordCloud, el cual lo pueden descargar del siguiente link: 

https://app.powerbi.com/visuals/?WT.mc_id=Blog_Visuals

image

Dentro del cuadro de “Visualizations” podemos importar un nuevo componente de visualización. Una vez que realicemos este paso aparecerá el componente descargado.

image

Seleccionando el campo de descripción agregamos dos componentes de visualización, uno que nos muestra los comentarios y otro que nos muestra la ocurrencia de cada palabra dentro de todos los tweets: 

image

image

Al seleccionar una palabra en particular podremos filtrar los comentarios que contienen dicha palabra:

image

image

Posteriormente solo nos resta publicar el reporte y compartirlo con el equipo de trabajo.

Arquitectura para el monitoreo de huertos con IoT + Azure

En algunos posts anteriores les he compartido la forma en la que podemos enviar datos desde RPi hacia un Event Hub, como crearlo y como procesarlo utilizando Stream Analytics.

Esas piezas son solo una parte de una arquitectura integral de IoT. Por supuesto cada escenario tendrá diversas arquitecturas candidatas en base a los objetivos del proyecto y los atributos de calidad que busque.

image

Primero les comparto un video que les va a dar una mayor idea del contexto de la solución y el escenario de IoT al cual se enfoca este post:

Componentes de la arquitectura

image

image

image

image

image

image

image

image

image

image

ebook Microsoft Azure Essentials

Les comparto un link para descargar un libro con los fundamentos básicos de Azure. Muy útil para aquellas personas que quieren conocer los distintos componentes que conforman la plataforma de Azure. Muchos de ellos están comentados solo de manera superficial, sin embargo los servicios fundamentales de computo se encuentran detallados.

https://blogs.msdn.microsoft.com/microsoft_press/2016/09/01/free-ebook-microsoft-azure-essentials-fundamentals-of-azure-second-edition/