WEB3DEV

Cover image for Tradução Multilíngue de Dados de Spam com MindsDB e HuggingFace
Diogo Jorge
Diogo Jorge

Posted on

Tradução Multilíngue de Dados de Spam com MindsDB e HuggingFace

Aprenda como conectar o MindsDB aos modelos Hugging Face para executar a tradução de texto de dados de spam multilíngue

Image description

Introdução

A internet revolucionou completamente a forma como as informações são compartilhadas em todo o mundo. Atualmente, as ferramentas de tradução de linguas de IA usam o processamento de linguagem natural (NLP) para traduzir texto escrito ou palavras faladas de um idioma de origem para um idioma de destino diferente. Neste tutorial, você aprenderá como usar MindsDB e Hugging Face para executar tarefas de tradução em um conjunto de dados multilíngue.

Configuração de dados

Se você quiser acompanhar, baixe este conjunto de dados. Certifique-se de ter uma Conta de Nuvem MindsDB funcionando ou uma instalação local do MindsDB em execução para que você possa acompanhar este tutorial:

Compreendendo os dados

O conjunto de dados com o qual você está trabalhando contém dados de spam multilíngues para inglês, hindi, alemão e francês. Ele é usado principalmente para testar a transferência zero-shot para classificação de texto usando modelos de linguagem pré-treinados. Os dados originais estavam em inglês e foram traduzidos automaticamente para hindi, alemão e francês. Hoje, você usará este conjunto de dados para aprender a usar o MindsDB para executar tarefas de tradução de texto.
Você não precisa se preocupar com a coluna de rótulos (“ham”/”spam”) para este tutorial, pois iremos realizar tarefas de tradução neste conjunto de dados.

Adicionando dados no MindsDB Cloud

As instruções para importar dados usando o Cloud Editor do MindsDB são as seguintes: \
1.Visite MindsDB Cloud Editor 2.Clique em 'Login' ou 'Criar conta' e autentique 3.Depois de logado, clique Adicionar dados 4.Selecione "Arquivos" 5.Clique em "Importar arquivo" 6.Escolha o arquivo para importar 7.Nomeie seu conjunto de dados de acordo (sem caracteres especiais ou maiúsculas no nome do banco de dados) 8.Use a instrução SQL SELECT para visualizar o conjunto de dados:

entrada:

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

saída:

------------+-------------+-----------------------------------------------------------------+--------------------------------+
| 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...'|
+------------+-------------+-----------------------------------------------------------------+--------------------------------+
Enter fullscreen mode Exit fullscreen mode

Adicionando dados ao PostgreSQL localmente

Comece indo para Kaggle e baixando este conjunto de dados.

Em seguida, vá adiante e execute o PostgreSQL em sua linha de comando:

  1. Inicie o modo superusuário: psql postgres
  2. Crie um usuário e um banco de dados com o usuário como proprietário:

entrada:

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

saída:

CREATE ROLE
Enter fullscreen mode Exit fullscreen mode

entrada:

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

saída: CREATE DATABASE

  1. Em seguida, digite \l para listar seus bancos de dados PostgreSQL e garantir que o novo banco foi criado.
List of databases
Name     |      Owner      | Encoding | Collate | Ctype | Access privileges
-------------+-----------------+----------+---------+-------+-------------------
nlp_mindsdb | username123     | UTF8     | C       | C     |
postgres    | user            | UTF8     | C       | C     |

(4 rows)
Enter fullscreen mode Exit fullscreen mode
  1. Saia do modo superusuário: \q

  2. Acesse o banco de dados como usuário: psql -U username123 nlp_mindsdb

  3. Agora, crie uma tabela para armazenar seu primeiro conjunto de dados multilíngue:

entrada:

CREATE TABLE nlp_data (text TEXT, text_hi TEXT,
 text_de TEXT, text_fr TEXT);
Enter fullscreen mode Exit fullscreen mode

saída: CRIAR A TABELA

Ótimo. Agora você tem sua tabela vazia em seu banco de dados.

  1. Hora de importar seus dados:
\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

saída: COPY 5573

Agora certifique-se de que seus dados foram carregados corretamente:

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

Legal, você tem 11146 linhas/registros em seu novo banco de dados e está no caminho certo!

Conectando os dados

Agora você sabe como construir e copiar dados para uma tabela com PostgreSQL em sua linha de comando. É hora de se conectar com o MindsDB:

  1. A primeira coisa que você deve fazer é expor sua porta PostgreSQL:
ngrok tcp 5432
Enter fullscreen mode Exit fullscreen mode
  1. Agora, navegue até http://127.0.0.1:47334 e clique em "Adicionar dados".

  2. Em seguida, selecione a fonte de dados, PostgreSQLName.

  3. Depois de selecionar a fonte de dados, você será solicitado a inserir suas credenciais de banco de dados. Preencha-a usando o host e a porta fornecidos por ngrok:

Image description

  1. Em seguida, clique no botão Teste de Conexão

Image description

  1. Uma vez conectado, execute o comando SHOW DATABASES; para garantir que seus dados estejam lá:

Image description

  1. Visualize o conjunto de dados

entrada:

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

saída:

------------+-------------+-----------------------------------------------------------------+--------------------------------+
| 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...'|
+------------+-------------+-----------------------------------------------------------------+--------------------------------+

Enter fullscreen mode Exit fullscreen mode
  • Outra maneira de conectar seu banco de dados local PostgreSQL ao MindsDB é usando a declaração, CREATE DATABASE com seus detalhes de conexão:
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

Criando preditores multilíngues

Agora que você tem alguns dados para trabalhar, é hora de usar o MindsDB e o Hugging Face para realizar operações de NLP.

Atualmente, o MindsDB oferece suporte à tradução de vários idiomas e está expandindo a capacidade do software de realizar operações de tradução em lote para conjuntos de dados multilíngues.

Nesta próxima seção, você traduzirá 3 idiomas diferentes e aprenderá o básico das tarefas de tradução de linguagem NLP com o MindsDB.

Criando e treinando um preditor para traduzir de francês para inglês

  1. Começar criando um modelo para traduzir francês para 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. Verifique o status do novo preditor:
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 |
Enter fullscreen mode Exit fullscreen mode
  1. Assim que seu status for "concluído", é hora de começar a testar seu modelo com consultas de idioma:
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 |
Enter fullscreen mode Exit fullscreen mode

Criando e treinando um previsor para traduzir de alemão para inglês

  1. Crie um modelo preditor, usando o modelo Helsinki-NLP/opus-mt-de-en 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. Verifique o status:
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] | [NULL] | 2023-03-30 14:31:00.220057 |
Enter fullscreen mode Exit fullscreen mode
  1. Consulte o 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 |
Enter fullscreen mode Exit fullscreen mode

Criando e treinando um previsor para traduzir hindi (urdu) para inglês

  1. Crie seu modelo preditor, usando o [Helsinki-NLP/opus-mt-hi-en] (https://huggingface.co/Helsinki-NLP/opus-mt-hi-en) Modelo 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. Verifique o estado do seu 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': 'PRED', 'using': {'model_name': 'Helsinki-NLP/opus-mt-hi-en', 'input_column': 'text_hi', 'lang_input': 'hi', 'lang_output': 'en', 'task': 'translation'}} | [NULL] | [NULL] | [NULL] | [NULL] | 2023-03-30 13:58:04.036313 |
Enter fullscreen mode Exit fullscreen mode
  1. Consulte o modelo para testar seus recursos de tradução:
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? |
Enter fullscreen mode Exit fullscreen mode

Ótimo. Você deve sempre testar seus modelos o mais minuciosamente possível. Vá em frente e veja como este modelo responde quando você insere símbolos (ou Urdu):

SELECT *
FROM hi_en
WHERE text_hi = 'मेरा भाई भी मेरे साथ बातें करना नहीं चाहता; वे मेरे साथ सहायक की नाई बर्ताव करते हैं।';
Enter fullscreen mode Exit fullscreen mode

Conclusão

Como pode ser visto neste tutorial, a integração do MindsDB com o Hugging Face dá a você o poder de executar tarefas de Processamento de Linguagem Natural de forma rápida e fácil usando a linguagem de banco de dados SQL. Em apenas algumas etapas, você já aprendeu como conectar MindsDB com modelos de transformador Hugging Face e usá-los para traduzir dados multilíngues para o inglês.

Como você provavelmente já sabe, existem muitos cenários no mundo real em que esse novo conhecimento será útil. Agora que você já colocou a mão na massa, quais são as outras maneiras de usar o MindsDB para NLP?

Confira estes recursos para saber mais sobre o MindsDB e como se conectar com a comunidade:

Se este tutorial foi útil, por favor, nos dê uma estrela no GitHub.

Este artigo foi escrito por Alissa T. e traduzido por Diogo Jorge. O artigo original pode ser encontrado aqui.

Top comments (0)