يوفر Fast-Langdetect اكتشاف لغة فائق السرعة ودقيق للغاية استنادًا إلى FastText ، وهي مكتبة تم تطويرها بواسطة Facebook. هذه الحزمة أسرع 80x من الأساليب التقليدية وتوفر دقة 95 ٪.
وهو يدعم إصدارات Python 3.9 إلى 3.12.
دعم الاستخدام دون اتصال.
يعتمد هذا المشروع على zafercavdar/fasttext-langdetect مع تحسينات في العبوة.
لمزيد من المعلومات حول نموذج FastText الأساسي ، راجع الوثائق الرسمية: تحديد لغة FastText.
ملحوظة
تتطلب هذه المكتبة أكثر من 200 ميجابايت من الذاكرة لاستخدامها في وضع الذاكرة المنخفض.
لتثبيت Fast-Langdetect ، يمكنك استخدام pip أو pdm :
pip install fast-langdetectpdm add fast-langdetect من أجل الأداء الأمثل والدقة في اكتشاف اللغة ، استخدم detect(text, low_memory=False) لتحميل النموذج الأكبر.
سيتم تنزيل النموذج على دليل
/tmp/fasttext-langdetectعند الاستخدام الأول.
ملحوظة
تفترض هذه الوظيفة سطرًا واحد من النص. يجب عليك إزالة الأحرف n قبل تمرير النص. إذا كانت العينة طويلة جدًا أو قصيرة جدًا ، فستنخفض الدقة (على سبيل المثال ، في حالة قصيرة جدًا ، سيتم التنبؤ بالصينية على أنها يابانية).
from fast_langdetect import detect , detect_multilingual
# Single language detection
print ( detect ( "Hello, world!" ))
# Output: {'lang': 'en', 'score': 0.12450417876243591}
# `use_strict_mode` determines whether the model loading process should enforce strict conditions before using fallback options.
# If `use_strict_mode` is set to True, we will load only the selected model, not the fallback model.
print ( detect ( "Hello, world!" , low_memory = False , use_strict_mode = True ))
# How to deal with multiline text
multiline_text = """
Hello, world!
This is a multiline text.
But we need remove ` n ` characters or it will raise an ValueError.
"""
multiline_text = multiline_text . replace ( " n " , "" ) # NOTE:ITS IMPORTANT TO REMOVE n CHARACTERS
print ( detect ( multiline_text ))
# Output: {'lang': 'en', 'score': 0.8509423136711121}
print ( detect ( "Привет, мир!" )[ "lang" ])
# Output: ru
# Multi-language detection
print ( detect_multilingual ( "Hello, world!你好世界!Привет, мир!" ))
# Output: [{'lang': 'ja', 'score': 0.32009604573249817}, {'lang': 'uk', 'score': 0.27781224250793457}, {'lang': 'zh', 'score': 0.17542070150375366}, {'lang': 'sr', 'score': 0.08751443773508072}, {'lang': 'bg', 'score': 0.05222449079155922}]
# Multi-language detection with low memory mode disabled
print ( detect_multilingual ( "Hello, world!你好世界!Привет, мир!" , low_memory = False ))
# Output: [{'lang': 'ru', 'score': 0.39008623361587524}, {'lang': 'zh', 'score': 0.18235979974269867}, {'lang': 'ja', 'score': 0.08473210036754608}, {'lang': 'sr', 'score': 0.057975586503744125}, {'lang': 'en', 'score': 0.05422825738787651}]detect_language مريحة from fast_langdetect import detect_language
# Single language detection
print ( detect_language ( "Hello, world!" ))
# Output: EN
print ( detect_language ( "Привет, мир!" ))
# Output: RU
print ( detect_language ( "你好,世界!" ))
# Output: ZHلتقسيم النص على أساس اللغة ، يرجى الرجوع إلى مستودع الانقسام.
للحصول على نتائج قياسية مفصلة ، راجع Zafercavdar/fasttext-langdetect#المعيار.
[1] A. Joulin ، E. Grave ، P. Bojanowski ، T. Mikolov ، حقيبة الحيل لتصنيف النص الفعال
@article { joulin2016bag ,
title = { Bag of Tricks for Efficient Text Classification } ,
author = { Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Mikolov, Tomas } ,
journal = { arXiv preprint arXiv:1607.01759 } ,
year = { 2016 }
}[2] A. Joulin ، E. Grave ، P. Bojanowski ، M. Douze ، H. Jégou ، T. Mikolov ، fasttext.zip: ضغط نماذج تصنيف النص
@article { joulin2016fasttext ,
title = { FastText.zip: Compressing text classification models } ,
author = { Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Douze, Matthijs and J{'e}gou, H{'e}rve and Mikolov, Tomas } ,
journal = { arXiv preprint arXiv:1612.03651 } ,
year = { 2016 }
}