Volver a la página principal
viernes 26 julio 2024
93

Cómo detectar el idioma de un Texto en Python

1. TextBlob

Nota: TextBlob está obsoleto para la detección de idiomas y se recomienda usar la API oficial de Google Translate en su lugar. TextBlob requiere acceso a Internet, ya que utiliza el detector de idiomas de Google Translate a través de la API.

Instalación

pip install textblob

Uso

from textblob import TextBlob

texto = "bonjour"
b = TextBlob(texto)
idioma = b.detect_language()
print(idioma)  # Salida: 'fr' para francés

2. Polyglot

Polyglot es una herramienta potente que puede detectar textos con idiomas mixtos. Sin embargo, requiere varias dependencias que pueden ser difíciles de instalar en Windows.

Instalación

Para Linux:

sudo apt-get install python-numpy libicu-dev
pip install polyglot

Para Windows:

Descargar e instalar versiones apropiadas de PyICU, Morfessor y PyCLD2 desde aquí, luego:

pip install [nombre_del_archivo_wheel].whl

Uso

from polyglot.detect import Detector

texto_mixto = u"""
China (simplified Chinese: 中国; traditional Chinese: 中國),
officially the People's Republic of China (PRC), is a sovereign state
located in East Asia.
"""
detector = Detector(texto_mixto)
for idioma in detector.languages:
    print(f"nombre: {idioma.name}     código: {idioma.code}     confianza: {idioma.confidence}")

3. chardet

Chardet puede detectar idiomas si los caracteres están en el rango (127-255].

Instalación

pip install chardet

Uso

import chardet

resultado = chardet.detect("Я люблю вкусные пампушки".encode('cp1251'))
print(resultado)  # {'encoding': 'windows-1251', 'confidence': 0.9637267119204621, 'language': 'Russian'}

4. langdetect

Langdetect requiere grandes porciones de texto y utiliza un enfoque no determinístico.

Instalación

pip install langdetect

Uso

from langdetect import detect, DetectorFactory

DetectorFactory.seed = 0
idioma = detect('今一はお前さん')
print(idioma)  # Salida: 'ja' para japonés

5. guess_language

Guess_language puede detectar muestras muy cortas usando un corrector ortográfico con diccionarios.

Instalación

pip install guess_language-spirit

Uso

from guess_language_spirit import guess_language

idioma = guess_language("This is a test")
print(idioma)  # Salida: 'en' para inglés

6. langid

Langid.py proporciona tanto un módulo como una herramienta de línea de comandos para la detección de idiomas.

Instalación

pip install langid

Uso

import langid

idioma, _ = langid.classify("This is a test")
print(idioma)  # Salida: 'en' para inglés

7. FastText

FastText es un clasificador de texto que puede reconocer 176 idiomas con los modelos adecuados.

Instalación

pip install fasttext

Uso

import fasttext

modelo = fasttext.load_model('lid.176.ftz')
idiomas, _ = modelo.predict('الشمس تشرق', k=2)  # Los 2 idiomas más probables
print(idiomas)  # Salida: ('__label__ar', '__label__fa') para árabe y persa

8. pyCLD3

PyCLD3 es un modelo de red neuronal para la identificación de idiomas.

Instalación

pip install pycld3

Uso

import cld3

prediccion = cld3.get_language("影響包含對氣候的變化以及自然資源的枯竭程度")
print(prediccion)  # Salida: LanguagePrediction(language='zh', probability=0.999969482421875, is_reliable=True, proportion=1.0)

Conclusión

Hay diversas herramientas disponibles para la detección de idiomas en Python, cada una con sus propias ventajas y limitaciones. TextBlob y langdetect son fáciles de usar pero requieren acceso a Internet y grandes porciones de texto, respectivamente. Polyglot es potente pero complejo de instalar en ciertos sistemas. FastText y pyCLD3 proporcionan alta precisión utilizando modelos avanzados de aprendizaje automático. Elegir la herramienta adecuada dependerá de las necesidades específicas de tu proyecto y del entorno en el que estés trabajando.

Etiquetas:
python
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer