مساعد Motrjim الذكي
MOTRJIM ACADEMY · LECTURE 04

تصنيف البيانات للمترجمين

Data Annotation for Translators & AI Training — كل أدوات التصنيف، خطوة بخطوة، مع شرح Label Studio من الصفر

المحاضرة الرابعة · الجزء الثاني دبلومة هندسة اللغويات وتدريب الذكاء الاصطناعي Prof. Yassin Ibrahim
// 01 — DEFINITION

ما هو تصنيف البيانات؟

تصنيف البيانات (Data Annotation) هو عملية إضافة علامات (Labels) وتفسيرات لبيانات خام بهدف تعليم نموذج ذكاء اصطناعي كيف يفهم اللغة ويتخذ القرارات الصحيحة. هو الجسر بين النص العادي ونموذج AI ذكي.

90%
من بيانات تدريب AI تحتاج تصنيف
$5B
حجم سوق التصنيف عالمياً
أجر المصنّف العربي مقارنة بالترجمة العادية
📝

في شركات الترجمة

تصنيف الالتزامات والأسلوب والمصطلحات في ملفات الترجمة لبناء ذاكرات ذكية.

🤖

في تدريب AI

إخبار النموذج بالكلمات التي تمثل اسم شخص، مكان، تعبير إيجابي أو سلبي.

💼

للمترجم المحترف

مهارة تضاعف دخلك — شركات AI تدفع مقابل التصنيف باللغة العربية أكثر بكثير من الترجمة العادية.

// 02 — WHY IT MATTERS

لماذا التصنيف ضروري؟

القاعدة الذهبية

بدون تصنيف دقيق، يتعلم نموذج AI ترجمة "مكتب" كـ "table" دائماً — مع تصنيف صحيح يفهم الفرق بين desk و office و department.

🎯 تحسين جودة الترجمة الآلية

بيانات مُصنَّفة = نموذج يميز السياق والمعنى = ترجمة أدق لكل مجال.

🔁 توحيد المصطلحات تلقائياً

التصنيف يُعلّم AI استخدام نفس المصطلح في كل موضع، بنفس الأسلوب.

✅ بناء نماذج QA ذكية

نموذج يراجع الترجمة ويكتشف الأخطاء قبل التسليم للعميل.

💰 زيادة دخل المترجم

Data Annotator مطلوب بشدة في سوق AI بساعات مرنة وراتب مجزٍ.

📚 بناء قواعد بيانات معرفية

معرفة المصطلح + السياق + الصواب = مرجع لغوي لا يُقدر بثمن.

🌐 المنافسة في سوق NLP

المترجم الذي يفهم التصنيف يعمل مع شركات Google, Microsoft, Amazon.

// 03 — ANNOTATION TYPES

أنواع التصنيف التي يحتاجها المترجم

ست فئات رئيسية تغطي كل احتياجات شركات الترجمة وتدريب AI.

🏷️ NER — Named Entity Recognition

تصنيف أسماء الأشخاص والأماكن والمنظمات.

مثال Person: Ahmed | Org: Microsoft | Loc: Cairo

😊 Sentiment — تحليل المشاعر

تصنيف النص كـ إيجابي / سلبي / محايد. مفيد لتقييم نبرة الترجمة.

مثال "العقد ممتاز" → Positive ✓

🔤 POS — Part of Speech

تصنيف كل كلمة نحوياً.

مثال Verb / Noun / Adj / Adv / Prep

🔗 Coref — حل الضمائر

تحديد ما تشير إليه الضمائر في النص.

مثال 'he' → Ahmed, 'it' → the contract

↔️ Translation Alignment

ربط كل كلمة مصدر بمقابلها في الهدف + تصنيف الجودة.

مثال Word Alignment + Quality Labels

📑 Sequence — تصنيف التسلسلات

تقسيم النص لجمل/فقرات وتصنيف كل وحدة حسب المجال أو الأسلوب.

مثال Legal / Medical / Marketing

🔍 تطبيق عملي: تصنيف NER

جملة قبل التصنيف:

"Ahmed Hassan, CEO of Cairo Bank, signed the $2M contract on March 15 in New York."

بعد التصنيف:

الكيانالنوعالتصنيف
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 ✗
// 04 — QUALITY METRICS

معايير الجودة: IAA & Cohen's Kappa

IAA = Inter-Annotator Agreement: نسبة الاتفاق بين مصنّفَين مختلفَين على نفس البيانات. كلما ارتفع، كلما كان التصنيف أكثر موثوقية وصلاحية للتدريب.

تفسير قيمة Cohen's Kappa (κ)

> 0.80
ممتاز — بيانات جاهزة للتدريب مباشرة
0.61 – 0.80
جيد جداً — يمكن الاستخدام مع مراجعة خفيفة
0.41 – 0.60
متوسط — مراجعة مطلوبة قبل التدريب
0.21 – 0.40
ضعيف — إعادة التصنيف ضرورية
< 0.20
سيئ — راجع الإرشادات (Guidelines) فوراً

حساب Kappa بـ Python

cohen_kappa.py
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.

// 04.5 — ENVIRONMENT SETUP

تجهيز البيئة: تثبيت Python 3.11

قبل تثبيت Label Studio، لازم نتجهز ببيئة Python سليمة. هذه الخطوة مهمة جداً ولو تخطيتها هتقابل أخطاء غريبة لاحقاً.

// لماذا Python 3.11 وليس الأحدث؟

إصدار 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 (واجهة رسومية)

  1. افتح Microsoft Store من قائمة Start.
  2. ابحث عن Python Install Manager.
  3. اضغط Get / Install وانتظر اكتمال التحميل.

الطريقة الثانية: من سطر الأوامر (الأسرع)

افتح PowerShell أو CMD كمسؤول (Run as Administrator) ونفّذ:

PowerShell — Admin
# تثبيت PyManager بأمر واحد عبر winget
winget install 9P97S12CXL71

# بعد التثبيت، أغلق نافذة CMD وافتحها من جديد
# للتأكد إن PyManager اشتغل، نفّذ:
py help
// ملاحظة مهمة

PyManager يستبدل أمر py.exe القديم بنسخة محسّنة. لو عندك Python مثبت سابقاً بالطريقة التقليدية، PyManager هيتعامل معاه بدون تعارض ويضيف إصدارات جديدة بجانبه.

⚡ الخطوة 2 — استعراض الإصدارات المتاحة

قبل تثبيت Python 3.11، شوف الإصدارات المتاحة:

CMD / PowerShell
# عرض كل الإصدارات المتاحة للتثبيت من الإنترنت
py list --online

# عرض الإصدارات المثبتة بالفعل على جهازك
py list

# ابحث في القائمة عن أحدث إصدار 3.11.x
# مثلاً: 3.11.9 (آخر إصدار مستقر من فرع 3.11)

⚡ الخطوة 3 — تثبيت Python 3.11

CMD / PowerShell
# تثبيت 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 وليس python؟

أمر py -3.11 يخبر PyManager: "نفّذ هذا الأمر باستخدام Python 3.11 تحديداً". أمر python العادي ينفذ الإصدار الافتراضي (3.14 في حالتنا). الفلاج -3.11 هو مفتاح العزل.

⚡ الخطوة 4 — اختيار مجلد العمل والانتقال إليه

قبل إنشاء البيئة الافتراضية، لازم نختار مجلد مناسب لمشروع Label Studio. تجنب وضع المشروع داخل C:\Windows\System32 (مجلد حساس).

الطريقة الأسهل: حيلة شريط العنوان

  1. افتح File Explorer (مستعرض الملفات).
  2. اذهب للمجلد اللي عاوز تحط فيه المشروع — مثلاً D:\ أو D:\MyProjects.
  3. اضغط على شريط العنوان أعلى النافذة.
  4. امسح ما فيه واكتب cmd ثم اضغط Enter.
  5. هتفتح نافذة CMD موجهة مباشرة إلى ذلك المجلد. وفّرت عليك كل أوامر التنقل!

الطريقة البديلة: التنقل بأمر cd

لو فضّلت التنقل من سطر الأوامر مباشرة:

CMD — Navigation
# 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

دلوقتي وأنت في مجلد المشروع، أنشئ بيئة معزولة:

CMD — Inside project folder
# 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
// لمستخدمي macOS / Linux

على Mac أو Linux، استخدم الأوامر التالية بدلاً من PyManager:

macOS / Linux — Terminal
# 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) في بداية السطر) ثم نفّذ:

CMD — Inside activated env
# تثبيت Label Studio (هياخد 2-5 دقايق حسب سرعة الإنترنت)
pip install label-studio

# تأكد من التثبيت
label-studio version

# تشغيل Label Studio لأول مرة
label-studio start

# المتصفح هيفتح تلقائياً على:
# http://localhost:8080

🔁 إعادة التشغيل لاحقاً

كل مرة تفتح المشروع من جديد، اتبع هذه الخطوات الـ 3 فقط:

Daily Workflow
# 1) افتح CMD في مجلد المشروع (حيلة شريط العنوان)

# 2) نشّط البيئة
ls_stable_env\Scripts\activate

# 3) شغّل Label Studio
label-studio start

# للخروج من البيئة لاحقاً
deactivate

🛠️ حل المشاكل الشائعة (Troubleshooting)

// خطأ: ImportError: cannot import name 'find_loader'

دي علامة إنك بتستخدم Python 3.14 أو أحدث. تأكد إن البيئة المُنشّطة تستخدم Python 3.11 بأمر python --version. لو الإصدار غلط، احذف مجلد ls_stable_env وأنشئه من جديد بـ py -3.11.

// خطأ: 'py' is not recognized as an internal or external command

PyManager لم يُسجّل في PATH. أعد تشغيل الجهاز بعد التثبيت. لو استمرت المشكلة، أعد تثبيته من Microsoft Store.

// خطأ: cannot be loaded because running scripts is disabled

على PowerShell، الـ Execution Policy ممكن تمنع تشغيل ملف activate. الحل: استخدم CMD بدلاً من PowerShell، أو نفّذ كمسؤول:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

// المنفذ 8080 مشغول

لو ظهر خطأ "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

// 05 — TOOL #1 : LABEL STUDIO

دليل 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 (الأسرع)

terminal — bash
# تأكد إن عندك 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 (الأنسب للفرق)

terminal — docker
# سحب الصورة وتشغيلها في خطوة واحدة
docker run -it -p 8080:8080 \
  -v $(pwd)/mydata:/label-studio/data \
  heartexlabs/label-studio:latest

# ثم افتح في المتصفح:
# http://localhost:8080

الطريقة الثالثة: السحابة (بدون تثبيت)

// CLOUD OPTION

روح على labelstud.io واستخدم النسخة السحابية. مناسب لو مش عاوز تثبت حاجة على جهازك.

⚡ الخطوة 2 — الدخول الأول وإنشاء حساب

  1. افتح المتصفح روح على http://localhost:8080 هتظهر صفحة Sign Up.
  2. سجّل حساب جديد أدخل Email + Password. (الحساب محلي على جهازك مش على الإنترنت).
  3. دخول لوحة التحكم هتلاقي قائمة Projects فاضية — اضغط Create Project.

⚡ الخطوة 3 — إنشاء أول مشروع NER

  1. Project Name مثلاً: Arabic_Legal_NER_v1. سمّي مشروعك بطريقة تعكس المحتوى والإصدار.
  2. Data Import ارفع ملف TXT أو CSV أو JSON. كل سطر = جملة منفصلة هتصنّفها.
  3. Labeling Setup اختر قالب جاهز: Named Entity Recognition من قسم Natural Language Processing.
  4. تخصيص Labels احذف Labels الافتراضية (PER, ORG, LOC) وحطّ بتاعتك. لو نص قانوني: PER, ORG, LAW, DATE, MONEY, COURT.
  5. Save Project اضغط Save — هتدخل صفحة Tasks الفاضية اللي فيها كل الجمل المرفوعة.

⚡ الخطوة 4 — تخصيص XML Config

Label Studio بيستخدم XML بسيط لتعريف الواجهة. ده مثال جاهز لتصنيف NER عربي مع 6 Labels:

labeling-config.xml
<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>
// PRO TIP

استخدم خاصية granularity="word" عشان التحديد يبقى على مستوى الكلمة كاملة، مش حرف بحرف.

⚡ الخطوة 5 — التصنيف الفعلي

  1. افتح أول Task اضغط على أي صف في قائمة Tasks، هتفتح صفحة التصنيف.
  2. اختر Label اضغط على Label من اليمين (مثلاً PER) أو استخدم اختصار الكيبورد (1, 2, 3...).
  3. حدد النص بالماوس، اسحب على الكلمات اللي تنتمي لهذا Label. هتلاقيها اتلونت بلون Label.
  4. Submit لما تخلص الجملة، اضغط Submit — هتروح للجملة التالية تلقائياً.
  5. اختصارات سريعة Ctrl+Enter للحفظ، Ctrl+Z للتراجع، Esc لإلغاء التحديد.

⚡ الخطوة 6 — إضافة فريق تصنيف (للحساب IAA)

  1. Settings → Members من إعدادات المشروع، اضغط Members ثم Invite.
  2. اختر دور المستخدم Annotator (يصنّف فقط) أو Reviewer (يراجع) أو Manager (يدير المشروع).
  3. تفعيل Multiple Annotations من Settings → Quality، فعّل خيار Overlap of annotations وحدد عدد المصنّفين لكل Task (مثلاً 2 أو 3).
  4. تشغيل IAA Calculation Label Studio بيحسب Cohen's Kappa تلقائياً ويعرض النتيجة في Dashboard.

⚡ الخطوة 7 — Pre-labeling بـ ML Backend

أقوى ميزة في Label Studio: ربط نموذج spaCy/HuggingFace ليصنّف تلقائياً قبل المراجعة البشرية. ده يوفر 60% من وقت التصنيف.

setup_ml_backend.sh
# 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 باحتراف

// TIP 01 — ابدأ صغير

صنّف أول 50 جملة فقط، احسب Kappa، راجع Guidelines، ثم وسّع. لا ترفع 5000 جملة من البداية.

// TIP 02 — Templates جاهزة

Label Studio فيه 30+ template جاهز: NER, Sentiment, Classification, Question Answering. ابدأ من Template ثم خصّصه — أسرع بكثير من البدء من الصفر.

// TIP 03 — استخدم Hotkeys

كل Label له اختصار رقمي. خصّص الأرقام للـ Labels الأكثر استخداماً (1 = PER, 2 = ORG). يوفر 40% من وقت التصنيف.

// TIP 04 — احفظ النسخ بانتظام

كل أسبوع، صدّر JSON كامل واحفظه في GitHub أو Drive. Label Studio بيتعطل أحياناً وممكن تخسر شغل أيام.

// WARNING — العربية و RTL

Label Studio يدعم RTL لكن بعض القوالب الافتراضية مش متضبطة. أضف style="direction: rtl" في XML Config لو ظهر النص العربي معكوس.

// BEST PRACTICE

اعتمد على Label Studio + Pre-labeling بـ spaCy كـ Standard Pipeline لكل مشاريعك. توفير الوقت + جودة عالية + قابلية التوسع.

// 06 — TOOL #2 : DOCCANO

دليل Doccano — الأفضل للعربية

أداة ويب مجانية مفتوحة المصدر، أبسط من Label Studio لكن أسرع للمشاريع الصغيرة والمتوسطة. دعمها للعربية والـ RTL ممتاز من خارج الصندوق.

Doccano

by doccano · Open Source
مجاني

يدعم: Sequence Labeling (NER), Text Classification, Sequence to Sequence (للترجمة), Image Captioning.

⚡ التثبيت السريع بـ Docker

terminal — 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

terminal — pip
pip install doccano

# إنشاء قاعدة البيانات
doccano init

# إنشاء مستخدم admin
doccano createuser --username admin --password pass123

# تشغيل الخادم
doccano webserver --port 8000

⚡ خطوات إنشاء مشروع NER عربي

  1. Create Project → اختر النوع Sequence Labeling.
  2. Project Name → مثلاً Arabic News NER.
  3. Random Order → فعّله لتجنب التحيز في التصنيف.
  4. Import Dataset → ارفع ملف TXT (كل سطر = جملة).
  5. Define Labels → أضف: شخص (مفتاح 1)، منظمة (مفتاح 2)، مكان (مفتاح 3)، تاريخ (مفتاح 4).
  6. Annotate → ابدأ التصنيف بضغط الأرقام + تحديد النص.
  7. Export → JSONL أو CoNLL.

💡 مميزات Doccano

  • دعم العربية والـ RTL ممتاز من البداية.
  • واجهة بسيطة — أسهل من Label Studio للمبتدئين.
  • سرعة عالية في تصنيف Sequence Labeling.
  • دعم متعدد المستخدمين مع إدارة الأدوار.
  • API REST كامل للتكامل مع Python.
// 07 — TOOL #3 : PRODIGY

دليل Prodigy — الأسرع في السوق

الأداة المدفوعة الوحيدة في القائمة، من فريق spaCy. أسرع أداة تصنيف بفضل نظام Active Learning الذي يعرض لك أصعب الأمثلة أولاً.

Prodigy

by Explosion AI (spaCy team)
مدفوع · $390 (ترخيص دائم)

تكامل مباشر مع spaCy — تصنّف وتدرّب نموذج في نفس البيئة. مثالي للمحترفين والشركات.

⚡ التثبيت

terminal — pip
# تحتاج license key من prodigy.ai
pip install prodigy -f https://YOUR_LICENSE_KEY@download.prodi.gy

# تأكد من التثبيت
prodigy stats

⚡ تصنيف نصوص مع Active Learning

terminal — prodigy
# تصنيف نصوص باستخدام نموذج جاهز
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 — كود قصير لكل سيناريو.
  • تدريب فوري — صنّف ودرّب وقيّم في يوم واحد.
  • واجهة بسيطة — قبول/رفض بضغطة واحدة.
// 08 — TOOL #4 : INCEpTION

دليل INCEpTION — للأبحاث الأكاديمية

منصة أكاديمية-احترافية متخصصة في التصنيف اللغوي المتقدم. الأفضل لو شغال على بحث ماجستير/دكتوراه أو مشروع يحتاج Knowledge Graph.

INCEpTION

by TU Darmstadt · Academic
مجاني · مفتوح المصدر

تدعم العلاقات بين الكيانات (Relation Extraction)، الربط بـ Wikidata و DBpedia، وتحليل الخطاب (Discourse Analysis).

⚡ التثبيت السريع

terminal — bash
# 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
// 09 — TOOL #5 : BRAT

دليل BRAT — البسيط والسريع

أداة ويب خفيفة لتصنيف النصوص. تصدر ملفات .ann بجانب ملفات .txt النصية مباشرة. مثالية للبحث الأكاديمي.

BRAT Rapid Annotation Tool

by Stenetorp et al.
مجاني · مفتوح المصدر

⚡ التثبيت

terminal — bash
# استنساخ المستودع
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
// 10 — PROGRAMMATIC ANNOTATION

التصنيف البرمجي بـ Python

للمشاريع الكبيرة (10K+ جملة)، الجمع بين التصنيف اليدوي الدقيق و التصنيف الآلي السريع هو الحل الأمثل. هنستخدم spaCy و HuggingFace لـ Pre-labeling.

🔥 spaCy NER Pre-labeling (إنجليزي وعربي)

spacy_pre_label.py
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

huggingface_zero_shot.py
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

arabic_sentiment.py
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

word_alignment.py
# 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)]
// 11 — WORKFLOW

خط سير التصنيف الاحترافي

من البيانات الخام إلى Dataset جاهز للتدريب — 7 مراحل.

STEP 01
البيانات
جمع وتنظيف النصوص
STEP 02
الإرشادات
Guidelines + أمثلة
STEP 03
Pre-label
spaCy / HuggingFace
STEP 04
التصنيف
Label Studio / Doccano
STEP 05
المراجعة
Cohen's Kappa > 0.80
STEP 06
التصحيح
حسم الخلافات
STEP 07
التصدير
JSONL / CoNLL / CSV
// 12 — EXPORT FORMATS

صيغ تصدير البيانات المصنّفة

كل صيغة لها استخدامها. اختر الصيغة حسب الـ Framework اللي هتدرّب عليه نموذجك.

📄 JSONL (الأكثر مرونة)

labeled_data.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 (المعيار الأكاديمي)

labeled_data.conll
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
// FORMAT GUIDE

JSONL → للتجارب السريعة و pipelines المخصصة.
CoNLL → لو هتستخدم spaCy أو HuggingFace Trainer مباشرة.
CSV → للتحليل في Excel أو Google Sheets.
Pascal VOC / COCO → لتصنيف الصور (OCR).

// 13 — PRO TIPS

نصائح احترافية لمشاريع التصنيف

🧪

اعتمد على Pilot Study

صنّف 100 مثال أولاً، احسب IAA، راجع Guidelines قبل التوسع. لا تبدأ مشروع 10K بدون pilot.

استخدم Pre-labeling

وفّر 60% من الوقت بتصنيف مبدئي آلي بـ spaCy أو HuggingFace ثم راجع يدوياً.

📝

وثّق كل قرار

اكتب سبب كل تصنيف غير واضح في Log منفصل — لإجابة الخلافات لاحقاً.

🔄

أعِد التدريب بانتظام

كل 1000 مثال جديد: أعد تدريب النموذج وافحص تحسّنه. لا تنتظر 10K كاملة.

👥

بناء فريق متنوع

تنوع المصنّفين (جنس، عمر، خلفية) يرفع جودة IAA ويقلل التحيز المعرفي.

📊

قس الجودة أولاً بأول

لا تنتظر نهاية المشروع — احسب Kappa بعد كل 100 مثال وعدّل Guidelines فوراً.

// 14 — CAREER OPPORTUNITIES

فرص العمل في سوق التصنيف

المترجم العربي مطلوب جداً في شركات 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 TIP

قبل التقديم لأي شركة، ابني Portfolio من 3 مشاريع تصنيف على GitHub: مشروع NER، مشروع Sentiment، ومشروع Translation Quality. التدريبات الـ 5 في هذه المحاضرة تبدأ بناء Portfolio حقيقي.

// 15 — HANDS-ON EXERCISES

التدريبات العملية

5 تدريبات من سيناريوهات شركات الترجمة الحقيقية. كل تدريب يضيف قطعة لـ Portfolio احترافي.

تدريب 1: تصنيف NER على نصوص قانونية

السيناريو: شركة ترجمة قانونية تريد بناء نموذج NER لاكتشاف الكيانات في العقود تلقائياً.
  1. ثبّت Label Studio: pip install label-studio ثم label-studio start.
  2. أنشئ مشروعاً جديداً واختر قالب Named Entity Recognition.
  3. حدد 6 Labels: PER, ORG, LOC, DATE, MONEY, LAW.
  4. حمّل 50 جملة من dirty_corpus_02_legal_contracts.txt كملف TXT.
  5. صنّف 30 جملة يدوياً مميزاً كل كيان باللون المناسب.
  6. صدّر النتائج بصيغة JSONL واحسب عدد كل نوع كيان.
  7. اكتب Guidelines بصفحة واحدة توضح متى تُصنّف ومتى لا تُصنّف.
📦 المخرجات: ملف Guidelines.md + JSONL + إحصائية بتوزيع الكيانات

تدريب 2: تصنيف جودة ترجمة (MQM) بـ Label Studio

السيناريو: شركة ترجمة تريد تقييم جودة مخرجات نموذج ترجمة آلية طبي قبل إرساله للعميل.
  1. أنشئ مشروع Classification في Label Studio.
  2. حدد 4 Labels: Good / Acceptable / Terminology_Error / Accuracy_Error.
  3. حمّل 40 زوج ترجمة من dirty_csv_01_translation_memory.csv.
  4. صنّف 25 زوجاً وفق MQM مع كتابة تعليق قصير لكل خطأ مكتشف.
  5. احسب توزع Labels: كم Good؟ كم Terminology_Error؟
  6. أرسل نفس الـ 10 جمل لزميل وقارن التصنيفات (IAA).
  7. احسب Cohen's Kappa يدوياً أو بـ sklearn.metrics.cohen_kappa_score.
📦 المخرجات: ملف JSONL مصنَّف + تقرير IAA + تحليل أنواع الأخطاء

تدريب 3: تصنيف NER العربي بـ Doccano + Python

السيناريو: مشروع لبناء أول نموذج NER متخصص في الأخبار العربية لاكتشاف الكيانات.
  1. شغّل Doccano: docker run -p 8000:8000 doccano/doccano.
  2. أنشئ مشروع Sequence Labeling بـ Labels: شخص, مكان, منظمة, تاريخ.
  3. اكتب سكربت Python يحول dirty_corpus_04_news_bilingual.txt للعربية فقط.
  4. ارفع 50 جملة عربية إلى Doccano وصنّفها يدوياً.
  5. استخدم spaCy Pre-labeling لتصنيف 200 جملة إضافية تلقائياً.
  6. راجع التصنيف الآلي وصحّح الأخطاء في Doccano.
  7. صدّر بصيغة JSONL وقيّم الدقة: كم خطأ صحّحت في التصنيف الآلي؟
📦 المخرجات: Dataset 250 جملة مصنَّفة + تقرير دقة Pre-labeling

تدريب 4: Sentiment Analysis لتقييم جودة ذاكرة ترجمة

السيناريو: تريد اكتشاف الترجمات التي غيّرت النبرة العاطفية للنص المصدر (Tone Shift).
  1. استخدم HuggingFace: pipeline('zero-shot-classification').
  2. صنّف 50 جملة مصدر EN من dirty_csv_01 على Labels: Positive, Neutral, Negative.
  3. صنّف ترجماتها العربية بنموذج CAMeL-Lab/bert-base-arabic-camelbert.
  4. قارن تصنيف المصدر بتصنيف الهدف — الاختلاف = Tone Shift.
  5. ضع علامة Tone_Error على الأزواج التي تختلف فيها النبرة.
  6. أنشئ تقريراً يحدد: كم زوج غيّر النبرة؟ ما السبب المحتمل؟
  7. اكتب توصيات: أي نوع من الجمل أكثر عرضة للـ Tone Shift؟
📦 المخرجات: CSV بعمود Tone_Error / Tone_Match + تقرير تحليلي

واجب 5: مشروع تصنيف متكامل من الصفر

السيناريو: أنت مهندس لغويات في شركة ترجمة كُلِّفت ببناء Dataset لتدريب نموذج QA للمجال الطبي.
  1. اختر 200 جملة من dirty_corpus_03_medical_clinical.txt ونظّفها.
  2. صمّم نظام Labels: Entity (مرض/دواء/إجراء/جرعة) + Quality (صحيح/خاطئ/غير كامل).
  3. ثبّت Label Studio وأنشئ مشروعاً مزدوج التصنيف (NER + Classification).
  4. اكتب Guidelines شاملة (صفحتان) مع أمثلة DO/DON'T لكل Label.
  5. طبّق Pre-labeling بـ spaCy ثم راجع وصحّح في Label Studio.
  6. شارك مصنّفاً آخر وأعطِه نفس 30 جملة — احسب Cohen's Kappa.
  7. صدّر بصيغة JSONL + CoNLL + تقرير README.md + IAA كامل.
📦 المخرجات: Dataset طبي كامل (200 مثال) + كل الوثائق — portfolio project احترافي
// 16 — TOOL COMPARISON

مقارنة الأدوات — أي أداة تختار؟

الأداة السعر أنواع التصنيف متى تستخدمها؟
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
// FINAL RECOMMENDATION

المبتدئ: ابدأ بـ Doccano — أسهل أداة وعربية ممتازة.
المحترف: Label Studio + spaCy Pre-labeling — Standard Pipeline لكل مشروع كبير.
الباحث الأكاديمي: INCEpTION — Knowledge Graphs و Discourse Analysis.

// SUMMARY

ملخص المحاضرة

⭐ نقطة 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 احترافي حقيقي.

دبلومة هندسة اللغويات وتدريب الذكاء الاصطناعي · الجزء الثاني

المحاضرة الرابعة — Prof. Yassin Ibrahim

المحاضرة القادمة: تقييم النماذج اللغوية — BLEU, COMET, Human Evaluation

s.motrjim.com
Scroll to Top