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.
pip install textblob
from textblob import TextBlob
texto = "bonjour"
b = TextBlob(texto)
idioma = b.detect_language()
print(idioma) # Salida: 'fr' para francés
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.
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
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}")
Chardet puede detectar idiomas si los caracteres están en el rango (127-255].
pip install chardet
import chardet
resultado = chardet.detect("Я люблю вкусные пампушки".encode('cp1251'))
print(resultado) # {'encoding': 'windows-1251', 'confidence': 0.9637267119204621, 'language': 'Russian'}
Langdetect requiere grandes porciones de texto y utiliza un enfoque no determinístico.
pip install langdetect
from langdetect import detect, DetectorFactory
DetectorFactory.seed = 0
idioma = detect('今一はお前さん')
print(idioma) # Salida: 'ja' para japonés
Guess_language puede detectar muestras muy cortas usando un corrector ortográfico con diccionarios.
pip install guess_language-spirit
from guess_language_spirit import guess_language
idioma = guess_language("This is a test")
print(idioma) # Salida: 'en' para inglés
Langid.py proporciona tanto un módulo como una herramienta de línea de comandos para la detección de idiomas.
pip install langid
import langid
idioma, _ = langid.classify("This is a test")
print(idioma) # Salida: 'en' para inglés
FastText es un clasificador de texto que puede reconocer 176 idiomas con los modelos adecuados.
pip install fasttext
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
PyCLD3 es un modelo de red neuronal para la identificación de idiomas.
pip install pycld3
import cld3
prediccion = cld3.get_language("影響包含對氣候的變化以及自然資源的枯竭程度")
print(prediccion) # Salida: LanguagePrediction(language='zh', probability=0.999969482421875, is_reliable=True, proportion=1.0)
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.
Jorge García
Fullstack developer