Detección de idioma en Python
- Usar bibliotecas y API para la detección de idiomas en Python
- Usar modelos de lenguaje para la detección de lenguaje en Python
- Usar conjuntos de intersección para la detección de idiomas en Python
- Conclusión
Aunque somos conscientes de algunos idiomas como humanos, no es suficiente cuando tratamos con conjuntos de datos con idiomas mixtos porque tenemos que identificar el idioma utilizado en el texto o los documentos para continuar con el proceso. Por eso, adaptarse a un método de detección de idioma ayuda en tales situaciones.
Para detectar idiomas, Python tiene diferentes bibliotecas de detección de idiomas. Podemos elegir el que más nos convenga, ya que las bibliotecas de Python utilizadas en la detección de idiomas reconocen el carácter entre las expresiones y las palabras de uso común en el contenido.
Podemos construir modelos utilizando procesamiento de lenguaje natural o aprendizaje automático para detectar lenguajes y bibliotecas de Python. Por ejemplo, cuando Chrome detecta que el contenido de la página web no está en inglés, aparece un cuadro con un botón para traducir.
La idea detrás de ese escenario es que Chrome está utilizando un modelo para predecir el idioma del texto utilizado en una página web.
Usar bibliotecas y API para la detección de idiomas en Python
El primer método que usamos en Python para detectar idiomas es una biblioteca o una API. Veamos las bibliotecas más utilizadas que podemos usar para la detección de idiomas en Python.
langdetect
langdetect
también es la biblioteca de detección de idiomas de Google que debe instalarse como los módulos anteriores porque no viene con los módulos de utilidades estándar.
Esta API es útil en procesamiento de texto y lingüística y admite 55 idiomas.
Las versiones de Python deben ser 2.7 o 3.4+ para usar esta API. Podemos instalar la API langdetect
como se muestra a continuación.
$ pip install langdetect
Podemos usar la API langdetect
para detectar idiomas después de importar el módulo detect
. Después de eso, el código imprime el idioma detectado de la oración dada.
Aquí proporcionamos tres oraciones como ejemplos, y muestra sus idiomas como inglés (en)
, italiano (pt)
y chino (ko)
, respectivamente.
Código:
from langdetect import detect
print(detect("Hello World!"))
print(detect("Ciao mondoe!"))
print(detect("你好世界!"))
Producción:
lánguido
langid
es otra API utilizada para detectar los nombres de idiomas con dependencias mínimas. Y también es una herramienta de identificación de idioma independiente que puede detectar 97 idiomas.
Para instalar, tenemos que escribir el siguiente comando en la terminal.
$ pip install langid
Usando el método a continuación, podemos detectar el idioma usando la biblioteca langid
. Al igual que en TextBlob
, mientras se repite, ve el idioma de tres oraciones e imprime el idioma respetado de cada oración como inglés (it)
, italiano (gl)
y chino (zh)
.
Código:
import langid
T = ["Hello World!", "Ciao mondoe!", "你好世界!"]
for i in T:
print(langid.classify(i))
Producción:
textblob
textblob
es otra API que utiliza el detector de idioma de Google Translate para funcionar con datos textuales. Funciona muy bien con la ayuda de los módulos NLTK
(Natural Language Toolkit) y pattern
, considerados gigantes en Python.
Esta API simple realiza análisis sentimental, extracción de frases nominales, etiquetado de partes del discurso, clasificación y más en lugar de detectar el idioma.
Para usar esta API, la versión de Python debe ser superior o igual a 2.7 o 3.5 y requiere una conexión a Internet.
Tenemos que instalar el paquete con el comando pip
.
$ pip install textblob
Después de eso, podemos detectar el idioma importando el módulo TextBlob
. Aquí hemos asignado tres oraciones con diferentes idiomas a la matriz llamada "T"
.
Mientras recorre un bucle for
, detecta la redacción de tres oraciones y las imprime.
Código:
from textblob import TextBlob
T = ["Hello World!", "Bonjour le monde!", "你好世界!"]
for i in T:
lang = TextBlob(i)
print(lang.detect_language())
Como la biblioteca textblob
ya está en desuso, el código anterior muestra un error en lugar de una salida precisa. Por lo tanto, no se recomienda usar este método; en lugar de esto, podemos usar la API de Google Translate.
Obtenga más información sobre TextBlob
aquí.
Además de las API y bibliotecas anteriores, tenemos googletrans
, FastText
, Spacy
, polyglot
, pycld
, chardet
, guess language
y muchas más. Según el caso de uso, también podemos usarlos.
Entre ellos, polyglot
y FastText
son las mejores bibliotecas para texto largo con alta precisión. Además, polyglot
y pycld
pueden detectar varios idiomas en un texto.
googletrans
es una biblioteca gratuita de Python que nos permite realizar solicitudes ilimitadas. Puede detectar automáticamente los idiomas y es rápido y confiable.
FastText
es un clasificador de texto que puede reconocer 176 idiomas y proporciona resultados más rápidos y precisos. La biblioteca de detección de idioma utilizada por Facebook es FastText
.
Además de usar bibliotecas o API, podemos detectar idiomas usando modelos de lenguaje o conjuntos de intersección.
Usar modelos de lenguaje para la detección de lenguaje en Python
Aquí, el modelo da la probabilidad de una secuencia de palabras, y podemos usar modelos de lenguaje N
para cada idioma con la puntuación más alta.
Estos modelos de lenguaje nos permiten detectar el idioma del texto incluso si contiene un conjunto diverso de idiomas.
Usar conjuntos de intersección para la detección de idiomas en Python
Y el siguiente método podemos detectar idiomas usando conjuntos que se cruzan. Aquí estamos preparando conjuntos N
con las palabras más frecuentes en cada idioma y cruzando el texto con cada conjunto.
Entonces el idioma detectado es el conjunto que tiene más intersecciones.
Conclusión
En general, el método sistemático de detección de idiomas de Python utiliza bibliotecas y API. Pero difieren debido a la precisión, la cobertura del idioma, la velocidad y el consumo de memoria.
Podemos elegir bibliotecas adecuadas y construir modelos según el caso de uso.
Cuando el modelo solo depende de un idioma, los otros idiomas pueden considerarse ruido. La detección de idioma es un paso en la limpieza de datos; por lo tanto, podemos obtener datos libres de ruido mediante la detección de idiomas.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.