// محاور المحاضرة
- ما هو تصنيف البيانات؟
- لماذا التصنيف ضروري؟
- أنواع التصنيف
- معايير الجودة (IAA & Kappa)
- ⚙️ تجهيز البيئة (Python 3.11)
- دليل Label Studio التفصيلي
- دليل Doccano
- دليل Prodigy
- دليل INCEpTION
- دليل BRAT
- التصنيف البرمجي بـ Python
- خط سير التصنيف الاحترافي
- صيغ تصدير البيانات
- نصائح احترافية
- فرص العمل
- التدريبات العملية
- مقارنة الأدوات
ما هو تصنيف البيانات؟
تصنيف البيانات (Data Annotation) هو عملية إضافة علامات (Labels) وتفسيرات لبيانات خام بهدف تعليم نموذج ذكاء اصطناعي كيف يفهم اللغة ويتخذ القرارات الصحيحة. هو الجسر بين النص العادي ونموذج AI ذكي.
في شركات الترجمة
تصنيف الالتزامات والأسلوب والمصطلحات في ملفات الترجمة لبناء ذاكرات ذكية.
في تدريب AI
إخبار النموذج بالكلمات التي تمثل اسم شخص، مكان، تعبير إيجابي أو سلبي.
للمترجم المحترف
مهارة تضاعف دخلك — شركات AI تدفع مقابل التصنيف باللغة العربية أكثر بكثير من الترجمة العادية.
لماذا التصنيف ضروري؟
بدون تصنيف دقيق، يتعلم نموذج AI ترجمة "مكتب" كـ "table" دائماً — مع تصنيف صحيح يفهم الفرق بين desk و office و department.
🎯 تحسين جودة الترجمة الآلية
بيانات مُصنَّفة = نموذج يميز السياق والمعنى = ترجمة أدق لكل مجال.
🔁 توحيد المصطلحات تلقائياً
التصنيف يُعلّم AI استخدام نفس المصطلح في كل موضع، بنفس الأسلوب.
✅ بناء نماذج QA ذكية
نموذج يراجع الترجمة ويكتشف الأخطاء قبل التسليم للعميل.
💰 زيادة دخل المترجم
Data Annotator مطلوب بشدة في سوق AI بساعات مرنة وراتب مجزٍ.
📚 بناء قواعد بيانات معرفية
معرفة المصطلح + السياق + الصواب = مرجع لغوي لا يُقدر بثمن.
🌐 المنافسة في سوق NLP
المترجم الذي يفهم التصنيف يعمل مع شركات Google, Microsoft, Amazon.
أنواع التصنيف التي يحتاجها المترجم
ست فئات رئيسية تغطي كل احتياجات شركات الترجمة وتدريب AI.
🏷️ NER — Named Entity Recognition
تصنيف أسماء الأشخاص والأماكن والمنظمات.
😊 Sentiment — تحليل المشاعر
تصنيف النص كـ إيجابي / سلبي / محايد. مفيد لتقييم نبرة الترجمة.
🔤 POS — Part of Speech
تصنيف كل كلمة نحوياً.
🔗 Coref — حل الضمائر
تحديد ما تشير إليه الضمائر في النص.
↔️ Translation Alignment
ربط كل كلمة مصدر بمقابلها في الهدف + تصنيف الجودة.
📑 Sequence — تصنيف التسلسلات
تقسيم النص لجمل/فقرات وتصنيف كل وحدة حسب المجال أو الأسلوب.
🔍 تطبيق عملي: تصنيف NER
جملة قبل التصنيف:
بعد التصنيف:
| الكيان | النوع | التصنيف |
|---|---|---|
Ahmed Hassan | شخص | PER |
Cairo Bank | مؤسسة | ORG |
$2M | مبلغ | MONEY |
March 15 | تاريخ | DATE |
New York | مكان | LOC |
📊 Translation Quality Labels
| المصدر EN | الهدف AR | التصنيف |
|---|---|---|
| The law is clear. | القانون واضح. | GOOD ✓ |
| He was dismissed. | تم فصله. | ACCEPTABLE |
| The court ruled. | انتهت الملكية. | BAD ✗ |
| Force majeure. | قوة قاهرة. | GOOD ✓ |
| Party A defaults. | خسر المتهم. | BAD ✗ |
معايير الجودة: IAA & Cohen's Kappa
IAA = Inter-Annotator Agreement: نسبة الاتفاق بين مصنّفَين مختلفَين على نفس البيانات. كلما ارتفع، كلما كان التصنيف أكثر موثوقية وصلاحية للتدريب.
تفسير قيمة Cohen's Kappa (κ)
حساب Kappa بـ Python
from sklearn.metrics import cohen_kappa_score # تصنيفات المصنّف الأول والمصنّف الثاني لنفس الجمل annotator_1 = ['PER', 'ORG', 'LOC', 'PER', 'DATE', 'PER'] annotator_2 = ['PER', 'ORG', 'LOC', 'ORG', 'DATE', 'PER'] kappa = cohen_kappa_score(annotator_1, annotator_2) print(f"Cohen's Kappa: {kappa:.3f}") # Output: Cohen's Kappa: 0.737 → جيد جداً
لماذا Guidelines مهمة؟
📋 توحيد فهم المصنّفين
Guidelines توحّد فهم كل المصنّفين للتصنيف الصحيح وتقلل الاجتهاد الشخصي.
❓ معالجة حالات الشك
تُحدد بوضوح: ماذا تصنّف؟ متى؟ وكيف تعالج الحالات الغامضة؟
✅ أمثلة DO & DON'T
تشمل أمثلة إيجابية (DO) وأمثلة سلبية (DON'T) مع شرح السبب.
🔄 تحديث مستمر
يجب مراجعتها وتحديثها باستمرار مع فريق التصنيف بعد كل دورة Pilot.
تجهيز البيئة: تثبيت Python 3.11
قبل تثبيت Label Studio، لازم نتجهز ببيئة Python سليمة. هذه الخطوة مهمة جداً ولو تخطيتها هتقابل أخطاء غريبة لاحقاً.
إصدار Python 3.14 (الأحدث في 2025) أزال بعض الوظائف القديمة في PEP 632 — أبرزها importlib.find_loader و find_module — وهي وظائف تعتمد عليها Label Studio ومكتباتها التابعة (مثل Django القديم وبعض dependencies).
النتيجة: لو ثبّتّ Label Studio على Python 3.14 هتقابل خطأ ImportError: cannot import name 'find_loader' ويتوقف البرنامج.
الحل العملي: نستخدم Python 3.11 (أحدث إصدار مستقر متوافق) داخل بيئة افتراضية معزولة، ونحتفظ بـ Python 3.14 كافتراضي للنظام لباقي المهام.
⚡ الخطوة 1 — تثبيت Python Install Manager (PyManager)
PyManager هو الأداة الرسمية الجديدة من مايكروسوفت لإدارة إصدارات Python على Windows. هي الأنسب لإدارة عدة إصدارات على نفس الجهاز بدون تعارض. عندك طريقتان للتثبيت:
الطريقة الأولى: من Microsoft Store (واجهة رسومية)
- افتح Microsoft Store من قائمة Start.
- ابحث عن
Python Install Manager. - اضغط Get / Install وانتظر اكتمال التحميل.
الطريقة الثانية: من سطر الأوامر (الأسرع)
افتح PowerShell أو CMD كمسؤول (Run as Administrator) ونفّذ:
# تثبيت PyManager بأمر واحد عبر winget winget install 9P97S12CXL71 # بعد التثبيت، أغلق نافذة CMD وافتحها من جديد # للتأكد إن PyManager اشتغل، نفّذ: py help
PyManager يستبدل أمر py.exe القديم بنسخة محسّنة. لو عندك Python مثبت سابقاً بالطريقة التقليدية، PyManager هيتعامل معاه بدون تعارض ويضيف إصدارات جديدة بجانبه.
⚡ الخطوة 2 — استعراض الإصدارات المتاحة
قبل تثبيت Python 3.11، شوف الإصدارات المتاحة:
# عرض كل الإصدارات المتاحة للتثبيت من الإنترنت py list --online # عرض الإصدارات المثبتة بالفعل على جهازك py list # ابحث في القائمة عن أحدث إصدار 3.11.x # مثلاً: 3.11.9 (آخر إصدار مستقر من فرع 3.11)
⚡ الخطوة 3 — تثبيت Python 3.11
# تثبيت Python 3.11 (آخر إصدار مستقر) py install 3.11 # أو حدد إصدار دقيق py install 3.11.9 # تهيئة الإعدادات بعد أول تشغيل py install --configure # تأكد من نجاح التثبيت py -3.11 --version # المتوقع: Python 3.11.9
أمر py -3.11 يخبر PyManager: "نفّذ هذا الأمر باستخدام Python 3.11 تحديداً". أمر python العادي ينفذ الإصدار الافتراضي (3.14 في حالتنا). الفلاج -3.11 هو مفتاح العزل.
⚡ الخطوة 4 — اختيار مجلد العمل والانتقال إليه
قبل إنشاء البيئة الافتراضية، لازم نختار مجلد مناسب لمشروع Label Studio. تجنب وضع المشروع داخل C:\Windows\System32 (مجلد حساس).
الطريقة الأسهل: حيلة شريط العنوان
- افتح File Explorer (مستعرض الملفات).
- اذهب للمجلد اللي عاوز تحط فيه المشروع — مثلاً
D:\أوD:\MyProjects. - اضغط على شريط العنوان أعلى النافذة.
- امسح ما فيه واكتب
cmdثم اضغط Enter. - هتفتح نافذة CMD موجهة مباشرة إلى ذلك المجلد. وفّرت عليك كل أوامر التنقل!
الطريقة البديلة: التنقل بأمر cd
لو فضّلت التنقل من سطر الأوامر مباشرة:
# 1) الانتقال للمجلد الرئيسي للمستخدم (آمن) cd %userprofile% # 2) الانتقال لقرص D (لاحظ النقطتين بدون cd) D: # 3) إنشاء مجلد جديد للمشروع mkdir LabelStudioProject cd LabelStudioProject # 4) للتأكد من مكانك الحالي cd # المتوقع يطبع: D:\LabelStudioProject
لاحظ النص يسار العلامة > في CMD — هو ده مكانك الحالي. مثلاً:
D:\LabelStudioProject> = المشروع هيتحط في القرص D.
C:\Users\YourName> = المشروع هيتحط في مجلد المستخدم.
⚡ الخطوة 5 — إنشاء بيئة افتراضية بـ Python 3.11
دلوقتي وأنت في مجلد المشروع، أنشئ بيئة معزولة:
# 1) إنشاء البيئة الافتراضية باستخدام Python 3.11 py -3.11 -m venv ls_stable_env # 2) تنشيط البيئة (Windows) ls_stable_env\Scripts\activate # لاحظ ظهور (ls_stable_env) في بداية السطر # دي علامة إن البيئة شغالة # 3) للتأكد إن البيئة بتستخدم Python 3.11 python --version # المتوقع: Python 3.11.9 # 4) تحديث pip لآخر إصدار python -m pip install --upgrade pip
على Mac أو Linux، استخدم الأوامر التالية بدلاً من PyManager:
# macOS — استخدم Homebrew لتثبيت Python 3.11 brew install python@3.11 # Linux (Ubuntu/Debian) sudo apt update sudo apt install python3.11 python3.11-venv # إنشاء البيئة الافتراضية python3.11 -m venv ls_stable_env # التنشيط على Mac/Linux source ls_stable_env/bin/activate # التأكد من الإصدار python --version # المتوقع: Python 3.11.x
⚡ الخطوة 6 — تثبيت Label Studio داخل البيئة
تأكد إن البيئة مُنشّطة (شايف (ls_stable_env) في بداية السطر) ثم نفّذ:
# تثبيت Label Studio (هياخد 2-5 دقايق حسب سرعة الإنترنت) pip install label-studio # تأكد من التثبيت label-studio version # تشغيل Label Studio لأول مرة label-studio start # المتصفح هيفتح تلقائياً على: # http://localhost:8080
🔁 إعادة التشغيل لاحقاً
كل مرة تفتح المشروع من جديد، اتبع هذه الخطوات الـ 3 فقط:
# 1) افتح CMD في مجلد المشروع (حيلة شريط العنوان) # 2) نشّط البيئة ls_stable_env\Scripts\activate # 3) شغّل Label Studio label-studio start # للخروج من البيئة لاحقاً deactivate
🛠️ حل المشاكل الشائعة (Troubleshooting)
دي علامة إنك بتستخدم Python 3.14 أو أحدث. تأكد إن البيئة المُنشّطة تستخدم Python 3.11 بأمر python --version. لو الإصدار غلط، احذف مجلد ls_stable_env وأنشئه من جديد بـ py -3.11.
PyManager لم يُسجّل في PATH. أعد تشغيل الجهاز بعد التثبيت. لو استمرت المشكلة، أعد تثبيته من Microsoft Store.
على PowerShell، الـ Execution Policy ممكن تمنع تشغيل ملف activate. الحل: استخدم CMD بدلاً من PowerShell، أو نفّذ كمسؤول:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
لو ظهر خطأ "Port 8080 is already in use"، شغّل Label Studio على منفذ تاني:
label-studio start --port 8090
قبل ما تنتقل لقسم Label Studio التفصيلي، تأكد إن:
☑ PyManager مثبت ويعمل (py help)
☑ Python 3.11 مثبت (py -3.11 --version)
☑ البيئة الافتراضية مُنشّطة (شايف (ls_stable_env) في CMD)
☑ Label Studio يفتح بنجاح على http://localhost:8080
دليل Label Studio التفصيلي
الأداة الأشمل والأكثر مرونة في السوق. مجانية ومفتوحة المصدر، تعمل في المتصفح، وتدعم النصوص والصور والصوت والفيديو. هنشرحها من التثبيت إلى التصدير خطوة بخطوة.
Label Studio
by HumanSignal · v1.13+أداة موحدة لكل أنواع التصنيف في مشروع واحد: NER, Sentiment, Classification, Relations, Image, Audio. مثالية للفرق الكبيرة والمشاريع الاحترافية.
⚡ الخطوة 1 — التثبيت
لو إنت على Windows ولسّه ما جهّزتش البيئة، ارجع لقسم تجهيز البيئة (Python 3.11) أولاً. الأوامر التالية تفترض إنك في بيئة Python 3.11 مُنشّطة.
عندك ٣ طرق لتثبيت Label Studio. اختر اللي يناسبك:
الطريقة الأولى: pip (الأسرع)
# تأكد إن عندك Python 3.11 (مش 3.14) python --version # أنشئ بيئة افتراضية بـ Python 3.11 تحديداً py -3.11 -m venv labelstudio_env # Windows python3.11 -m venv labelstudio_env # Linux/Mac # تنشيط البيئة labelstudio_env\Scripts\activate # Windows source labelstudio_env/bin/activate # Linux/Mac # ثبّت Label Studio pip install label-studio # شغّله — هيفتح في المتصفح تلقائياً label-studio start
الطريقة الثانية: Docker (الأنسب للفرق)
# سحب الصورة وتشغيلها في خطوة واحدة docker run -it -p 8080:8080 \ -v $(pwd)/mydata:/label-studio/data \ heartexlabs/label-studio:latest # ثم افتح في المتصفح: # http://localhost:8080
الطريقة الثالثة: السحابة (بدون تثبيت)
روح على labelstud.io واستخدم النسخة السحابية. مناسب لو مش عاوز تثبت حاجة على جهازك.
⚡ الخطوة 2 — الدخول الأول وإنشاء حساب
-
افتح المتصفح
روح على
http://localhost:8080هتظهر صفحة Sign Up. - سجّل حساب جديد أدخل Email + Password. (الحساب محلي على جهازك مش على الإنترنت).
-
دخول لوحة التحكم
هتلاقي قائمة Projects فاضية — اضغط
Create Project.
⚡ الخطوة 3 — إنشاء أول مشروع NER
-
Project Name
مثلاً:
Arabic_Legal_NER_v1. سمّي مشروعك بطريقة تعكس المحتوى والإصدار. - Data Import ارفع ملف TXT أو CSV أو JSON. كل سطر = جملة منفصلة هتصنّفها.
-
Labeling Setup
اختر قالب جاهز:
Named Entity Recognitionمن قسم Natural Language Processing. -
تخصيص Labels
احذف Labels الافتراضية (PER, ORG, LOC) وحطّ بتاعتك. لو نص قانوني:
PER, ORG, LAW, DATE, MONEY, COURT. - Save Project اضغط Save — هتدخل صفحة Tasks الفاضية اللي فيها كل الجمل المرفوعة.
⚡ الخطوة 4 — تخصيص XML Config
Label Studio بيستخدم XML بسيط لتعريف الواجهة. ده مثال جاهز لتصنيف NER عربي مع 6 Labels:
<View> <Labels name="label" toName="text"> <Label value="PER" background="#FFB830"/> <Label value="ORG" background="#00F0FF"/> <Label value="LOC" background="#4ADE80"/> <Label value="DATE" background="#8B5CFF"/> <Label value="MONEY" background="#FF8C42"/> <Label value="LAW" background="#FF2BD6"/> </Labels> <!-- النص الذي سيتم تصنيفه --> <Text name="text" value="$text" granularity="word"/> </View>
استخدم خاصية granularity="word" عشان التحديد يبقى على مستوى الكلمة كاملة، مش حرف بحرف.
⚡ الخطوة 5 — التصنيف الفعلي
- افتح أول Task اضغط على أي صف في قائمة Tasks، هتفتح صفحة التصنيف.
- اختر Label اضغط على Label من اليمين (مثلاً PER) أو استخدم اختصار الكيبورد (1, 2, 3...).
- حدد النص بالماوس، اسحب على الكلمات اللي تنتمي لهذا Label. هتلاقيها اتلونت بلون Label.
-
Submit
لما تخلص الجملة، اضغط
Submit— هتروح للجملة التالية تلقائياً. -
اختصارات سريعة
Ctrl+Enterللحفظ،Ctrl+Zللتراجع،Escلإلغاء التحديد.
⚡ الخطوة 6 — إضافة فريق تصنيف (للحساب IAA)
- Settings → Members من إعدادات المشروع، اضغط Members ثم Invite.
- اختر دور المستخدم Annotator (يصنّف فقط) أو Reviewer (يراجع) أو Manager (يدير المشروع).
-
تفعيل Multiple Annotations
من Settings → Quality، فعّل خيار
Overlap of annotationsوحدد عدد المصنّفين لكل Task (مثلاً 2 أو 3). - تشغيل IAA Calculation Label Studio بيحسب Cohen's Kappa تلقائياً ويعرض النتيجة في Dashboard.
⚡ الخطوة 7 — Pre-labeling بـ ML Backend
أقوى ميزة في Label Studio: ربط نموذج spaCy/HuggingFace ليصنّف تلقائياً قبل المراجعة البشرية. ده يوفر 60% من وقت التصنيف.
# 1. ثبّت Label Studio ML SDK pip install label-studio-ml # 2. أنشئ ML Backend جديد بـ spaCy label-studio-ml init my_ner_backend \ --script /path/to/spacy_ner.py # 3. شغّل الـ Backend label-studio-ml start my_ner_backend # 4. اربطه بـ Label Studio: # Project Settings → Machine Learning → Add Model # URL: http://localhost:9090
⚡ الخطوة 8 — تصدير البيانات المصنّفة
Label Studio يدعم 9+ صيغ تصدير. الأكثر استخداماً للمترجمين:
JSON
الأشمل — كل البيانات مع الـ metadata.
Export → JSON
JSONL
كل جملة في سطر — مثالي للـ NLP pipelines.
Export → JSON-MIN
CoNLL 2003
المعيار الأكاديمي للـ NER. يعمل مع spaCy/HF مباشرة.
Export → CONLL2003
CSV
للتحليل في Excel أو Pandas.
Export → CSV
COCO / YOLO
لتصنيف الصور (لو شغال على OCR).
Export → COCO
Pascal VOC
صيغة قديمة لكن مدعومة في معظم Frameworks.
Export → Pascal VOC
💡 أهم النصائح لاستخدام Label Studio باحتراف
صنّف أول 50 جملة فقط، احسب Kappa، راجع Guidelines، ثم وسّع. لا ترفع 5000 جملة من البداية.
Label Studio فيه 30+ template جاهز: NER, Sentiment, Classification, Question Answering. ابدأ من Template ثم خصّصه — أسرع بكثير من البدء من الصفر.
كل Label له اختصار رقمي. خصّص الأرقام للـ Labels الأكثر استخداماً (1 = PER, 2 = ORG). يوفر 40% من وقت التصنيف.
كل أسبوع، صدّر JSON كامل واحفظه في GitHub أو Drive. Label Studio بيتعطل أحياناً وممكن تخسر شغل أيام.
Label Studio يدعم RTL لكن بعض القوالب الافتراضية مش متضبطة. أضف style="direction: rtl" في XML Config لو ظهر النص العربي معكوس.
اعتمد على Label Studio + Pre-labeling بـ spaCy كـ Standard Pipeline لكل مشاريعك. توفير الوقت + جودة عالية + قابلية التوسع.
دليل Doccano — الأفضل للعربية
أداة ويب مجانية مفتوحة المصدر، أبسط من Label Studio لكن أسرع للمشاريع الصغيرة والمتوسطة. دعمها للعربية والـ RTL ممتاز من خارج الصندوق.
Doccano
by doccano · Open Sourceيدعم: Sequence Labeling (NER), Text Classification, Sequence to Sequence (للترجمة), Image Captioning.
⚡ التثبيت السريع بـ Docker
# تشغيل Doccano في خطوة واحدة docker run -d --name doccano \ -e "ADMIN_USERNAME=admin" \ -e "ADMIN_EMAIL=admin@example.com" \ -e "ADMIN_PASSWORD=password" \ -p 8000:8000 \ doccano/doccano # افتح في المتصفح: http://localhost:8000 # Login: admin / password
⚡ التثبيت بـ pip
pip install doccano # إنشاء قاعدة البيانات doccano init # إنشاء مستخدم admin doccano createuser --username admin --password pass123 # تشغيل الخادم doccano webserver --port 8000
⚡ خطوات إنشاء مشروع NER عربي
- Create Project → اختر النوع
Sequence Labeling. - Project Name → مثلاً
Arabic News NER. - Random Order → فعّله لتجنب التحيز في التصنيف.
- Import Dataset → ارفع ملف TXT (كل سطر = جملة).
- Define Labels → أضف: شخص (مفتاح 1)، منظمة (مفتاح 2)، مكان (مفتاح 3)، تاريخ (مفتاح 4).
- Annotate → ابدأ التصنيف بضغط الأرقام + تحديد النص.
- Export → JSONL أو CoNLL.
💡 مميزات Doccano
- دعم العربية والـ RTL ممتاز من البداية.
- واجهة بسيطة — أسهل من Label Studio للمبتدئين.
- سرعة عالية في تصنيف Sequence Labeling.
- دعم متعدد المستخدمين مع إدارة الأدوار.
- API REST كامل للتكامل مع Python.
دليل Prodigy — الأسرع في السوق
الأداة المدفوعة الوحيدة في القائمة، من فريق spaCy. أسرع أداة تصنيف بفضل نظام Active Learning الذي يعرض لك أصعب الأمثلة أولاً.
Prodigy
by Explosion AI (spaCy team)تكامل مباشر مع spaCy — تصنّف وتدرّب نموذج في نفس البيئة. مثالي للمحترفين والشركات.
⚡ التثبيت
# تحتاج license key من prodigy.ai pip install prodigy -f https://YOUR_LICENSE_KEY@download.prodi.gy # تأكد من التثبيت prodigy stats
⚡ تصنيف نصوص مع Active Learning
# تصنيف نصوص باستخدام نموذج جاهز prodigy textcat.teach my_dataset en_core_web_lg \ ./data.jsonl --label LEGAL,MEDICAL,FINANCIAL # تصنيف NER على العربية prodigy ner.manual ar_ner_data ar_core_news_md \ ./arabic_texts.jsonl --label PER,ORG,LOC # تدريب النموذج مباشرة من البيانات المصنّفة prodigy train ./output --ner ar_ner_data \ --base-model ar_core_news_md
💡 لماذا Prodigy تستحق السعر؟
- Active Learning — يوفر 80% من وقت التصنيف.
- Custom Recipes بـ Python — كود قصير لكل سيناريو.
- تدريب فوري — صنّف ودرّب وقيّم في يوم واحد.
- واجهة بسيطة — قبول/رفض بضغطة واحدة.
دليل INCEpTION — للأبحاث الأكاديمية
منصة أكاديمية-احترافية متخصصة في التصنيف اللغوي المتقدم. الأفضل لو شغال على بحث ماجستير/دكتوراه أو مشروع يحتاج Knowledge Graph.
INCEpTION
by TU Darmstadt · Academicتدعم العلاقات بين الكيانات (Relation Extraction)، الربط بـ Wikidata و DBpedia، وتحليل الخطاب (Discourse Analysis).
⚡ التثبيت السريع
# INCEpTION يحتاج Java 11+ java --version # تنزيل آخر إصدار wget https://github.com/inception-project/inception/releases/latest/download/inception-app-standalone.jar # التشغيل java -jar inception-app-standalone.jar # افتح: http://localhost:8080
💡 مميزات INCEpTION
- NER + Relation Extraction في واجهة واحدة.
- ربط الكيانات بـ Wikidata و DBpedia تلقائياً.
- تصنيف الخطاب (Discourse Analysis) — متفرد بهذه الميزة.
- Active Learning مدمج.
- دعم كامل للعربية والـ RTL.
- الموقع الرسمي: inception-project.github.io
دليل BRAT — البسيط والسريع
أداة ويب خفيفة لتصنيف النصوص. تصدر ملفات .ann بجانب ملفات .txt النصية مباشرة. مثالية للبحث الأكاديمي.
BRAT Rapid Annotation Tool
by Stenetorp et al.⚡ التثبيت
# استنساخ المستودع git clone https://github.com/nlplab/brat.git cd brat # تشغيل سكربت التثبيت ./install.sh # تشغيل خادم Python بسيط python standalone.py # افتح: http://localhost:8001
💡 لماذا BRAT؟
- سهل جداً وبدون إعداد معقد.
- تصنيف NER + Relations بالماوس.
- ملفات .ann قابلة للقراءة بالعين (تنسيق نصي بسيط).
- مستخدم في معظم الأبحاث الأكاديمية منذ 2012.
- الموقع الرسمي: brat.nlplab.org
التصنيف البرمجي بـ Python
للمشاريع الكبيرة (10K+ جملة)، الجمع بين التصنيف اليدوي الدقيق و التصنيف الآلي السريع هو الحل الأمثل. هنستخدم spaCy و HuggingFace لـ Pre-labeling.
🔥 spaCy NER Pre-labeling (إنجليزي وعربي)
import spacy import json from pathlib import Path # تحميل النموذج nlp = spacy.load('en_core_web_sm') # للعربية: nlp = spacy.load('xx_ent_wiki_sm') # قراءة الملف النصي texts = Path('texts.txt').read_text(encoding='utf-8').splitlines() annotations = [] for text in texts: doc = nlp(text) ents = [(e.start_char, e.end_char, e.label_) for e in doc.ents] annotations.append({ 'text': text, 'entities': ents, 'status': 'pre-labeled' }) # تصدير للمراجعة في Label Studio with open('prelabeled.jsonl', 'w', encoding='utf-8') as f: for ann in annotations: f.write(json.dumps(ann, ensure_ascii=False) + '\n') print(f"✓ تم تصنيف {len(annotations)} جملة آلياً")
🔥 HuggingFace Zero-Shot Classification
from transformers import pipeline # تصنيف بدون تدريب مسبق — يدعم العربية classifier = pipeline( 'zero-shot-classification', model='joeddav/xlm-roberta-large-xnli' ) texts = [ 'The contract is null and void.', 'Payment was not received on time.', 'The patient shows symptoms of fever.', ] labels = ['legal', 'financial', 'medical', 'general'] for text in texts: result = classifier(text, labels) best_label = result['labels'][0] confidence = result['scores'][0] print(f"{text[:40]}...") print(f" → {best_label} ({confidence:.2%})")
🔥 تحليل المشاعر للعربية بـ CAMeL-BERT
from transformers import pipeline # نموذج عربي متخصص في تحليل المشاعر sentiment = pipeline( 'sentiment-analysis', model='CAMeL-Lab/bert-base-arabic-camelbert-msa-sentiment' ) arabic_texts = [ 'العقد ممتاز وشروطه عادلة', 'الخدمة سيئة جداً ولا أنصح بها', 'تم استلام البضاعة في الموعد', ] for text in arabic_texts: result = sentiment(text)[0] print(f"{text}") print(f" → {result['label']} ({result['score']:.2%})\n")
🔥 محاذاة كلمات (Word Alignment) بـ awesome-align
# pip install simalign from simalign import SentenceAligner # استخدام نموذج XLM-R متعدد اللغات aligner = SentenceAligner( model="xlm-roberta-base", token_type="bpe", matching_methods="mai" ) src = "The contract was signed yesterday".split() tgt = "تم توقيع العقد أمس".split() alignments = aligner.get_word_aligns(src, tgt) print("Alignments:", alignments['mwmf']) # Output: [(0, 2), (1, 2), (2, 0), (3, 1), (4, 3)]
خط سير التصنيف الاحترافي
من البيانات الخام إلى Dataset جاهز للتدريب — 7 مراحل.
صيغ تصدير البيانات المصنّفة
كل صيغة لها استخدامها. اختر الصيغة حسب الـ Framework اللي هتدرّب عليه نموذجك.
📄 JSONL (الأكثر مرونة)
{
"text": "Ahmed signed the contract.",
"entities": [
{"start": 0, "end": 5, "label": "PER"},
{"start": 17, "end": 25, "label": "LEGAL_DOC"}
],
"sentiment": "neutral",
"quality_label": "Good",
"annotator": "Sara.K",
"iaa_score": 0.87
}
📄 CoNLL 2003 (المعيار الأكاديمي)
Token POS Label ----------------------- Ahmed NNP B-PER signed VBD O the DT O contract NN B-LEGAL . . O The DT O court NN B-ORG ruled VBD O yesterday RB B-DATE . . O
JSONL → للتجارب السريعة و pipelines المخصصة.
CoNLL → لو هتستخدم spaCy أو HuggingFace Trainer مباشرة.
CSV → للتحليل في Excel أو Google Sheets.
Pascal VOC / COCO → لتصنيف الصور (OCR).
نصائح احترافية لمشاريع التصنيف
اعتمد على Pilot Study
صنّف 100 مثال أولاً، احسب IAA، راجع Guidelines قبل التوسع. لا تبدأ مشروع 10K بدون pilot.
استخدم Pre-labeling
وفّر 60% من الوقت بتصنيف مبدئي آلي بـ spaCy أو HuggingFace ثم راجع يدوياً.
وثّق كل قرار
اكتب سبب كل تصنيف غير واضح في Log منفصل — لإجابة الخلافات لاحقاً.
أعِد التدريب بانتظام
كل 1000 مثال جديد: أعد تدريب النموذج وافحص تحسّنه. لا تنتظر 10K كاملة.
بناء فريق متنوع
تنوع المصنّفين (جنس، عمر، خلفية) يرفع جودة IAA ويقلل التحيز المعرفي.
قس الجودة أولاً بأول
لا تنتظر نهاية المشروع — احسب Kappa بعد كل 100 مثال وعدّل Guidelines فوراً.
فرص العمل في سوق التصنيف
المترجم العربي مطلوب جداً في شركات AI العالمية بسبب ندرة المتخصصين في تصنيف اللغة العربية.
| الشركة | الأجر/ساعة | التخصص |
|---|---|---|
| Scale AI | $15–35 | تصنيف نصوص متنوعة |
| Appen | $10–25 | مشاريع NLP العربية |
| Lionbridge AI | $12–28 | مراجعة وتصنيف مستمر |
| Amazon MTurk | حسب المهمة | مشاريع متنوعة |
| DataAnnotation.tech | $20–40 | متخصصي NLP |
| Outlier AI | $15–50 | تدريب LLMs بالعربية |
قبل التقديم لأي شركة، ابني Portfolio من 3 مشاريع تصنيف على GitHub: مشروع NER، مشروع Sentiment، ومشروع Translation Quality. التدريبات الـ 5 في هذه المحاضرة تبدأ بناء Portfolio حقيقي.
التدريبات العملية
5 تدريبات من سيناريوهات شركات الترجمة الحقيقية. كل تدريب يضيف قطعة لـ Portfolio احترافي.
تدريب 1: تصنيف NER على نصوص قانونية
- ثبّت Label Studio:
pip install label-studioثمlabel-studio start. - أنشئ مشروعاً جديداً واختر قالب
Named Entity Recognition. - حدد 6 Labels:
PER, ORG, LOC, DATE, MONEY, LAW. - حمّل 50 جملة من
dirty_corpus_02_legal_contracts.txtكملف TXT. - صنّف 30 جملة يدوياً مميزاً كل كيان باللون المناسب.
- صدّر النتائج بصيغة JSONL واحسب عدد كل نوع كيان.
- اكتب Guidelines بصفحة واحدة توضح متى تُصنّف ومتى لا تُصنّف.
تدريب 2: تصنيف جودة ترجمة (MQM) بـ Label Studio
- أنشئ مشروع
Classificationفي Label Studio. - حدد 4 Labels:
Good / Acceptable / Terminology_Error / Accuracy_Error. - حمّل 40 زوج ترجمة من
dirty_csv_01_translation_memory.csv. - صنّف 25 زوجاً وفق MQM مع كتابة تعليق قصير لكل خطأ مكتشف.
- احسب توزع Labels: كم Good؟ كم Terminology_Error؟
- أرسل نفس الـ 10 جمل لزميل وقارن التصنيفات (IAA).
- احسب Cohen's Kappa يدوياً أو بـ
sklearn.metrics.cohen_kappa_score.
تدريب 3: تصنيف NER العربي بـ Doccano + Python
- شغّل Doccano:
docker run -p 8000:8000 doccano/doccano. - أنشئ مشروع
Sequence Labelingبـ Labels: شخص, مكان, منظمة, تاريخ. - اكتب سكربت Python يحول
dirty_corpus_04_news_bilingual.txtللعربية فقط. - ارفع 50 جملة عربية إلى Doccano وصنّفها يدوياً.
- استخدم spaCy Pre-labeling لتصنيف 200 جملة إضافية تلقائياً.
- راجع التصنيف الآلي وصحّح الأخطاء في Doccano.
- صدّر بصيغة JSONL وقيّم الدقة: كم خطأ صحّحت في التصنيف الآلي؟
تدريب 4: Sentiment Analysis لتقييم جودة ذاكرة ترجمة
- استخدم HuggingFace:
pipeline('zero-shot-classification'). - صنّف 50 جملة مصدر EN من
dirty_csv_01على Labels:Positive, Neutral, Negative. - صنّف ترجماتها العربية بنموذج
CAMeL-Lab/bert-base-arabic-camelbert. - قارن تصنيف المصدر بتصنيف الهدف — الاختلاف = Tone Shift.
- ضع علامة
Tone_Errorعلى الأزواج التي تختلف فيها النبرة. - أنشئ تقريراً يحدد: كم زوج غيّر النبرة؟ ما السبب المحتمل؟
- اكتب توصيات: أي نوع من الجمل أكثر عرضة للـ Tone Shift؟
واجب 5: مشروع تصنيف متكامل من الصفر
- اختر 200 جملة من
dirty_corpus_03_medical_clinical.txtونظّفها. - صمّم نظام Labels: Entity (مرض/دواء/إجراء/جرعة) + Quality (صحيح/خاطئ/غير كامل).
- ثبّت Label Studio وأنشئ مشروعاً مزدوج التصنيف (NER + Classification).
- اكتب Guidelines شاملة (صفحتان) مع أمثلة DO/DON'T لكل Label.
- طبّق Pre-labeling بـ spaCy ثم راجع وصحّح في Label Studio.
- شارك مصنّفاً آخر وأعطِه نفس 30 جملة — احسب Cohen's Kappa.
- صدّر بصيغة JSONL + CoNLL + تقرير README.md + IAA كامل.
مقارنة الأدوات — أي أداة تختار؟
| الأداة | السعر | أنواع التصنيف | متى تستخدمها؟ |
|---|---|---|---|
| Label Studio | مجاني | NER, Sentiment, Class, Relation | الأفضل للمشاريع الكبيرة والفرق |
| Doccano | مجاني | NER, Class, Seq2Seq | الأفضل للعربية والفرق الصغيرة |
| INCEpTION | مجاني | NER, Relation, Discourse | الأفضل للأبحاث الأكاديمية |
| BRAT | مجاني | NER, Relations | الأبسط للمبتدئين والمشاريع الصغيرة |
| Prodigy | مدفوع | NER, Class, NLP tasks | الأسرع مع Active Learning |
| Python + spaCy | مجاني | كل أنواع التصنيف | للتصنيف الآلي والـ Pre-labeling |
المبتدئ: ابدأ بـ Doccano — أسهل أداة وعربية ممتازة.
المحترف: Label Studio + spaCy Pre-labeling — Standard Pipeline لكل مشروع كبير.
الباحث الأكاديمي: INCEpTION — Knowledge Graphs و Discourse Analysis.
ملخص المحاضرة
⭐ نقطة 1
تصنيف البيانات هو المهارة الأعلى طلباً وأجراً في سوق AI للمترجمين.
⭐ نقطة 2
NER, Sentiment, Translation Quality, Word Alignment هي أهم أنواع التصنيف.
⭐ نقطة 3
IAA و Cohen's Kappa يقيسان جودة التصنيف — الهدف دائماً > 0.80.
⭐ نقطة 4
Label Studio و Doccano هما الأفضل للبدء (مجانيان ويدعمان العربية).
⭐ نقطة 5
spaCy + HuggingFace Pre-labeling يوفران 60% من وقت التصنيف.
⭐ نقطة 6
كل تدريب في هذه المحاضرة يُضيف قطعة إلى Portfolio احترافي حقيقي.