spaCy: معالجة اللغة الطبيعية القوية للتطبيقات الواقعية

معالجة وتحليل كميات كبيرة من النصوص مع تعليقات لغوية سريعة ودقيقة.

ما هي واجهة برمجة تطبيقات spaCy؟

spaCy هي مكتبة بايثون حديثة لمعالجة اللغة الطبيعية (NLP) المتقدمة التي تتيح معالجة النصوص بكفاءة على نطاق واسع. مصممة خصيصًا للاستخدام في الإنتاج، تتفوق spaCy على مكتبات NLP الأكاديمية في كل من السرعة والدقة مع توفير دعم قوي للتكامل مع التعلم العميق.

تشمل المزايا الرئيسية لـ spaCy:

  • أداء سريع جدًا: كود Cython المحسن يعالج آلاف المستندات في الثانية.
  • نماذج مدربة مسبقًا: تتضمن نماذج إحصائية دقيقة لأكثر من 20 لغة.
  • التكامل مع التعلم العميق: توافق سلس مع PyTorch و TensorFlow.
  • خطة إنتاج جاهزة: دعم مدمج للتسلسل، التغليف الثنائي، ونشر النماذج.

من التعرف على الكيانات المسماة إلى التصنيف النصي المخصص، توفر spaCy الأدوات اللازمة لتطبيقات NLP الواقعية.

GitHub

إحصائيات جيثب

اسم:
لغة:
النجوم:
الشوك:
رخصة:
تم تحديث المستودع آخر مرة في

لماذا تختار spaCy؟

  • مجربة في الصناعة: تستخدمها 85% من شركات Fortune 500 لمهام NLP.
  • دقة فائقة: نماذج تعتمد على المحولات (مثل en_core_web_trf) تحقق نتائج متطورة في المهام القياسية.
  • كفاءة في الذاكرة: تعالج مستندات كبيرة دون تحميل كل شيء في الذاكرة.
  • هيكلية قابلة للتوسيع: يمكن إضافة مكونات مخصصة إلى خط المعالجة.
  • مجتمع نشط: أكثر من 25,000 نجمة على GitHub ووثائق شاملة.

التثبيت

يتطلب spaCy بايثون 3.6+ ويمكن تثبيته باستخدام pip. للحصول على أفضل أداء، نوصي باستخدام النماذج المدربة مسبقًا:

التثبيت الأساسي


pip install spacy
python -m spacy download en_core_web_sm  # النموذج الصغير للغة الإنجليزية

لتسريع GPU:

دعم GPU


pip install spacy[cuda-autodetect]
python -m spacy download en_core_web_trf  # نموذج المحولات

ملاحظة: تتطلب نماذج المحولات ذاكرة أكبر بكثير (1GB+)، لكنها توفر دقة أعلى.

أمثلة على الكود

استكشف إمكانيات spaCy من خلال هذه الأمثلة العملية. تفترض جميع الأمثلة أنك قمت بتثبيت نموذج اللغة الإنجليزية (en_core_web_sm).

خط معالجة NLP في spaCy

المثال 1: معالجة النصوص الأساسية

يوضح هذا المثال الوظائف الأساسية لـ spaCy بما في ذلك التجزئة، ووسم أجزاء الكلام، والتعرف على الكيانات المسماة.

خط معالجة NLP الأساسي


import spacy

# تحميل نموذج اللغة الإنجليزية
nlp = spacy.load("en_core_web_sm")

# معالجة نص
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")

# تحليل المستند
for token in doc:
    print(token.text, token.pos_, token.dep_)

# الكيانات المسماة
for ent in doc.ents:
    print(ent.text, ent.label_)

يشمل المخرجات:

  • تجزئة النصوص مع سمات لغوية
  • وسوم أجزاء الكلام والتبعيات النحوية
  • كيانات مسماة (ORG, GPE, MONEY, إلخ)

المثال 2: مكونات خط معالجة مخصصة

تسمح spaCy بإضافة مكونات مخصصة إلى خط المعالجة. يوضح هذا المثال مكونًا بسيطًا لتحليل المشاعر:

مكون خط معالجة مخصص


from spacy.language import Language

@Language.component("sentiment_analyzer")
def sentiment_analyzer(doc):
    # تسجيل بسيط للمشاعر (استبدل بنموذج التعلم الآلي الخاص بك)
    score = sum(len(token.text) for token in doc if token.pos_ == "ADJ") / len(doc)
    doc.user_data["sentiment"] = score
    return doc

# إضافة إلى خط المعالجة
nlp.add_pipe("sentiment_analyzer", last=True)

# معالجة النص
doc = nlp("This product is amazing and incredibly useful")
print("درجة المشاعر:", doc.user_data["sentiment"])

المثال 3: معالجة الدُفعات

تعالج spaCy كميات كبيرة من النصوص بكفاءة باستخدام طريقة nlp.pipe:

معالجة الدُفعات


texts = ["First document text...", "Second document...", ...]

# المعالجة في دُفعات
for doc in nlp.pipe(texts, batch_size=50, n_process=2):
    # استخراج الكيانات المسماة
    entities = [(ent.text, ent.label_) for ent in doc.ents]
    print(entities)

نصائح للأداء:

الأجهزةحجم الدُفعة الموصى به
وحدة معالجة مركزية رباعية النوى50-100 مستند
وحدة معالجة رسوميات500-1000 مستند

ميزات متقدمة

تقدم spaCy إمكانيات قوية لسير عمل NLP المتقدم:

  • المطابقة القائمة على القواعد: اجمع بين النماذج الإحصائية والقواعد المصممة يدويًا:

    أداة تحديد الكيانات

    
        ruler = nlp.add_pipe("entity_ruler")
        patterns = [{"label": "ORG", "pattern": "Apple"}]
        ruler.add_patterns(patterns)
        
    
  • التدريب المخصص: ضبط النماذج على بيانات مجال عملك:

    تهيئة التدريب

    
        python -m spacy init config config.cfg --lang en --pipeline ner
        python -m spacy train config.cfg --output ./output
        
    
  • خطوط معالجة المحولات: استفد من نماذج مثل BERT:

    نموذج المحولات

    
        nlp = spacy.load("en_core_web_trf")
        doc = nlp("This uses a transformer model underneath")
        
    

الختام

يضع spaCy معيارًا لـ NLP الجاهز للإنتاج مع نهجه المتوازن بعناية بين السرعة والدقة والقابلية للتوسيع. تجعل هيكليته القوية منه مثاليًا لـ:

  • استخراج المعلومات: بيانات منظمة من نصوص غير منظمة
  • تحليل المحتوى: التعرف على الكيانات، تصنيف النصوص
  • المعالجة المسبقة: تجزئة عالية الجودة لخطوط تعلم الآلة
  • التطبيقات متعددة اللغات: واجهة برمجة تطبيقات متسقة عبر 20+ لغة

مع التحديثات المنتظمة من Explosion ومجتمع مفتوح المصدر النشط، يواصل spaCy التطور كحل مفضل لتطبيقات NLP الصناعية.

منتجات مماثلة

 عربي