Cognitive Services y Xamarin.Forms: Creando aplicaciones inteligentes

Cognitive Services + Xamarin.Forms = aplicaciones inteligentes. Esta publicación es parte del Primer Calendario de Adviento de C# en Españoluna iniciativa muy interesante que deberías estar al tanto. 

Entrando en tema…

Hoy en día estamos viendo como la inteligencia artificial (IA) puede ser usada para mejorar la experiencia ofrecida a los usuarios desde diferentes contextos.

Muchos de ustedes me han preguntado cual es el siguiente nivel después de aprender a desarrollar aplicaciones móviles con Xamarin. Para hacerles un resumen, este es el siguiente nivel. Es hora de proveer servicios o aplicaciones inteligentes adaptadas a la disponibilidad, la seguridad y escalabilidad que nos provee IA.

Este articulo solo sera una introducción a una serie de capítulos donde detallare cada servicio y su implementación dentro de Xamarin.Forms. Se que muchos de ustedes, los mas nuevos, creen que este apartado es para personas que tienen muchos conocimientos de IA pero la verdad es que Azure y Cognitive Service hacen todo el trabajo por ti.

Si trabajas en un equipo de desarrollo solo tendrás que tener pendiente como utilizar el servicio para sacarle mayor provecho. 

Entonces, comencemos…

Antes de poder entrar en materia necesitamos saber hacia donde se dirige este enfoque del desarrollo móvil, y como podemos sacar mas beneficio de esto. Como mencione en uno de mis anteriores artículos, lo pueden ver aquí, hoy en día estamos viviendo un crecimiento tecnológico muy acelerado. Cada vez más se hace necesario estar conectado a la nube de información que nos provee el Internet. La tecnología nos hace la vida mucha más fácil en ese sentido. Ya hasta podemos tener un asistente personal dentro de nuestros móviles, y esto es gracias a IA.

Según las estadísticas el 80% de los usuarios que acceden a Internet son usuarios móviles. Esto es porque hay más de 5 millones de dispositivos inteligentes  en el mundo, esto quiere decir que ya hay mas teléfonos móviles que auto móviles en el mundo, solo por hacer una comparación. Por si fuera poco, esto se traduce a mas de 26 mil millones de aplicaciones descargadas entre las tiendas oficiales de aplicaciones.

Mas estadísticas

Hay un e-book que publico PacktPub en su pagina oficial llamado “Skill Up 2018” donde mencionan que las tecnologías que mas llaman la atención a los desarrolladores hoy en día son Machine Learning y Big Data. El Big Data es la ciencia que analiza grandes cantidades de datos y el Machine Learning es ciencia que dota a los sistemas la habilidad de aprender sin la necesidad de ser programados.

Para que puedan entender la relación en este contexto, Machine Learning se alimenta de grandes volúmenes de datos para poder identificar patrones y ofrecer soluciones. Pero esto no es lo mas curioso, lo curioso aquí es: Si el 80% de los usuarios son móviles ¿De donde crees que las grandes empresas obtienen sus datos? Exacto, de los móviles.

Hay una empresa consultora y de investigación de las tecnologías de la información llamada Gartner. Esta mostró unas estadísticas muy interesantes que dicen que para el 2022 el 70% de las interacciones con sistemas en empresas serán en dispositivos móviles. Esto porque la forma en la que el ser humano se comunica está cambiando con la movilidad.

Todo evoluciona, es parte de nosotros también evolucionar. Si todavía no estas dentro del desarrollo móvil, aun estas a tiempo.

Inteligencia Artificial (IA)

La inteligencia artificial es un conjunto de tecnologías que permiten  ‘inteligencia de máquina‘ para simular o aumentar elementos del pensamiento humano.

Hay un aspecto muy sutil, pero importante, en esta definición. No estamos defendiendo que la inteligencia de la máquina “reemplace” la inteligencia humana. Pero, la inteligencia de la máquina se puede utilizar con eficacia para “aumentar” o para mejorar la experiencia humana, lograda vía un sistema de casos de uso más especializados que se asignan a los elementos individuales del pensamiento humano.

El reto de la IA es conseguir que las máquinas sean capaces de realizar conjeturas, a una escala y con un nivel de precisión que nosotros como humanos no podemos alcanzar. Las máquinas “aprenden” mientras procesan datos especialmente diseñados y recogidos para su formación. La inteligencia artificial se basa en el método probabilista, según el cual las máquinas se orientan hacia lo que perciben como la realidad más probable.

Y esta realidad cambia constantemente. Al procesar más y más datos, las máquinas continuamente ajustan su modelo de realidad, intuyendo lo que están “viendo”, “oyendo” o “interpretando”. Un asistente inteligente – como Alexa en Amazon, Siri de Apple, Xperia Agent de Sony, Bixby de Samsung – escucha lo que le dices, analiza cómo interpretarlo y, finalmente, te ofrece una respuesta. ¿Será la adecuada? Puede que no, pero estos aprenden: si se equivocan, se ajustan y mejoran.

Subiendo al siguiente nivel

Microsoft no es nuevo en el mundo de la inteligencia artificial. A lo largo de los años, ha realizado muchas inversiones en inteligencia artificial, y ahora tiene una cartera muy sólida de tecnologías que han construido, que podemos usar, para crear nuestra propia inteligencia artificial.

Este conjunto de tecnología abarca desde administración de datos, análisis de datos, infraestructura de cómputo, hasta API de servicios impulsados por AI, aprendizaje automático como servicio y redes neuronales. En este articulo nos centraremos en uno de las tecnologías relacionadas con la IA, Cognitive Services.

Con Cognitive Services podemos incorporar a nuestras aplicaciones algoritmos inteligentes que permiten ver, oir, hablar, comprender e interpretar las necesidades de los usuarios con formas de comunicación naturales. Azure nos provee una API con la podemos fácilmente interactuar con Cognitive Services para transformar nuestras aplicaciones con la IA que esta plataforma nos provee.

Ustedes quizás se preguntaran como funciona o como pueden confiar en esto. Debido a que las API de servicios cognitivos (Cognitive Services) aprovechan el poder del aprendizaje automático (Machine Learning), podemos integrar inteligencia avanzada a nuestras aplicaciones sin la necesidad de contar con un equipo de científicos de datos.

Microsoft Cognitive Services

Microsoft Cognitive Services  es un conjunto de API, SDK y servicios disponibles para los desarrolladores para hacer que sus aplicaciones sean más inteligentes al agregar características como el reconocimiento facial, el reconocimiento de voz, la comprensión del idioma, etc.

Cognitive Services esta basado en la computación cognitiva  que es una rama de la inteligencia artificial capaz de entender y emular  procesos de pensamiento humano, a través de sistemas de auto aprendizaje con machine learning para el reconocimiento de patrones y el procesamiento del lenguaje natural. Todo con el fin de imitar el funcionamiento del cerebro humano.

Algunas ventajas del computo cognitivo son:

  • Interacción natural y contextual con los usuarios.
  • Aplicaciones más inteligentes que dan más valor al usuario.
  • Novedosos modelos de negocio mediante el conocimiento de los datos.

Microsoft Cognitive Services ofrece un abanico de servicios cognitivos API que aprovechan el poder de machine learning para que nosotros podamos incorporar inteligencia avanzada en nuestros productos fácilmente.

Vamos a ver algunos de estos a continuación:

Visión

    • Reconocimiento de Emociones:

      Detecta, analiza, organiza y genera tags para rostros en fotografías.

    • Reconocimiento de Emociones:

      Personalizar experiencias de usuario mediante el reconocimiento de emociones.

    • Moderador de contenido:

      Moderado de texto, imágenes y vídeo, con posibilidades de valoración humana.

    • Vídeo:

      Análisis, edición y procesamiento de vídeo en aplicaciones.

    • Visión de computador:

      Análisis, edición y procesamiento de vídeo en aplicaciones.

Voz

    • API de voz de Bing:

      Servicio para convertir habla en texto y viceversa para entender su intensión.

    • Servicio de habla personalizado:

      Afinación del servicio para reconocer a cualquier persona en cualquier lugar.

    • Reconocimiento del hablante:

      Usa el habla para identificar y autenticar hablantes independientes. 

Lenguaje

    • Servicio de entendimiento de lenguaje:

      Enseñar a las aplicaciones a entender los comandos de los usuarios.

    • Análisis de texto:

      Evaluación de sentimiento y temas para entender lo que los usuarios quieren.

    • Modelo de Lenguaje escala Web:

      Modelos predictivos de lenguaje entrenados con datos de toda la web.

    • Revisión de ortografía de Bing:

      Detectar y corregir errores de ortografía en las aplicaciones.

    • Análisis lingüístico:

      Simplificación de contextos complejos de lenguaje.

    • Traductor:

      Traducción de voz y texto con un llamado a un api REST.

Conocimiento

    • Recomendaciones:

      Predecir qué ítems podría querer un cliente.

    • Conocimiento académico:

      Relaciones entre documentos académicos, publicaciones y autores.

    • Enlace de entidades:

      Extender el conocimiento de personas, ubicaciones y eventos.

    • Descubrimiento de conocimiento:

      Agregar búsquedas sobre información estructurada para aplicaciones.

    • Creador de Preguntas y respuestas:

      Destila información a respuestas fáciles de navegar.

Búsqueda

    • Autocompletar de BING:

      Provee auto completar inteligente para sus aplicaciones.

    • Búsqueda de imágenes:

      Enlaza meta datos con búsqueda sobre imágenes.

    • Búsqueda de noticias:

      Enlaza los usuarios con búsquedas robustas y a tiempo de noticias.

    • Búsqueda de vídeos:

      Vídeos en tendencia, meta datos detallados y resultados enriquecidos.

    • Búsqueda Web:

      Búsqueda avanzada para aplicaciones.

Lo que necesitas saber

Antes de comenzar, si eres nuevo en esto, es bueno que sepas que cada servicio se maneja de manera diferente. Es por ellos que crearemos una serie donde veremos la implementación de algunos de estos servicios. De igual manera es bueno que te sientas cómodo consumiendo servicios REST.

Si no sabes consumir servicios RESTful dentro de Xamarin puedes ir a la documentación oficial aquí. La documentación esta muy completa. Es bueno que por lo menos entiendas el contexto del siguientes apartado, que sepas como y para que se utiliza las lineas comentadas.

Si sabes esta parte, lo otro es pan comido. Solo faltaría saber como utilizar ciertas APIs de cada plataforma (Xamarin.Android / Xamarin.iOS) para acceder a ciertos componentes necesarios – ej:  acceder a cámara para tomar fotos para posteriormente enviarlas si trabajamos con Face Recognition o algún servicio similar.

Para poder utilizar estas APIs es bueno que entiendas como funciona el DependencyService. Con DependencyService podemos llamar las funcionalidades especificas o nativas de cada plataforma desde nuestra Xamarin.Forms App. De igual manera puedes ver la documentación oficial aquí.

Ejemplo de una implementación de DependencyService a continuación:

Es bueno que sepas que muchas de las APIs o servicios mas utilizados ya vienen dentro de Xamarin.Essential o es muy probable que ya otra persona haya hecho un plugin que maneje la funcionalidad que quieras usar. De igual manera, no dejes de echarle un ojo a DependencyService.

Siguientes pasos

Activa las notificaciones y suscríbete para que recibas las notificaciones del nuevo contenido. De igual manera de dejo algunos recursos que te serán de mucha ayuda para comenzar a crear tus aplicaciones inteligentes.

Esto es todo por ahora, nos vemos en la próxima!

Muchas gracias por leer esta publicación! 
Cognitive Services y Xamarin.Forms: Creando aplicaciones inteligentes
5 (100%) 2 votes

feedback

Espero que esta publicación haya sido de ayuda para ti, si crees que también puede ayudar a otros entonces compártelo con ellos. Te invito a dejar tu opinión en la caja de comentarios. Si quieres que hable de un tema en específico o que detalle un poco más algunos temas, déjame saber. Los temas más interesantes serán agregados en mi lista de publicaciones futuras.

¿Te gustan las publicaciones como esta? Entonces, suscribete y activa las notificaciones push para recibir actualizaciones. Nos vemos en la próxima!

Otros

 

2018-09-29T19:18:02+00:00

Dejame tus comentarios

avatar
  Suscribirte  
Notificar de