{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c1f7f217-4251-4ab1-8357-4150abc2a084",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             tweet_id airline_sentiment  airline_sentiment_confidence  \\\n",
      "0  570306133677760513           neutral                        1.0000   \n",
      "1  570301130888122368          positive                        0.3486   \n",
      "2  570301083672813571           neutral                        0.6837   \n",
      "3  570301031407624196          negative                        1.0000   \n",
      "4  570300817074462722          negative                        1.0000   \n",
      "\n",
      "  negativereason  negativereason_confidence         airline  \\\n",
      "0            NaN                        NaN  Virgin America   \n",
      "1            NaN                     0.0000  Virgin America   \n",
      "2            NaN                        NaN  Virgin America   \n",
      "3     Bad Flight                     0.7033  Virgin America   \n",
      "4     Can't Tell                     1.0000  Virgin America   \n",
      "\n",
      "  airline_sentiment_gold        name negativereason_gold  retweet_count  \\\n",
      "0                    NaN     cairdin                 NaN              0   \n",
      "1                    NaN    jnardino                 NaN              0   \n",
      "2                    NaN  yvonnalynn                 NaN              0   \n",
      "3                    NaN    jnardino                 NaN              0   \n",
      "4                    NaN    jnardino                 NaN              0   \n",
      "\n",
      "                                                text tweet_coord  \\\n",
      "0                @VirginAmerica What @dhepburn said.         NaN   \n",
      "1  @VirginAmerica plus you've added commercials t...         NaN   \n",
      "2  @VirginAmerica I didn't today... Must mean I n...         NaN   \n",
      "3  @VirginAmerica it's really aggressive to blast...         NaN   \n",
      "4  @VirginAmerica and it's a really big bad thing...         NaN   \n",
      "\n",
      "               tweet_created tweet_location               user_timezone  \n",
      "0  2015-02-24 11:35:52 -0800            NaN  Eastern Time (US & Canada)  \n",
      "1  2015-02-24 11:15:59 -0800            NaN  Pacific Time (US & Canada)  \n",
      "2  2015-02-24 11:15:48 -0800      Lets Play  Central Time (US & Canada)  \n",
      "3  2015-02-24 11:15:36 -0800            NaN  Pacific Time (US & Canada)  \n",
      "4  2015-02-24 11:14:45 -0800            NaN  Pacific Time (US & Canada)  \n",
      "\n",
      "معلومات عن البيانات:\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 14640 entries, 0 to 14639\n",
      "Data columns (total 15 columns):\n",
      " #   Column                        Non-Null Count  Dtype  \n",
      "---  ------                        --------------  -----  \n",
      " 0   tweet_id                      14640 non-null  int64  \n",
      " 1   airline_sentiment             14640 non-null  object \n",
      " 2   airline_sentiment_confidence  14640 non-null  float64\n",
      " 3   negativereason                9178 non-null   object \n",
      " 4   negativereason_confidence     10522 non-null  float64\n",
      " 5   airline                       14640 non-null  object \n",
      " 6   airline_sentiment_gold        40 non-null     object \n",
      " 7   name                          14640 non-null  object \n",
      " 8   negativereason_gold           32 non-null     object \n",
      " 9   retweet_count                 14640 non-null  int64  \n",
      " 10  text                          14640 non-null  object \n",
      " 11  tweet_coord                   1019 non-null   object \n",
      " 12  tweet_created                 14640 non-null  object \n",
      " 13  tweet_location                9907 non-null   object \n",
      " 14  user_timezone                 9820 non-null   object \n",
      "dtypes: float64(2), int64(2), object(11)\n",
      "memory usage: 1.7+ MB\n",
      "None\n",
      "\n",
      "عدد القيم المفقودة في كل عمود:\n",
      "tweet_id                            0\n",
      "airline_sentiment                   0\n",
      "airline_sentiment_confidence        0\n",
      "negativereason                   5462\n",
      "negativereason_confidence        4118\n",
      "airline                             0\n",
      "airline_sentiment_gold          14600\n",
      "name                                0\n",
      "negativereason_gold             14608\n",
      "retweet_count                       0\n",
      "text                                0\n",
      "tweet_coord                     13621\n",
      "tweet_created                       0\n",
      "tweet_location                   4733\n",
      "user_timezone                    4820\n",
      "dtype: int64\n",
      "\n",
      "توزيع الفئات:\n",
      "airline_sentiment\n",
      "negative    9178\n",
      "neutral     3099\n",
      "positive    2363\n",
      "Name: count, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# استيراد المكتبات\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# قراءة ملف البيانات (تأكد من اسم الملف في نفس مجلد الـ Notebook)\n",
    "df = pd.read_csv(\"sentiment_tweets_dataset.csv\")\n",
    "\n",
    "# عرض أول 5 سجلات لمعاينة شكل البيانات\n",
    "print(df.head())\n",
    "\n",
    "# عرض معلومات عن الأعمدة وحجم البيانات\n",
    "print(\"\\nمعلومات عن البيانات:\")\n",
    "print(df.info())\n",
    "\n",
    "# التحقق من القيم المفقودة\n",
    "print(\"\\nعدد القيم المفقودة في كل عمود:\")\n",
    "print(df.isnull().sum())\n",
    "\n",
    "# عرض توزيع الفئات المستهدفة (المشاعر)\n",
    "# عدّل اسم العمود إذا كان مختلف (مثل airline_sentiment أو sentiment)\n",
    "print(\"\\nتوزيع الفئات:\")\n",
    "print(df['airline_sentiment'].value_counts())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cbbd86bc-d33b-4c42-a541-f318569cbe5b",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[nltk_data] Downloading package punkt to\n",
      "[nltk_data]     C:\\Users\\WALEED\\AppData\\Roaming\\nltk_data...\n",
      "[nltk_data]   Package punkt is already up-to-date!\n",
      "[nltk_data] Downloading package stopwords to\n",
      "[nltk_data]     C:\\Users\\WALEED\\AppData\\Roaming\\nltk_data...\n",
      "[nltk_data]   Package stopwords is already up-to-date!\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                                text  \\\n",
      "0                @VirginAmerica What @dhepburn said.   \n",
      "1  @VirginAmerica plus you've added commercials t...   \n",
      "2  @VirginAmerica I didn't today... Must mean I n...   \n",
      "3  @VirginAmerica it's really aggressive to blast...   \n",
      "4  @VirginAmerica and it's a really big bad thing...   \n",
      "\n",
      "                                          clean_text  \n",
      "0                                               said  \n",
      "1                  plu youv ad commerci experi tacki  \n",
      "2         didnt today must mean need take anoth trip  \n",
      "3  realli aggress blast obnoxi entertain guest fa...  \n",
      "4                               realli big bad thing  \n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "import nltk\n",
    "from nltk.corpus import stopwords\n",
    "from nltk.stem import PorterStemmer\n",
    "from nltk.tokenize import word_tokenize\n",
    "\n",
    "# تحميل موارد NLTK (مرة واحدة فقط)\n",
    "nltk.download('punkt')\n",
    "nltk.download('stopwords')\n",
    "\n",
    "stop_words = set(stopwords.words('english'))\n",
    "stemmer = PorterStemmer()\n",
    "\n",
    "def preprocess_text(text):\n",
    "    # تحويل إلى حروف صغيرة\n",
    "    text = text.lower()\n",
    "    # إزالة الروابط وعلامات @\n",
    "    text = re.sub(r\"http\\S+|www\\S+|https\\S+|@\\w+|#\\w+\", '', text, flags=re.MULTILINE)\n",
    "    # إزالة الرموز غير الأبجدية\n",
    "    text = re.sub(r'[^a-zA-Z\\s]', '', text)\n",
    "    # تقسيم النصوص لكلمات\n",
    "    tokens = word_tokenize(text)\n",
    "    # إزالة الكلمات الشائعة (Stopwords) والتجذير (Stemming)\n",
    "    tokens = [stemmer.stem(word) for word in tokens if word not in stop_words]\n",
    "    return ' '.join(tokens)\n",
    "\n",
    "# تطبيق المعالجة المسبقة على عمود النصوص\n",
    "df['clean_text'] = df['text'].apply(preprocess_text)\n",
    "\n",
    "# عرض بعض النتائج بعد التنظيف\n",
    "print(df[['text', 'clean_text']].head())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b20e4400-063d-4450-aaee-98030c5696c5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10248 2196 2196\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# X و y\n",
    "X = df['clean_text']\n",
    "y = df['airline_sentiment']  # لو اسم العمود مختلف عدّله هنا\n",
    "\n",
    "# تقسيم Train+Temp أولاً\n",
    "X_train, X_temp, y_train, y_temp = train_test_split(\n",
    "    X, y, test_size=0.30, random_state=42, stratify=y\n",
    ")\n",
    "\n",
    "# تقسيم Temp إلى Val و Test بالتساوي (15%/15%)\n",
    "X_val, X_test, y_val, y_test = train_test_split(\n",
    "    X_temp, y_temp, test_size=0.50, random_state=42, stratify=y_temp\n",
    ")\n",
    "\n",
    "print(len(X_train), len(X_val), len(X_test))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "589d5f4b-e31c-4e5a-b45c-482acc130f84",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((10248, 3190), (2196, 3190), (2196, 3190))"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "\n",
    "# نغطي Unigram + Bigram مع بعض الضبط لتقليل الضجيج\n",
    "tfidf = TfidfVectorizer(ngram_range=(1,2), min_df=5, max_df=0.9)\n",
    "\n",
    "X_train_vec = tfidf.fit_transform(X_train)\n",
    "X_val_vec   = tfidf.transform(X_val)\n",
    "X_test_vec  = tfidf.transform(X_test)\n",
    "\n",
    "X_train_vec.shape, X_val_vec.shape, X_test_vec.shape\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9965ac2c-fa97-44a8-b572-a3acc5b24bbc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Validation — Logistic Regression\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.89      0.77      0.83      1376\n",
      "     neutral       0.51      0.68      0.58       465\n",
      "    positive       0.64      0.69      0.66       355\n",
      "\n",
      "    accuracy                           0.74      2196\n",
      "   macro avg       0.68      0.71      0.69      2196\n",
      "weighted avg       0.77      0.74      0.75      2196\n",
      "\n",
      "Validation — Linear SVM\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.86      0.83      0.85      1376\n",
      "     neutral       0.53      0.57      0.55       465\n",
      "    positive       0.67      0.67      0.67       355\n",
      "\n",
      "    accuracy                           0.75      2196\n",
      "   macro avg       0.69      0.69      0.69      2196\n",
      "weighted avg       0.76      0.75      0.75      2196\n",
      "\n",
      "\n",
      "Test — Best Model\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "    negative       0.87      0.85      0.86      1377\n",
      "     neutral       0.58      0.62      0.60       465\n",
      "    positive       0.68      0.68      0.68       354\n",
      "\n",
      "    accuracy                           0.77      2196\n",
      "   macro avg       0.71      0.71      0.71      2196\n",
      "weighted avg       0.78      0.77      0.77      2196\n",
      "\n",
      "Confusion Matrix:\n",
      " [[1165  157   55]\n",
      " [ 120  290   55]\n",
      " [  58   57  239]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import LinearSVC\n",
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "\n",
    "# 5.1 Logistic Regression\n",
    "lr = LogisticRegression(max_iter=1000, class_weight='balanced', n_jobs=-1)\n",
    "lr.fit(X_train_vec, y_train)\n",
    "print(\"Validation — Logistic Regression\")\n",
    "y_val_pred_lr = lr.predict(X_val_vec)\n",
    "print(classification_report(y_val, y_val_pred_lr))\n",
    "\n",
    "# 5.2 Linear SVM\n",
    "svm = LinearSVC(class_weight='balanced')\n",
    "svm.fit(X_train_vec, y_train)\n",
    "print(\"Validation — Linear SVM\")\n",
    "y_val_pred_svm = svm.predict(X_val_vec)\n",
    "print(classification_report(y_val, y_val_pred_svm))\n",
    "\n",
    "# 5.3 اختيار الأفضل بناءً على نتائج الـ Validation\n",
    "# غيّر الاختيار حسب التقارير التي سترى أرقامها عندك\n",
    "best_model = svm  # أو lr إذا كان أداؤه أفضل\n",
    "\n",
    "# 5.4 تقييم النموذج الأفضل على مجموعة الاختبار Test\n",
    "print(\"\\nTest — Best Model\")\n",
    "y_test_pred = best_model.predict(X_test_vec)\n",
    "print(classification_report(y_test, y_test_pred))\n",
    "\n",
    "# طباعة مصفوفة الالتباس \n",
    "print(\"Confusion Matrix:\\n\", confusion_matrix(y_test, y_test_pred))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "38cd681d-3cb8-43d7-84de-d49c4652fdf5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy (Test): 77.14%\n",
      "Confusion Matrix (counts):\n",
      " [[1165  157   55]\n",
      " [ 120  290   55]\n",
      " [  58   57  239]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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RLpi8BARka4YPEREpCsGDxER6YrBQ0REumLwEBGRrhg8RESkKwYPERHpisFDRES6YvAQEZGuGDxERKQrBg8REemKwUNERLpi8BARka4YPEREpCsGDxER6YrBQ0REumLwEBGRrhg8RESkKwYPERHpylbft6O0aF+7AWyt7bN6MchEdHXvrF4ESsbu2o2sXgR6TmzxEBGRrhg8RESkKwYPERHpisFDRES6YvAQEZGuGDxERKQrBg8REemKwUNERLpi8BARka4YPEREpCsGDxER6YrBQ0REumLwEBGRrhg8RESkKwYPERHpisFDRES6YvAQEZGuGDxERJT9Ln39559/pnmGrVu3fpHlISIiC5em4HnrrbfSNDMrKyskJCS86DIREVFuD57ExMTMXxIiIsoVXmiMJzo6OuOWhIiIcoV0B490pU2ZMgUFCxaEq6srAgIC1OOffPIJvv3228xYRiIiys3BM23aNPzwww+YOXMm7O3tjY9XrFgR33zzTUYvHxER5fbgWbZsGb766iu8//77sLGxMT5epUoVnD9/PqOXj4iIcnvw/PvvvyhZsmSKBQhxcXEZtVxERGSh0h085cuXx99///3E46tXr0a1atUyarmIiCg3l1ObGj9+PLp166ZaPtLK+f3333HhwgXVBffXX39lzlISEVHubfG0adMG69atw9atW+Hi4qKC6Ny5c+qxpk2bZs5SEhFR7m3xiHr16mHLli0ZvzRERGTxnit4xJEjR1RLxzDu89JLL2XkchERkYVKd/DcunULnTp1wt69e+Hh4aEeu3fvHurUqYOff/4ZhQoVyozlJCKi3DrG06tXL1U2La2dsLAwdZOfpdBAphEREWVoi2fXrl3Yt28fypQpY3xMfl6wYIEa+yEiIsrQFk/hwoVTPFBUzuHm5+eX3tkREVEuk+7gmTVrFgYNGqSKCwzk5yFDhmD27NkZvXxERJQbu9o8PT3VRd4MHj58iJo1a8LWNunl8fHx6ucPPvggzReNIyKi3ClNwTNv3rzMXxIiIsoV0hQ8coocIiKiLD2A1HAF0tjYWLPH3N3dX3SZiIjIgqW7uEDGdwYOHAhvb291rjYZ/zG9ERERZWjwjBo1Ctu3b8eiRYvg4OCgrjo6adIkVUotZ6gmIiLK0K42OQu1BEzDhg3Ro0cPddCoXBiuaNGiWLFihboyKRERUYa1eOQU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",
      "text/plain": [
       "<Figure size 500x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay, accuracy_score\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 1) احصل على التوقعات إن لم تكن موجودة\n",
    "try:\n",
    "    y_test_pred\n",
    "except NameError:\n",
    "    y_test_pred = best_model.predict(X_test_vec)\n",
    "\n",
    "# ثبّت ترتيب الفئات ليتطابق مع تقريرك\n",
    "labels = ['negative', 'neutral', 'positive']\n",
    "\n",
    "# 2) مصفوفة الالتباس + الدقة\n",
    "cm = confusion_matrix(y_test, y_test_pred, labels=labels)\n",
    "acc = accuracy_score(y_test, y_test_pred)\n",
    "print(f\"Accuracy (Test): {acc:.2%}\")\n",
    "print(\"Confusion Matrix (counts):\\n\", cm)\n",
    "\n",
    "# 3) عرض مصفوفة الالتباس (قيم عددية)\n",
    "fig, ax = plt.subplots(figsize=(5,4))\n",
    "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels)\n",
    "disp.plot(ax=ax, colorbar=False)\n",
    "plt.title(\"Confusion Matrix — Test\")\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "# (اختياري) حفظ الصورة\n",
    "fig.savefig(\"confusion_matrix_test.png\", dpi=200)\n",
    "\n",
    "# 4) نسخة مُطبّعة (Normalized)\n",
    "cm_norm = cm.astype(float) / cm.sum(axis=1, keepdims=True)\n",
    "\n",
    "fig2, ax2 = plt.subplots(figsize=(5,4))\n",
    "im = ax2.imshow(cm_norm)  # لا نحدد ألوانًا\n",
    "ax2.set_xticks(np.arange(len(labels)))\n",
    "ax2.set_yticks(np.arange(len(labels)))\n",
    "ax2.set_xticklabels(labels, rotation=45)\n",
    "ax2.set_yticklabels(labels)\n",
    "ax2.set_xlabel(\"Predicted\")\n",
    "ax2.set_ylabel(\"True\")\n",
    "ax2.set_title(\"Confusion Matrix — Test (Normalized)\")\n",
    "\n",
    "# أرقام داخل الخلايا\n",
    "for i in range(cm_norm.shape[0]):\n",
    "    for j in range(cm_norm.shape[1]):\n",
    "        ax2.text(j, i, f\"{cm_norm[i, j]:.2f}\", ha='center', va='center')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "# (اختياري) حفظ النسخة المطبّعة\n",
    "fig2.savefig(\"confusion_matrix_test_normalized.png\", dpi=200)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1ef0c7be-e698-4f07-ba99-408de86e8b31",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
