Este directorio contiene el código de la aplicación sentiment.py, diseñada para el análisis de texto, la extracción de términos, y el análisis de sentimiento.
Esta aplicación se basa en BERT (Bidirectional Encoding Representation from Transformers), que en la fecha de desarrollo de esta aplicación representa el estado del arte en el análisis de texto basado en machine learning, desplazando a enfoques previos como Bag of Words o Word Embeddings.
La aplicación utiliza un modelo BERT multilingüe pre-entrenado con un conjunto de datos de dominio público que incluye opiniones en 6 idiomas: Inglés, Alemán, Danés, Francés, Español e Italiano. El modelo predice el sentimiento asignando un score entre 1 (muy negativo) y 5 (muy positivo).
La aplicación se distribuye en forma de imagen Docker, incluyendo este directorio el fichero Dockerfile necesario para construirla.
La construcción de la imagen requiere de Docker. Desde este directorio, la imagen puede construirse con:
docker build --rm -t sentiment:latest .
La aplicación se configura utilizando variables de entorno. A continuación se describen las variables de entorno soportadas:
nlptown/bert-base-multilingual-uncased-sentiment.Bearer contra la API.true si la API va a ser publicaa detrás de un proxy inverso.true para habilitar el log detallado.Estas variables deben especificarse al ejecutar el contenedor, por ejemplo:
docker run --rm -v /opt/sentiment/var:/var/cache/sentiment \
-e MODEL_NAME=nlptown/bert-base-multilingual-uncased-sentiment \
-e MODEL_CACHE_DIR=/var/cache/sentiment \
-e MODEL_PORT=3000 \
-e MODEL_TOKEN=... \
-e MODEL_PROXY=false \
-e MODEL_DEBUG=false \
-p 3000:3000 \
sentiment:latest
Alternativamente, estas variables pueden almacenarse en un fichero .env, y especificar únicamente la ruta a dicho fichero en la variable de entorno MODEL_ENV_DIR, por ejemplo:
cat > /opt/sentiment/etc/.env <<EOF
MODEL_NAME=nlptown/bert-base-multilingual-uncased-sentiment
MODEL_CACHE_DIR=/var/cache/sentiment
MODEL_PORT=3000
MODEL_TOKEN=...
MODEL_PROXY=false
MODEL_DEBUG=false
EOF
docker run --rm -v /opt/sentiment/var:/var/cache/sentiment \
-v /opt/sentiment/etc:/etc/sentiment:ro \
-e MODEL_ENV_DIR=/etc/sentiment \
-p 3000:3000 \
sentiment:latest
En cualquiera de los casos, con estos parámetros, la aplicación descargará el modelo a la ruta /opt/sentiment (montada dentro del contenedor en la ruta /var/cahe/sentiment), y escuchará peticiones en el puerto 3000.
Las peticiones deberán enviarse con una cabecera Authorization: Bearer ... (utilizando el mismo tken que se haya especificado en la variable de entorno MODEL_TOKEN).
La aplicación publica su API como documento swagger en la ruta /spec. Suponiendo que se ha lanzado la imagen como se describe en la sección anterior, la descripción de la API puede descargarse con el comando:
curl http://localhost:3000/spec
Este documento puede inspeccionarse con cualquier editor que soporte swagger, como https://editor.swagger.io/.
Para facilitar la inspección de la API, el resultado de este comando se ha almacenado en el fichero api.json, que puede ser inspeccionado accediendo al enlace [https://petstore.swagger.io/?url=https://raw.githubusercontent.com/warpcomdev/sentiment/master/docker/api.json].
Content type
Image
Digest
Size
709.3 MB
Last updated
almost 6 years ago
docker pull warpcomdev/sentiment