Servidor Couchbase

Aprendizaje automático con Couchbase y Nexosis

El aprendizaje automático es una herramienta que está ayudando a desarrolladores y científicos de datos a realizar todo tipo de tareas:

  • Clasificación: organizar y etiquetar datos

  • Regresión - encontrar relaciones entre puntos de datos

  • Previsiones: utilizar los datos actuales para predecir el futuro

  • Detección de anomalías: encontrar puntos de datos inusuales

En este post, voy a mostrarte cómo puedes combinar la API REST basada en web que Nexosis proporciona para el aprendizaje automático con Couchbase Server.

El primer lugar al que acudir para probar el aprendizaje automático suele ser Kaggle. Kaggle proporciona una amplia variedad de conjuntos de datos perfectos para aplicaciones de aprendizaje automático. He decidido utilizar el Conjunto de datos de Reseñas de Amazon para el Análisis de Sentimiento (Tengo truncado y ligeramente modificado para este post).

Los datos de este conjunto contienen el texto de una reseña dejada en Amazon y una etiqueta de "__label__1" o "__label__2". La primera significa que se trata de una reseña negativa (1 o 2 estrellas) y la segunda que se trata de una reseña positiva (4 o 5 estrellas). La puntuación 3 se considera neutral y no se incluye en este conjunto de entrenamiento, pero voy a explorar eso un poco más tarde.

Mi objetivo es dar a Nexosis una revisión de Amazon que sea no en el conjunto de entrenamiento, y que Nexosis lo clasifique como "__etiqueta__1" o "__etiqueta__2" para mí. Este tipo de clasificación también se conoce como análisis de opiniones. Esto puede ser útil, por ejemplo, para alertar a tiempo de una experiencia negativa del cliente.

Cree su cuenta de aprendizaje automático de Nexosis

Me resultó muy fácil empezar a utilizar Nexosis. La edición comunitaria de Nexosis es gratis. Una vez iniciada la sesión, visita tu página de perfil y anota tu clave de API (la necesitarás para cada solicitud de API que hagas).

Nexosis machine learning API key

A partir de este momento, cuando hagas una petición HTTP a Nexosis, tendrás que incluir esa clave en tu cabecera como api-key.

Configuración del aprendizaje automático

El primer paso para configurar Nexosis es darle un conjunto de datos. Estoy utilizando el conjunto de datos que obtuve de Kaggle. Los datos son un archivo CSV de dos columnas. Para obtener estos datos de Nexosis, puedes hacer una solicitud como esta (usando una herramienta como Postman, por ejemplo):

No olvides la api-key en la cabecera.

La respuesta de esta solicitud, si tiene éxito, debe ser similar a esto:

Esta importación puede tardar un poco. Puede hacer una petición GET a https://ml.nexosis.com/v1/imports para comprobar que su petición ha sido procesada. Verás este conjunto de datos como uno de los "elementos".

Crear una sesión Nexosis

El siguiente paso es crear una sesión de Nexosis. Esto iniciará el entrenamiento de Nexosis en los datos que ya ha importado. Aquí tienes un ejemplo de POST para iniciar una sesión:

Algunas notas sobre lo que todo esto significa:

  • "predictionDomain": "clasificación" - ¿Recuerdas cuando dije que iba a utilizar la "clasificación" para el análisis de sentimientos?

  • "dataSourceName" : "AmazonReviews" - Le di este nombre a la fuente de datos, así que le estoy diciendo que use esta fuente de datos para el entrenamiento.

  • "targetColumn": "review_sentiment" - La columna 'review_sentiment' contiene los valores "__label__1" o "__label__2". Este es el valor que quiero que Nexosis aprenda a generar.

  • "extraParameters" : { "balance": true } - Si su conjunto de datos está desequilibrado (es decir, por ejemplo, contiene muchas más reseñas negativas que positivas), esto podría influir desproporcionadamente en el aprendizaje automático. Establece balance en "true" para tenerlo en cuenta.

La respuesta de esa solicitud será algo parecido a esto:

Tenga en cuenta que este tipo de sesión tardará algún tiempo en producirse. Recibirá una notificación por correo electrónico de Nexosis cuando la sesión esté lista. También puede comprobar los "resultados" (véase la URL anterior) de vez en cuando.

Modelo terminado

Una vez finalizada la sesión, obtendrá un modelId en los resultados, que será otro GUID. Lo necesitará para continuar.

Una vez que reciba el modelId, puede comprobar la precisión del modelo. Haz un GET a https://ml.nexosis.com/v1/sessions//results y mira el métricas campo. Los resultados del mío son los siguientes:

Esto te permitirá saber hasta qué punto es fiable el modelo. Si no es lo suficientemente alto para cualquier umbral que decida que necesita, es posible que desee intentar ajustar su modelo
para una mayor precisión. Puede considerar añadir/eliminar campos del conjunto de entrenamiento hasta que alcance el umbral necesario.

Aun así, no va a ser perfecto, así que si este análisis se va a utilizar para algo de alto impacto y crucial, es posible que desee involucrar a un humano en alguna parte del proceso.

81% precisión es suficiente para mí para seguir adelante.

Probar el modelo de aprendizaje automático

Vamos a probar el modelo con REST. Haré una petición POST a la base de datos /predecir url utilizando el modelId como:

POST https://ml.nexosis.com/v1/models//predict

El cuerpo de esta solicitud contendrá la reseña de Amazon sobre la que quiero obtener la opinión de Nexosis. Le daré el texto de una reseña de 1 estrella.

Al enviarlo, Nexosis lo pensará y devolverá un resultado como este:

Esto significa dos cosas:

  1. ¡El modelo funciona bien!

  2. Es probable que la crítica que acabo de enviar sea negativa. Leyéndola yo mismo, tendría que estar de acuerdo.

Uso de Nexosis en Couchbase

En lugar de crear estas peticiones POST a mano, podemos utilizar Nexosis directamente en Couchbase.

Nota: Nexosis no requiere Couchbase y viceversa. Nexosis simplemente expone una API REST JSON y Couchbase es capaz de utilizarla. Trabajan bien juntos porque ambos siguen estándares web comunes.

Para usar Nexosis en Couchbase, simplemente haz peticiones CURL a la API de Nexosis desde una consulta N1QL de Couchbase.

Permitir CURL en Couchbase

En primer lugar, es necesario configurar couchbase para permitirle hacer CURL peticiones. Permitir cualquier petición CURL arbitraria sería un riesgo de seguridad, por lo que tendrá que optar por permitir ciertas peticiones. Esto se hace creando (o actualizando) un archivo curl_whitelist.json. Compruebe CURL llega a N1QL para más detalles.

Aquí está el curl_whitelist.json que estoy usando. En Windows, este archivo va en el directorio C:Archivos de ProgramaCouchbase\Servervar\lib\couchbase\n1qlcerts carpeta.

Creación de una consulta N1QL

N1QL es la implementación SQL de Couchbase utilizada para consultar JSON. En última instancia, es posible que desee Nexosis para alimentar a los comandos UPDATE o INSERT. Pero para este post, solo voy a usar un SELECT.

En Couchbase, he creado un bucket con algunas reseñas que he sacado manualmente de Amazon. (También he ejecutado CREAR ÍNDICE PRIMARIO sobre opiniones).

Reviews in Couchbase bucket

Estos no formaban parte de los datos de formación, por lo que Nexosis dará una puntuación de sentimiento positiva o negativa por su cuenta.

Empecemos con un simple SELECCIONE y construir a partir de ahí.

First simple query

Uso de CURL para incorporar el aprendizaje automático

A continuación, voy a traer en CURL. Estoy usando LET para que la consulta sea más legible.

Obsérvese que el cuerpo está sacando el texto directamente del documento de revisión en Couchbase. Lo único que he seleccionado (hasta ahora) es la respuesta completa de Nexosis, que se parece a esto:

Query 2

Podría profundizar más en los resultados de Nexosis y compararlos con la puntuación real de Amazon para ver cómo le fue a Nexosis. Aquí está la consulta:

Y aquí están los resultados (he truncado el texto completo):

Resultados

Como era de esperar, Nexosis tomó la reseña de 1 estrella de Amazon y discernió acertadamente que se trataba de una reseña negativa (la clasificó como "__label__1").

También tomó la reseña de 5 estrellas y discernió correctamente que se trataba de una reseña positiva (la clasificó como "__label__2").

También decidí darle una crítica "neutral" de 3 estrellas. Ten en cuenta que el conjunto de entrenamiento no tenía ninguna de estas, así que puede que no sea válida, pero me picó la curiosidad. Lo clasificó como una crítica negativa. Sólo por el lenguaje, probablemente sea correcta. En realidad, podría ser una herramienta útil para analizar opiniones aparentemente "neutras" y discernir si se inclinan hacia un lado u otro.

Resumen

Cada vez que utilice CURL en N1QL, tenga cuidado. Cuando usas CURL, estás poniendo tu consulta a merced de una petición HTTP a un tercero. Es posible que desee ejecutar estos en segundo plano como un proceso por lotes para ACTUALIZACIÓN y INSERTAR en lugar de SELECCIONE como estoy haciendo yo.

Pero si CURL sabiamente, puede utilizar una herramienta de terceros como Nexosis para peform machine learning, categorización, análisis de sentimiento, y mucho más. Nexosis me lo puso muy fácil para empezar y muy fácil de usar con un comando CURL estándar.

Si está interesado en Nexosis, consulte la página Casos de uso de Nexosis para ver cómo Nexosis puede ayudarle a usted o a su empresa. Si tiene preguntas sobre el uso de Nexosis, consulte la página Foros Nexosis.

¿Tiene alguna pregunta sobre Couchbase? Echa un vistazo a la Foros de Couchbasey consulte el Foro N1QL si tiene alguna pregunta sobre las consultas que ve en este post.

¿Tiene alguna pregunta? Estoy en Twitter @mgroves.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Author

Posted by Matthew Groves

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.