WEB3DEV Español

Cover image for Traducción Multilingüe de Datos de Spam con MindsDB y Hugging Face
Juan José Gouvêa
Juan José Gouvêa

Posted on

Traducción Multilingüe de Datos de Spam con MindsDB y Hugging Face

Aprende cómo conectar MindsDB a los modelos de Hugging Face para realizar la traducción de texto en datos de spam multilingües.

redes

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:

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:

  1. Visita el Editor en la Nube de MindsDB.
  2. Haz clic en "Iniciar sesión" o "Crear cuenta" y autentícate.
  3. Una vez que hayas iniciado sesión, haz clic en "Añadir datos".
  4. Selecciona "Archivos".
  5. Haz clic en "Importar archivo".
  6. Elige el archivo que deseas importar.
  7. Asigna un nombre a tu conjunto de datos (sin caracteres especiales ni mayúsculas en el nombre de la base de datos).
  8. Utiliza la instrucción SQL SELECT para visualizar el conjunto de datos:

Entrada:

SELECT * FROM files.your_file
LIMIT 3;
Enter fullscreen mode Exit fullscreen mode

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:

  1. Inicia el modo de superusuario: psql postgres
  2. Crea un usuario y una base de datos con el usuario como propietario:

Entrada:

CREATE USER username123 WITH PASSWORD 'password123';
Enter fullscreen mode Exit fullscreen mode

Salida:

CREATE ROLE
Enter fullscreen mode Exit fullscreen mode

Entrada:

CREATE DATABASE nlp_mindsdb WITH OWNER 'username123';
Enter fullscreen mode Exit fullscreen mode

Salida:

CREATE DATABASE
Enter fullscreen mode Exit fullscreen mode
  1. 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
  1. Sal del modo de superusuario: \q

  2. Accede a la base de datos como usuario: psql -U username123 nlp_mindsdb

  3. 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);
Enter fullscreen mode Exit fullscreen mode

Salida: CREATE TABLE

Genial. Ahora tienes tu tabla vacía en tu base de datos.

  1. 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;
Enter fullscreen mode Exit fullscreen mode

Salida: COPY 5573

Ahora, asegúrate de que tus datos se hayan cargado correctamente:

SELECT COUNT(*) FROM mindsdb_1;
11146
Enter fullscreen mode Exit fullscreen mode

¡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:

  1. Lo primero que debes hacer es exponer tu puerto de PostgreSQL:
    ngrok tcp 5432

  2. Luego, ve a http://127.0.0.1:47334 y haz clic en "Añadir datos".

  3. A continuación, selecciona la fuente de datos, PostgreSQLName.

  4. 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:

Postgre

  1. Luego, haz clic en el botón "Prueba de conexión".

Postgre2

  1. Una vez conectado, ejecuta el comando SHOW DATABASES; para asegurarte que tus datos estén allí:

showDatabases

Visualiza el conjunto de datos

Entrada:

SELECT *
FROM mindsdb.nlp_data
LIMIT 3;
Enter fullscreen mode Exit fullscreen mode

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"
};
Enter fullscreen mode Exit fullscreen mode

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

  1. 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';
Enter fullscreen mode Exit fullscreen mode
  1. Verifica el estado del nuevo predictor:
SELECT *
FROM mindsdb.models
WHERE name = 'hf_fr_en';
Enter fullscreen mode Exit fullscreen mode
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
  1. 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?';
Enter fullscreen mode Exit fullscreen mode
PRED text
What time is it? Quelle heure est-il?
SELECT *
FROM mindsdb.hf_fr_en
WHERE text = "Je m'appelle Alissa";
Enter fullscreen mode Exit fullscreen mode
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';
Enter fullscreen mode Exit fullscreen mode
  1. Verifica el estado:
SELECT *
FROM mindsdb.models
WHERE name = 'hf_de_en';
Enter fullscreen mode Exit fullscreen mode
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
  1. Consulta el modelo:
SELECT *
FROM hf_de_en
WHERE text = 'Hallo, mein Name ist Alissa';
Enter fullscreen mode Exit fullscreen mode
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?';
Enter fullscreen mode Exit fullscreen mode
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

  1. 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';
Enter fullscreen mode Exit fullscreen mode
  1. Verifica el estado de tu modelo:
SELECT *
FROM mindsdb.models
WHERE name = 'hi_en';
Enter fullscreen mode Exit fullscreen mode
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'}}
  1. Consulta el modelo para probar sus capacidades de traducción:
SELECT *
FROM hi_en
WHERE text_hi = 'namaste, aap kaise hain?';
Enter fullscreen mode Exit fullscreen mode
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 = 'मेरा भाई भी मेरे साथ बातें करना नहीं चाहता; वे मेरे साथ सहायक की नाई बर्ताव करते हैं।';
Enter fullscreen mode Exit fullscreen mode
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:

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)