Detector de spam en Google Cloud

Hola a todos! Bueno, hay muchas guías sobre cómo construir un modelo de aprendizaje automático para varios usos y recientemente encontré una guía sobre cómo construir un detector de correo no deseado y luego implementarlo utilizando Flask.

A través de eso, he decidido llevarlo más lejos al implementarlo en Google Cloud Platform. Pero, por supuesto, puedes usar Heroku, AWS, etc., pero ese es otro tema para otro día, solo me concentraré en GCP por ahora.

Breve resumen del proyecto.

Es un modelo de aprendizaje automático para la clasificación de mensajes SMS no deseados mediante la capacitación sobre la colección existente de masajes SMS etiquetados como “spam” o “ham”.

El detector de Spam presenta el clasificador Multinomial Naive Bayes de scikit-learn basado en el algoritmo Naive Bayes para datos distribuidos multinomialmente:

Los métodos ingenuos de Bayes son un conjunto de algoritmos de aprendizaje supervisados ​​basados ​​en la aplicación del teorema de Bayes con el supuesto “ingenuo” de independencia condicional entre cada par de características dado el valor de la variable de clase.

Los estudiantes y clasificadores ingenuos de Bayes pueden ser extremadamente rápidos en comparación con métodos más sofisticados. El desacoplamiento de las distribuciones de características condicionales de clase significa que cada distribución puede estimarse independientemente como una distribución unidimensional.

Esto, a su vez, ayuda a aliviar los problemas derivados de la maldición de la dimensionalidad.

 

Logo de Flask
Logo de Flask

Mientras tanto, Flask sirve como marco web, para recibir la entrada del usuario a través de la interfaz (Solicitud HTTP) y darse cuenta de sus capacidades de predicción.

Nacido en 2010, Flask es un marco pequeño según la mayoría de los estándares, lo suficientemente pequeño como para llamarlo “microframework”.

Flask promueve la legibilidad y la fácil comprensión de su código fuente. Flask es un marco web ligero escrito en Python y desde entonces se ha convertido en uno de los marcos web de Python más utilizados para empresas de nueva creación, y en una herramienta perfecta para soluciones rápidas y simples en la mayoría de las empresas.

El objetivo de Flask es mantener el núcleo del marco pequeño pero altamente extensible, por lo que escribir aplicaciones o extensiones de manera muy fácil y flexible, al mismo tiempo que permite al desarrollador elegir su propia configuración para su aplicación

Implementación en Google Cloud Platform

Usaremos Google App Engine en un entorno estándar. Nos permite “crear aplicaciones altamente escalables en una plataforma sin servidor completamente administrada”. Hay algunos requisitos o suposiciones que haré antes de continuar:

  1. Supuse que habías instalado Flask y las bibliotecas involucradas en un entorno virtual (si no, se mostrará más adelante).
  2. Tiene una cuenta de Google con acceso a la consola de Google Cloud Platform y ha creado un nuevo proyecto en ella.

Asegúrese de que la facturación esté habilitada para su proyecto. Una cuenta de facturación debe estar vinculada a su proyecto para que la aplicación se pueda implementar en App Engine

3. Instalado Google Cloud SDK , sigue sus instrucciones de instalación.

4. Has probado exitosamente tu aplicación localmente.

 

Estructura de la carpeta del proyecto
Estructura de la carpeta del proyecto

En términos generales, su carpeta principal tendría esta estructura y tenga en cuenta que “nlp” es mi entorno virtual y estaremos creando el app.yaml, appengine_config.py y Requirements.txt a continuación:

runtime: python37

instance_class: F2


handlers:
# Matches requests to /images/... to files in static/images/...
- url: /images
  static_dir: static/images

- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto
app.yaml

La aplicación app.yaml de muestra especifica el tiempo de ejecución en el que debe ejecutarse la aplicación, para este proyecto, se ejecutaría en Python 3.7. Para Python 2.7, puede consultar el siguiente código:

runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /static
  static_dir: static
- url: /.*
  script: main.app
  
libraries:
  - name: ssl
    version: latest
Python 2.7 app.yaml
from google.appengine.ext import vendor
# Add any libraries installed in the "lib" folder.
vendor.add('lib')
app_engine_config.py
Flask
Werkzeug
scikit-learn
textblob
pandas
pip
Jinja2
MarkupSafe
requisitos.txt

Si no ha instalado las bibliotecas necesarias en el entorno virtual, puede utilizar el código que se encuentra a continuación.

El entorno debe activarse primero y acceder a él mediante el terminal, el símbolo del sistema, etc. para instalar las nuevas dependencias basadas en el archivo Requirements.txt.

pip install -t lib -r requirements.txt

-t lib: esta bandera copia las bibliotecas en una carpeta lib, que se carga en App Engine durante la implementación.

-r Requirements.txt : pip para instalar todo desde Requirements.txt.

 Google Cloud: Despliegue

Antes de comenzar, sería mejor (opcional) actualizar el SDK de la nube instalado:

gcloud components update

Luego, en la carpeta raíz , lo implementaremos usando su cmd / terminal con el siguiente código:

gcloud app deploy --project [ID of Project]

¡O simplemente puedes hacerlo sin la ID del proyecto también!

Elija la región más adecuada y solo espere unos minutos, dependiendo de su proyecto, ¡le presentará un enlace al que cualquiera puede acceder para ver / usar su aplicación web!

O simplemente use el siguiente código:

gcloud app browse --project=
#the link usually is "projectid".appspot.com

Conclusión

Genial! GCP hizo que el proceso de implementación de una aplicación web fuera más rápido y fácil. Espero poder probar otras opciones en un futuro próximo u otros proyectos. ¡No dude en comunicarse conmigo si hay algún problema o pregunta!.

Dejá un comentario