Cómo detectar y traducir múltiples idiomas para un proyecto de PLN (NLP)

Translation into Spanish of an interesting article by Davis David, a data scientist with a background in Computer Science, AI practitioner, software developer, expert in Artificial Intelligence, Machine Learning, Deep Learning and Big Data. Davis is the Co-Organizer and Facilitator of Artificial Intelligence (AI) movement in Tanzania, and a reknown AI speaker, teacher and writer.

Languagesnlptranslation into spanish
29 April, 2022 Detect and translate languages with Python
29 April, 2022 Detect and translate languages with Python

A free translation by Chema, a Spain-based translator specializing in English to Spanish translations

An original text written by Davis David, originally published in
https://towardsdatascience.com/how-to-detect-and-translate-languages-for-nlp-project-dfd52af0c3b5

* * *

Feliz año nuevo, el 2021 ya está aquí, así que lo conseguiste 💪. El año 2020 quedó por fin atrás, y aunque, 2020 ha sido un año difícil y extraño para todos, todavía hay mucho que celebrar. En 2020 aprendí que, todo lo que necesitamos es el amor y el apoyo de nuestros seres queridos, familiares y amigos.

“Ante la adversidad, tenemos dos opciones. Podemos amargarnos, o crecer. Esas palabras se han convertido en el lema de mi vida.”

Caryn Sullivan

Este será mi primer artículo de 2021. Comentaré algunos de los desafíos lingüísticos a los que puede enfrentarse un científico de datos o un ingeniero de aprendizaje automático al trabajar en un proyecto de NLP y cómo puede resolverlos.

Imagina que eres un científico de datos y te asignan un proyecto de NLP para analizar lo que se publica en las redes sociales (por ejemplo, Twitter) sobre el Covid-19. Una de tus primeras tareas sería encontrar hashtags sobre COVID-19 (por ejemplo #covid19) y luego recopilar todos los tweets relacionados con ello.

Cuando empieces a analizar los datos recopilados sobre el covid-19, verás que están en distintos idiomas: inglés, swahili, español, chino, hindi, etc. En este sentido, tendrás que resolver dos problemas antes de comenzar a analizar esos datos: el primero, identificar el idioma de cada uno de los datos y, el segundo;traducir todos esos datos al idioma de destino elegido (por ejemplo, inglés).

¿Cómo identificar el idioma y traducir los datos?

Imagen de Tumisu en Pixabay

Primer problema: detección de idioma

El primer problema es saber cómo detectar el idioma de unos datos concretos. Para ello, puedes usar un paquete de python llamado langdetect.

langdetect es un paquete de Python simple desarrollado por Michal Danilák que permite detectar 55 idiomas distintos (códigos ISO 639-1):

af, ar, bg, bn, ca, cs, cy, da, de, el, en, es, et, fa, fi, fr, gu, he, 
hola, hr, hu, id, it, ja, kn, ko, lt, lv, mk, ml, mr, ne, nl, no, pl, pt, ro, ru, sk, sl, so, sq, sv, sw, ta, te, th, tl, tr, reino unido, tu, vi, zh-cn, zh-tw

Instalar langdetect

Para instalar langdetect, ejecuta el siguiente comando:

pip instalar langdetect

Ejemplo básico

Para detectar el idioma del texto “Tanzania ni nchi inayoongoza kwa utalii barani afrika”, primero importa la función de detección langdetect y luego pasa el texto a esa función.

from langdetect import detect

sentence = "Tanzania ni nchi inayoongoza kwa utalii barani afrika"

print(detect(sentence))

Resultado: “sw”

La función detecta que el texto facilitado está en idioma swahili (‘sw’).

También puedes conocer las probabilidades de coincidencia con los principales idiomas, utilizando el método detect_langs .

from langdetect import detect_langs 

sentence = "Tanzania ni nchi inayoongoza kwa utalii barani afrika"

print(detect_langs(sentence))

Resultado: [sw:0.9999971710531397]

NOTA: El algoritmo de detección de idioma es aleatorio, así que, si lo ejecutas en un texto que es demasiado corto o demasiado ambiguo, los resultados pueden variar constantemente al ejecutarlo.

Utiliza el siguiente código antes de la detección de idioma para obtener resultados estables.

from langdetect import DetectorFactory
DetectorFactory.seed = 0

Ahora puedes detectar el idioma de cualquier texto utilizando el paquete python langdetect.

Segundo problema: traducción de idiomas

El segundo problema que debes resolver es cómo traducir un texto de un idioma fuente, al idioma meta. Para ello, tienes que utilizar un paquete de Python muy útil llamado google_trans_new .

google_trans_new es un paquete de python gratuito e ilimitado, implementado por la API de Google Translate que también realiza la detección automática de idiomas.

Instalar google_trans_nuevo

Para instalar google_trans_new, ejecuta el siguiente comando:

pip instalar google_trans_nuevo

Ejemplo básico

Para traducir un texto de un idioma a otro, debes importar la clase google_translator del módulo google_trans_new. Luego, debes crear un objeto de la clase google_translator y finalmente pasar el texto como parámetro a la función de traducción y especificar el idioma meta utilizando el parámetro lang_tgt , por ejemplo, lang_tgt=”en”.

from google_trans_new import google_translator 

translator = google_translator()

sentence = "Tanzania ni nchi inayoongoza kwa utalii barani afrika"
translate_text = translator.translate(sentence,lang_tgt='en')

print(translate_text)

En el ejemplo anterior, traducimos una oración de swahili a inglés . Este es el resultado después de la traducción:

Tanzania is the leading tourism country in Africa

De forma predeterminada, la función translate()puede detectar el idioma del texto fuente y devolver la traducción al inglés. Si quieres especificar el idioma fuente del texto, puedes utilizar el parámetro lang_scr.

A continuación encontrarás todos los nombres de los idiomas junto con su código abreviado:

{'af': 'afrikaans', 'sq': 'albanés', 'am': 'amhárico', 'ar': 'árabe', 'hy': 'armenio', 'az': 'azerbaiyano', ' eu': 'vasco', 'be': 'bielorruso', 'bn': 'bengalí', 'bs': 'bosnio', 'bg': 'búlgaro', 'ca': 'catalán', 'ceb' : 'cebuano', 'ny': 'chichewa', 'zh-cn': 'chino (simplificado)', 'zh-tw': 'chino (tradicional)', 'co': 'corso', 'hr' : 'croata', 'cs': 'checo', 'da': 'danés', 'nl': 'holandés', 'en': 'inglés', 'eo': 'esperanto', 'et': ' estonio', 'tl': 'filipino', 'fi': 'finlandés', 'fr': 'francés', 'fy': 'frisón', 'gl': 'gallego', 'ka': 'georgiano', 'de': 'alemán' , 'el': 'griego', 'gu': 'gujarati', 'ht': 'criollo haitiano', 'ha': 'hausa', 'haw': 'hawaiano', 'iw': 'hebreo', 'hi': 'hindi', 'hmn': 'hmong', 'hu': 'hungaro', 'is': 'islandés', 'ig': 'igbo', 'id': 'indonesio', 'ga ': 'irlandés', 'it': 'italiano', 'ja': 'japonés', 'jw': 'javanés', 'kn': 'kannada', 'kk': 'kazajo', 'km': 'khmer', 'ko':'coreano', 'ku': 'kurdo (kurmanji)', 'ky': 'kirguís', 'lo': 'lao', 'la': 'latín', 'lv': 'letón', 'lt' : 'lituano', 'lb': 'luxemburgués', 'mk': 'macedonio', 'mg': 'malgache', 'ms': 'malayo', 'ml': 'malayalam', 'mt': ' maltés', 'mi': 'maorí', 'mr': 'marathi', 'mn': 'mongol', 'my': 'myanmar (birmano)', 'ne': 'nepalí', 'no': 'noruego', 'ps': 'pashto', 'fa': 'persa', 'pl': 'polaco', 'pt': 'portugués', 'pa': 'punjabi', 'ro': 'rumano ', 'ru': 'ruso', 'sm': 'samoano', 'gd': 'gaélico escocés', 'sr': 'serbio', 'st': 'sesotho', 'sn': 'shona', 'sd': 'sindhi ', 'si': 'sinhala', 'sk': 'eslovaco', 'sl': 'esloveno', 'so': 'somalí', 'es': 'español', 'su': 'sundanés', 'sw': 'swahili', 'sv': 'sueco', 'tg': 'tayiko', 'ta': 'tamil', 'te': 'telugu', 'th': 'thai', 'tr ': 'turco', 'uk': 'ucraniano', 'ur': 'urdu', 'uz': 'uzbeko', 'vi': 'vietnamita', 'cy': 'galés', 'xh': 'xhosa', 'yi': 'yiddish', 'yo': 'yoruba', 'zu': 'zulu', 'fil': 'filipino', 'he': 'hebreo'}

La función “detectar” y “traducir” de Python

He creado una sencilla función en python que permite detectar y traducir un texto al idioma que elijas.

from langdetect import detect
from google_trans_new import google_translator

#simple function to detect and translate text
def detect_and_translate(text,target_lang):

result_lang = detect(text)

if result_lang == target_lang:
return text

else:
translator = google_translator()
translate_text = translator.translate(text,lang_src=result_lang,lang_tgt=target_lang)
return translate_text

La función de python reconoce el texto fuente y el texto meta como parámetros. Luego detecta el idioma del texto facilitado y, si el idioma del texto es el mismo que el idioma de destino, devuelve el mismo texto, pero si no es el mismo, traduce el texto proporcionado al idioma de destino.

Ejemplo:

sentence = "I hope that, when I've built up my savings, I'll be able to travel to Mexico"

print(detect_and_translate(sentence,target_lang='sw'))

En el código fuente anterior, traducimos la frase al idioma swahili. Éste es el resultado:

Natumai kwamba, nitakapojiwekea akiba, nitaweza kusafiri kwenda México

Llegamos al final…

En este artículo, hemos aprendido a resolver el desafío de tener datos en diferentes idiomas y traducirlos a un único idioma.

¡Felicidades 👏! has llegado al final de este artículo!

Puedes descargar el texto de este artículo aquí: https://github.com/Davisy/Detect-and-Translate-Text-Data

Si has aprendido algo nuevo o has disfrutado leyendo este artículo, compártelo para que otros puedan leerlo. Esto es todo, ¡nos vemos en el próximo post! También me puedes seguir en Twitter @Davis_McDavid .

Valora este artículo