تفاصيل العمل

## ? AI vs Human Text Classifier

### اكتشاف ما إذا كان النص من إنتاج بشري أو ذكاء اصطناعي

**AI-Human-Text-Classifier** هو نموذج خفيف مبني على **DistilBERT** قادر على تصنيف ما إذا كان النص مكتوبًا بواسطة إنسان أو تم إنشاؤه بواسطة الذكاء الاصطناعي. تم تدريب النموذج على عينة متوازنة من بيانات `AI_Human.csv`، وحقق دقة تصل إلى **99%** على مجموعة الاختبار.

---

### نظرة عامة على البيانات

* **المصدر:** [Kaggle - AI vs Human Text Dataset](https://www.kaggle.com/da...)

* **عدد العينات الأصلية:** 487,235

* **الأعمدة:**

* `text`: النص المدخل.

* `generated`: الوسم (0 = بشري، 1 = ذكاء اصطناعي).

### ? استراتيجية أخذ العينة

تم اختيار **10,000** عينة عشوائية من كل فئة للحصول على مجموعة بيانات متوازنة تحتوي على **20,000** سجل فقط، وذلك لتحقيق تدريب فعال دون التأثير على أداء النموذج.

---

### ️ خطوات العمل

#### 1. **التحميل والمعالجة المسبقة**

* تحميل البيانات وإزالة القيم المفقودة.

* حفظ البيانات المعالجة في `sampled_preprocessed_data.csv`.

#### 2. **تقسيم البيانات**

* تدريب: 80% (16,000)

* تحقق: 10% (2,000)

* اختبار: 10% (2,000)

* باستخدام **Stratified Split** للحفاظ على التوازن بين الفئات.

#### 3. **التحويل إلى رموز (Tokenization)**

* باستخدام `DistilBertTokenizer` مع:

* الطول الأقصى: 512

* التوسيط والاقتطاع لتوحيد حجم الإدخال.

#### 4. **التدريب**

* النموذج: `DistilBertForSequenceClassification` (تصنيف ثنائي).

* إعدادات التدريب:

* عدد الدورات: 3

* حجم الدفعة: 16

* Weight Decay: 0.01

* Warmup Steps: 200

* الأداء على التحقق: **99.25%**

#### 5. **التقييم**

* الدقة على مجموعة الاختبار: **99%**

* المقاييس:

* Precision: 0.99

* Recall: 0.99

* F1-score: 0.99

| الفئة | Precision | Recall | F1-Score | Support |

| ----- | --------- | ------ | -------- | ------- |

| Human | 1.00 | 0.98 | 0.99 | 1000 |

| AI | 0.98 | 1.00 | 0.99 | 1000 |

---

### **الاستخدام**

#### تثبيت المتطلبات:

```bash

pip install transformers torch pandas datasets scikit-learn

```

#### ? تدريب أو تقييم النموذج:

افتح الملف `distilbert.ipynb` لتدريب النموذج أو تقييمه.

#### استخدام النموذج للتنبؤ:

```python

from transformers import DistilBertTokenizer, DistilBertForSequenceClassification

tokenizer = DistilBertTokenizer.from_pretrained("best_distilbert_model")

model = DistilBertForSequenceClassification.from_pretrained("best_distilbert_model")

```

#### ? مثال على التنبؤ:

```plaintext

النص: "هذا نص تمت كتابته بدقة عالية واحترافية."

→ النتيجة: بشري

→ الثقة: 98.59%

(بشري: 98.59%, ذكاء صناعي: 1.41%)

```

---

### نتائج التدريب

| الدورة | Training Loss | Validation Loss | Accuracy |

| ------ | ------------- | --------------- | ---------- |

| 1 | 0.0456 | 0.0955 | 98.05% |

| 2 | 0.0002 | 0.0478 | 99.10% |

| 3 | 0.0002 | 0.0445 | **99.25%** |

ملفات مرفقة

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
تاريخ الإضافة
تاريخ الإنجاز
المهارات