Aprende cómo conectar MindsDB a los modelos de Hugging Face para realizar la traducción de texto en datos de spam multilingües.
Introducción
El Internet ha revolucionado por completo la forma en que se comparte información en todo el mundo. En la actualidad, las herramientas de traducción de IA utilizan el procesamiento del lenguaje natural (NLP) para traducir textos escritos o palabras habladas desde un idioma origen a otro idioma. En este tutorial, aprenderás cómo usar MindsDB y Hugging Face para ejecutar tareas de traducción en un conjunto de datos multilingüe.
Configuración de los datos
Si deseas seguir el tutorial, descarga este conjunto de datos. Asegúrate tener una cuenta en la nube de MindsDB en funcionamiento o una instalación local de MindsDB, para poder seguir este tutorial:
- Video: Configuración de Docker para MindsDB
- Documentos: Configuración de Docker
Comprensión de los datos
El conjunto de datos con el que vas a trabajar contiene datos de spam en varios idiomas, incluyendo inglés, hindi, alemán y francés. Se utiliza principalmente para probar la transferencia de disparo cero para la clasificación de texto, utilizando modelos de lenguaje preentrenados. Los datos originales estaban en inglés y se tradujeron automáticamente al hindi, alemán y francés. Hoy, utilizarás este conjunto de datos para aprender a utilizar MindsDB para realizar tareas de traducción de texto. No necesitas preocuparte por la columna de etiquetas ("ham" / "spam") para este tutorial, ya que nos centraremos en las tareas de traducción en este conjunto de datos.
Añadiendo datos en MindsDB Cloud
Las instrucciones para importar datos utilizando el Editor en la Nube de MindsDB son las siguientes:
- Visita el Editor en la Nube de MindsDB.
- Haz clic en "Iniciar sesión" o "Crear cuenta" y autentícate.
- Una vez que hayas iniciado sesión, haz clic en "Añadir datos".
- Selecciona "Archivos".
- Haz clic en "Importar archivo".
- Elige el archivo que deseas importar.
- Asigna un nombre a tu conjunto de datos (sin caracteres especiales ni mayúsculas en el nombre de la base de datos).
- Utiliza la instrucción SQL SELECT para visualizar el conjunto de datos:
Entrada:
SELECT * FROM files.your_file
LIMIT 3;
Salida:
labels | text_input | text_de | text_fr |
---|---|---|---|
ham | 'Go until jurong, crazy..' | 'Gehen bis jurong' | 'Allez jusqu...' |
ham | 'Ok lar... Joking wif u...' | 'Ok... joking' | 'J'ai fait une blague sur le wif' |
spam | 'Free entry in 2 a wkly...' | 'Freier Eintrit' | 'Entrée libre dans 2 a wkly comp' |
Añadiendo datos a PostgreSQL localmente
Comienza yendo a Kaggle y descargando este conjunto de datos.
Luego, inicia PostgreSQL en tu línea de comandos:
- Inicia el modo de superusuario:
psql postgres
- Crea un usuario y una base de datos con el usuario como propietario:
Entrada:
CREATE USER username123 WITH PASSWORD 'password123';
Salida:
CREATE ROLE
Entrada:
CREATE DATABASE nlp_mindsdb WITH OWNER 'username123';
Salida:
CREATE DATABASE
- A continuación, escribe
\l
para listar tus bases de datos de PostgreSQL y asegurarte de que se haya creado la nueva base de datos.
Name | Owner | Encoding | Collate | Ctype | Access privileges |
---|---|---|---|---|---|
nlp_mindsdb | username123 | UTF8 | C | C | |
postgres | user | UTF8 | C | C |
Sal del modo de superusuario:
\q
Accede a la base de datos como usuario:
psql -U username123 nlp_mindsdb
Ahora, crea una tabla para almacenar tu primer conjunto de datos multilingüe:
Entrada:
CREATE TABLE nlp_data (text TEXT, text_hi TEXT,
text_de TEXT, text_fr TEXT);
Salida: CREATE TABLE
Genial. Ahora tienes tu tabla vacía en tu base de datos.
- Es hora de importar tus datos:
\copy mindsdb_1(labels, text, text_hi, text_de, text_fr)
FROM '/Users/alissa/Downloads/nlp_dataset.csv' WITH DELIMITER ',' CSV;
Salida: COPY 5573
Ahora, asegúrate de que tus datos se hayan cargado correctamente:
SELECT COUNT(*) FROM mindsdb_1;
11146
¡Genial, tienes 11146 filas/registros en tu nueva base de datos y estás en el camino correcto!
Conectando los datos
Ahora que sabes cómo construir y copiar datos en una tabla con PostgreSQL en tu línea de comandos, es hora de conectarte a MindsDB:
Lo primero que debes hacer es exponer tu puerto de PostgreSQL:
ngrok tcp 5432
Luego, ve a
http://127.0.0.1:47334
y haz clic en "Añadir datos".A continuación, selecciona la fuente de datos, PostgreSQLName.
Una vez seleccionada la fuente de datos, se te pedirá que ingreses tus credenciales de la base de datos. Rellénalas utilizando el host y el puerto proporcionados por
ngrok
:
- Luego, haz clic en el botón "Prueba de conexión".
- Una vez conectado, ejecuta el comando
SHOW DATABASES
; para asegurarte que tus datos estén allí:
Visualiza el conjunto de datos
Entrada:
SELECT *
FROM mindsdb.nlp_data
LIMIT 3;
Salida:
| labels | text_input | text_de | text_fr |
|--------|---------------------------|-------------------|-----------------------------------|
| ham | 'Go until jurong, crazy..'| 'Gehen bis jurong'| 'Allez jusqu...' |
| ham | 'Ok lar... Joking wif u..'| 'Ok... joking' | 'J'ai fait une blague sur le wif' |
| spam | 'Free entry in 2 a wkly..'| 'Freier Eintrit' | 'Entrée libre dans 2 a wkly comp..'|
- Otra forma de conectar tu base de datos local de PostgreSQL a MindsDB es utilizando la declaración
CREATE DATABASE
con los detalles de tu conexión:
CREATE DATABASE multilingual
WITH ENGINE = "postgres",
PARAMETERS = {
"user": "username123",
"password": "password123",
"host": "6.tcp.ngrok.io",
"port": "11462",
"database": "nlp_mindsdb"
};
Creando predictores multilingües
Ahora que tienes algunos datos con los que trabajar, es hora de utilizar MindsDB y Hugging Face para realizar operaciones de NLP.
En la actualidad, MindsDB admite la traducción en varios idiomas y está ampliando la capacidad del software para realizar operaciones de traducción en lotes en conjuntos de datos multilingües.
En la siguiente sección, traducirás en tres idiomas diferentes y aprenderás lo básico de las tareas de traducción de lenguaje NLP con MindsDB.
Creando y entrenando un predictor para traducir de francés a inglés
- Comienza creando un modelo para traducir de francés a inglés:
CREATE MODEL mindsdb.hf_fr_en
PREDICT PRED
USING
engine = 'huggingface',
model_name = 'Helsinki-NLP/opus-mt-fr-en',
input_column = 'text',
lang_input ='fr',
lang_output = 'en';
- Verifica el estado del nuevo predictor:
SELECT *
FROM mindsdb.models
WHERE name = 'hf_fr_en';
NAME | ENGINE | PROJECT | VERSION | STATUS | ACCURACY | PREDICT | UPDATE_STATUS | MINDSDB_VERSION | ERROR | SELECT_DATA_QUERY | TRAINING_OPTIONS | CURRENT_TRAINING_PHASE | TOTAL_TRAINING_PHASES | TRAINING_PHASE_NAME | TAG | CREATED_AT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hf_fr_en | huggingface | mindsdb | 1 | complete | [NULL] | PRED | up_to_date | 23.3.5.0 | [NULL] | [NULL] | {'target': 'PRED', 'using': {'model_name': 'Helsinki-NLP/opus-mt-fr-en', 'input_column': 'text', 'lang_input': 'fr', 'lang_output': 'en', 'task': 'translation'}} | [NULL] | [NULL] | [NULL] | [NULL] | 2023-03-30 16:31:29.096920 |
- Una vez que el estado sea "completo", es hora de comenzar a probar tu modelo con consultas en el idioma correspondiente:
SELECT *
FROM mindsdb.hf_fr_en
WHERE text = 'Quelle heure est-il?';
PRED | text |
---|---|
What time is it? | Quelle heure est-il? |
SELECT *
FROM mindsdb.hf_fr_en
WHERE text = "Je m'appelle Alissa";
PRED | text |
---|---|
My name is Alissa. | Je m'appelle Alissa |
Creando y entrenando un predictor para traducir de alemán a inglés
Crea un modelo predictor utilizando el modelo Helsinki-NLP/opus-mt-de-en de Hugging Face:
CREATE MODEL mindsdb.hf_de_en
PREDICT PRED
USING
engine = 'huggingface',
model_name = 'Helsinki-NLP/opus-mt-de-en',
input_column = 'text',
lang_input ='de',
lang_output = 'en';
- Verifica el estado:
SELECT *
FROM mindsdb.models
WHERE name = 'hf_de_en';
NAME | ENGINE | PROJECT | VERSION | STATUS | ACCURACY | PREDICT | UPDATE_STATUS | MINDSDB_VERSION | ERROR | SELECT_DATA_QUERY | TRAINING_OPTIONS | CURRENT_TRAINING_PHASE | TOTAL_TRAINING_PHASES | TRAINING_PHASE_NAME | TAG | CREATED_AT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hf_de_en | huggingface | mindsdb | 1 | complete | [NULL] | PRED | up_to_date | 23.3.5.0 | [NULL] | [NULL] | {'target': 'PRED', 'using': {'model_name': 'Helsinki-NLP/opus-mt-de-en', 'input_column': 'text', 'lang_input': 'de', 'lang_output': 'en', 'task': 'translation'}} | [NULL] | [NULL] | [NULL] | 2023-03-30 14:31:00.220057 |
- Consulta el modelo:
SELECT *
FROM hf_de_en
WHERE text = 'Hallo, mein Name ist Alissa';
PRED | text |
---|---|
Hello, my name is Alissa | Hallo, mein Name ist Alissa |
SELECT *
FROM hf_de_en
WHERE text = 'Guten Tag, es ist so schön, Sie zu sehen?';
PRED | text |
---|---|
Hello, it's so nice to see you | Guten Tag, es ist so schön, Sie zu sehen |
Creando y entrenando un predictor para traducir hindi (urdu) a inglés
- Crea tu modelo predictor utilizando el modelo Helsinki-NLP/opus-mt-hi-en de Hugging Face:
CREATE MODEL mindsdb.hi_en
PREDICT PRED
USING
engine = 'huggingface',
model_name = 'Helsinki-NLP/opus-mt-hi-en',
input_column = 'text_hi',
lang_input ='hi',
lang_output = 'en';
- Verifica el estado de tu modelo:
SELECT *
FROM mindsdb.models
WHERE name = 'hi_en';
hi_en | huggingface | mindsdb | 1 | complete | NULL | PRED | up_to_date | 23.3.5.0 | NULL | NULL | target_using | NULL | NULL | NULL | NULL | 2023-03-30 13:58:04.036313 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{'target': 'PRED', 'using': {'model_name': 'Helsinki-NLP/opus-mt-hi-en', 'input_column': 'text_hi', 'lang_input': 'hi', 'lang_output': 'en', 'task': 'translation'}} |
- Consulta el modelo para probar sus capacidades de traducción:
SELECT *
FROM hi_en
WHERE text_hi = 'namaste, aap kaise hain?';
PRED | text_hi |
---|---|
Let me tell you what, do you think? | namaste, aap kaise hain? |
Genial. Siempre debes probar tus modelos de la forma más exhaustiva posible. Adelante y ve cómo responde este modelo cuando insertas símbolos (o urdu):
SELECT *
FROM hi_en
WHERE text_hi = 'मेरा भाई भी मेरे साथ बातें करना नहीं चाहता; वे मेरे साथ सहायक की नाई बर्ताव करते हैं।';
PRED | text_hi |
---|---|
My brother also wouldn't speak with me. They treat me as a helper. | मेरा भाई भी मेरे साथ बातें करना नहीं चाहता; वे मेरे साथ सहायक की नाई बर्ताव करते हैं। |
Conclusión
Como se puede ver en este tutorial, la integración de MindsDB con Hugging Face te permite realizar tareas de procesamiento del lenguaje natural de manera rápida y sencilla utilizando el lenguaje de consultas SQL. En solo unos pocos pasos, has aprendido a conectar MindsDB con modelos transformadores de Hugging Face y utilizarlos para traducir datos multilingües al inglés.
Como probablemente ya sepas, existen muchos escenarios del mundo real en los que este nuevo conocimiento será útil. Ahora que has puesto en práctica tus habilidades, ¿cuáles son otras formas de utilizar MindsDB para NLP?
Consulta estos recursos para obtener más información sobre MindsDB y cómo conectarte con la comunidad:
- Guarda el repositorio de MindsDB en GitHub.
- Regístrate para obtener una cuenta gratuita en MindsDB.
- Interactúa con la comunidad de MindsDB en Slack o GitHub para hacer preguntas y compartir tus ideas y pensamientos.
Si este tutorial te ha sido útil, por favor, dale una estrella en GitHub.
Este artículo fue escrito por Alissa T. y traducido por Juan José Gouvêa. Puedes encontrar el artículo original aquí.
Discussion (0)