Solución:
-
TextBlob. Requiere paquete NLTK, usa Google.
from textblob import TextBlob b = TextBlob("bonjour") b.detect_language()
pip install textblob
-
Polígloto. Requiere bibliotecas numpy y algunas arcanas,
es poco probable que funcione para Windows. (Para Windows, obtenga una versión apropiada de PyICU, Morfessor y PyCLD2 desde aquí, entonces solopip install downloaded_wheel.whl
.) Capaz de detectar textos con mezcla de idiomas.from polyglot.detect import Detector mixed_text = u""" China (simplified Chinese: 中国; traditional Chinese: 中國), officially the People's Republic of China (PRC), is a sovereign state located in East Asia. """ for language in Detector(mixed_text).languages: print(language) # name: English code: en confidence: 87.0 read bytes: 1154 # name: Chinese code: zh_Hant confidence: 5.0 read bytes: 1755 # name: un code: un confidence: 0.0 read bytes: 0
pip install polyglot
Para instalar las dependencias, ejecute:
sudo apt-get install python-numpy libicu-dev
-
chardet también tiene la función de detectar idiomas si hay bytes de caracteres en el rango (127-255]:
>>> chardet.detect("Я люблю вкусные пампушки".encode('cp1251')) {'encoding': 'windows-1251', 'confidence': 0.9637267119204621, 'language': 'Russian'}
pip install chardet
-
langdetect Requiere grandes porciones de texto. Utiliza un enfoque no determinista bajo el capó. Eso significa que obtiene resultados diferentes para la misma muestra de texto. Los documentos dicen que debe usar el siguiente código para determinarlo:
from langdetect import detect, DetectorFactory DetectorFactory.seed = 0 detect('今一はお前さん')
pip install langdetect
-
guess_language Puede detectar muestras muy cortas usando este corrector ortográfico con diccionarios.
pip install guess_language-spirit
-
langid proporciona ambos módulos
import langid langid.classify("This is a test") # ('en', -54.41310358047485)
y una herramienta de línea de comandos:
$ langid < README.md
pip install langid
-
FastText es un clasificador de texto, se puede utilizar para reconocer 176 idiomas con modelos adecuados para la clasificación de idiomas. Descargue este modelo, luego:
import fasttext model = fasttext.load_model('lid.176.ftz') print(model.predict('الشمس تشرق', k=2)) # top 2 matching languages (('__label__ar', '__label__fa'), array([0.98124713, 0.01265871]))
pip install fasttext
-
pyCLD3 es un modelo de red neuronal para la identificación de idiomas. Este paquete contiene el código de inferencia y un modelo entrenado.
import cld3 cld3.get_language("影響包含對氣候的變化以及自然資源的枯竭程度") LanguagePrediction(language="zh", probability=0.999969482421875, is_reliable=True, proportion=1.0)
pip install pycld3
¿Ha echado un vistazo a langdetect?
from langdetect import detect
lang = detect("Ein, zwei, drei, vier")
print lang
#output: de
Hay un problema con langdetect
cuando se utiliza para la paralelización y falla. Pero spacy_langdetect
es un contenedor para eso y puede usarlo para ese propósito. También puede utilizar el siguiente fragmento:
import spacy
from spacy_langdetect import LanguageDetector
nlp = spacy.load("en")
nlp.add_pipe(LanguageDetector(), name="language_detector", last=True)
text = "This is English text Er lebt mit seinen Eltern und seiner Schwester in Berlin. Yo me divierto todos los días en el parque. Je m'appelle Angélica Summer, j'ai 12 ans et je suis canadienne."
doc = nlp(text)
# document level language detection. Think of it like average language of document!
print(doc._.language['language'])
# sentence level language detection
for i, sent in enumerate(doc.sents):
print(sent, sent._.language)