Google Apis e le traduzioni automatiche

Nelle settimane scorse ho fatto un grosso lavoro per rendere Gea.Net disponibile in varie lingue. Come base di partenza ho sfruttato un servizio di Google Traduzioni che con poche righe di codice ha fatto il grosso del lavoro. Di seguito trovate le poche righe Vb.Net necessarie per consumare il servizio.

Function Traduci_DaGoogleApis(ByVal Text2Translate As String, SourceLang As String, TargetLang As String) As String

    Try
        Dim outputFile As String = "C:\TEMP\TRANSLATE_GOOGLEAPIS.TMP"
        Dim requestUrl As String = "https://translate.googleapis.com/translate_a/single?client=gtx&sl="
        requestUrl = requestUrl + SourceLang
        requestUrl = requestUrl + "&tl=" + TargetLang
        requestUrl = requestUrl + "&dt=t&q=" + Text2Translate

        Dim wc As New System.Net.WebClient()
        wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 " +
                                      "(KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36")
        wc.DownloadFile(requestUrl, outputFile)

       Dim TextOut as string = [TESTO RICAVATO DA OUTPUTFILE]

        Return TextOut

    Catch ex As Exception
        Return Text2Translate
    End Try

End Function

Il servizio offerto è veramente favoloso ed è gratuito però per fare un bel lavoro non bisogna accontentarsi degli automatismi.

Per quanto veloce (la risposta del servizio è veramente più che soddisfacente) per tradurre una serie di testi come possono essere quelli presenti su una schermata o su una stampa, il servizio deve essere interrogato decine o centinaia di volte e questo implica che il caricamento richieda qualche secondo, tempi non accettabili per l’utente. Le soluzioni possono essere diverse ma in Gea.Net abbiamo scelto di richiedere la traduzione di un testo solo se non già precedentemente tradotto, salvando in locale la traduzione. Questo ci ha permesso di rispondere in modo soddisfacente anche al problema che segue.

Gli algoritmi di traduzione automatica si stanno affinando e pur avendo già raggiunto un buon livello di affidabilità, non sono ancora in grado di competere con la traduzione svolta da un umano. Salvare il testo tradotto in un database (o in un file di testo come abbiamo preferito fare in Gea.Net) permette di ritrattarlo traducendolo correttamente laddove il robot fallisce.

Il terzo problema nasce dalla punteggiatura o dai CRLF che il servizio interpreta in modo non ottimale costringendo a creare un algoritmo di transcodifica più complesso. In Gea.Net ci siamo inventati dei simboli che passati al traduttore questo ignora. Quindi abbiamo sostituito il CRLF con “;;” , il doppio apice con l’apice singolo ecc. Naturalmente deve essere reinterpretata al contrario la stringa tradotta.

L’ultimo problema, ma di sicuro quello di più difficile soluzione, è stato fare digerire al traduttore tutte le parole abbreviate o le sigle di uso corrente. Infatti il robot non traduce (giustamente) le parole che non capisce, così la stringa “N.” deve essere convertita in “Numero” prima di essere inviata al traduttore e per contro dovrà essere ritrattata nella stringa di ritorno. Chi scrive software sa che per ragioni di spazio a video e su carta, non è possibile rinunciare alle abbreviazioni. Anche in questo caso la soluzione adottata in Gea.Net è stata quella di mettere filtri prima e dopo la traduzione.

Quello che invece ho maggiormente apprezzato è la traduzione delle frasi. A tutti sarà capitato di leggere una pagina web tradotta dall’inglese e questo all’inizio mi lasciava piuttosto scettico. L’operazione inversa (da italiano ad inglese) è decisamente migliore. Forse dipende dalla maggiore complessità della lingua italiana, forse è il miglioramento degli algoritmi, fatto sta che se la frase di origine non è ambigua o contiene termini di dubbia interpretazione la traduzione è corretta. In definitiva, nella ritrattazione delle stringhe tradotte abbiamo speso maggiori risorse a tradurre i testi di 4-5 parole che le frasi più lunghe.

Per concludere

L’esperienza è stata positiva e se si deve tradurre un software o anche un testo tecnico conviene certamente partire da qui ma occorre mettere in conto la revisione dei testi tradotti. Se durante la stesura dei testi originali avete già in preventivato di passare per una traduzione automatica, pensate come un robot fin dall’inizio. Più siete stati chiari nel testo di origine, meno lavoro dovrete fare dopo.

Articolo precedente
Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: