Questo traduttore si avvale di avanzati modelli di Machine Learning forniti da Helsinki-NLP/Opus-MT. Il sistema si basa su transformers, una popolare libreria per il Natural Language Processing, per accedere e utilizzare i modelli pre-addestrati.
Approfondimenti sulle tecnologie utilizzate nello script di traduzione.
Helsinki-NLP offre una serie di modelli di Machine Translation (MT) che coprono varie coppie linguistiche. Questi modelli sono addestrati su Opus, un vasto corpus di dati paralleli e multilingue. L'approccio utilizzato per l'addestramento è basato su tecniche di neural machine translation, che consentono di ottenere traduzioni di alta qualità attraverso reti neurali profonde.
Una libreria avanzata che fornisce numerosi modelli di deep learning per compiti di Natural Language Processing (NLP), inclusa la traduzione automatica. La libreria transformers di Hugging Face consente di accedere facilmente a questi modelli pre-addestrati, fornendo un'interfaccia semplificata per la loro implementazione.
Gli insiemi di dati Opus sono utilizzati per addestrare modelli di traduzione con l'obiettivo di migliorarne le prestazioni attraverso l'apprendimento su vasti volumi di testo parallelo.
Questo script rappresenta un'applicazione pratica delle tecnologie di punta nel campo del NLP e della traduzione automatica, rendendo accessibili queste capacità avanzate attraverso una semplice interfaccia basata su JSON.
import sys
import json
from transformers import pipeline
# Verifica che ci sia almeno un argomento passato allo script
if len(sys.argv) != 2:
print("Errore: fornire i dati in formato JSON")
sys.exit(1)
# Carica l'input JSON. Si assume che il JSON abbia la forma:
# {"text": "testo da tradurre", "direction": "it_to_en" o "en_to_it"}
input_json = json.loads(sys.argv[1])
text = input_json.get("text")
direction = input_json.get("direction")
# Percorsi ai modelli
model_path_it_to_en = "Helsinki-NLP/opus-mt-it-en"
model_path_en_to_it = "Helsinki-NLP/opus-mt-en-it"
# Seleziona il modello corretto in base alla direzione specificata
if direction == "it_to_en":
translator = pipeline("translation_it_to_en", model=model_path_it_to_en)
elif direction == "en_to_it":
translator = pipeline("translation_en_to_it", model=model_path_en_to_it)
else:
print("Direzione di traduzione non valida. Usare 'it_to_en' o 'en_to_it'.")
sys.exit(1)
# Esegue la traduzione
translation = translator(text, max_length=512)
# Prepara il risultato in formato JSON
result_json = json.dumps({"original_text": text, "translated_text": translation[0]['translation_text']}, ensure_ascii=False)
# Stampa il risultato in JSON
print(result_json)
import sys
import json
from transformers import pipeline
In questa sezione, importiamo le librerie necessarie: sys
per gestire gli argomenti della riga di comando, json
per lavorare con i dati in formato JSON e pipeline
dalla libreria transformers
per la traduzione.
# Verifica che ci sia almeno un argomento passato allo script
if len(sys.argv) != 2:
print("Errore: fornire i dati in formato JSON")
sys.exit(1)
Questo blocco verifica che lo script riceva esattamente un argomento (i dati in formato JSON). Se non è così, viene stampato un messaggio di errore e lo script si interrompe.
# Carica l'input JSON. Si assume che il JSON abbia la forma:
# {"text": "testo da tradurre", "direction": "it_to_en" o "en_to_it"}
input_json = json.loads(sys.argv[1])
text = input_json.get("text")
direction = input_json.get("direction")
Qui, l'argomento JSON viene caricato e si estraggono i valori del testo da tradurre e della direzione di traduzione (it_to_en o en_to_it).
# Percorsi ai modelli
model_path_it_to_en = "Helsinki-NLP/opus-mt-it-en"
model_path_en_to_it = "Helsinki-NLP/opus-mt-en-it"
Questa parte definisce i percorsi dei modelli di traduzione da italiano a inglese e da inglese a italiano.
# Seleziona il modello corretto in base alla direzione specificata
if direction == "it_to_en":
translator = pipeline("translation_it_to_en", model=model_path_it_to_en)
elif direction == "en_to_it":
translator = pipeline("translation_en_to_it", model=model_path_en_to_it)
else:
print("Direzione di traduzione non valida. Usare 'it_to_en' o 'en_to_it'.")
sys.exit(1)
In base alla direzione di traduzione specificata (it_to_en o en_to_it), viene selezionato il modello corretto. Se la direzione non è valida, viene stampato un messaggio di errore e lo script si interrompe.
# Esegue la traduzione
translation = translator(text, max_length=512)
Questa riga esegue la traduzione del testo utilizzando il modello selezionato. La lunghezza massima del testo tradotto è impostata a 512 caratteri.
# Prepara il risultato in formato JSON
result_json = json.dumps({"original_text": text, "translated_text": translation[0]['translation_text']}, ensure_ascii=False)
Il risultato della traduzione viene formattato in JSON, includendo il testo originale e il testo tradotto.
# Stampa il risultato in JSON
print(result_json)
Infine, il risultato in formato JSON viene stampato sulla console.