"]},"metadata":{},"execution_count":5}]},{"cell_type":"code","source":["df['Comment'] = df['Comment'].astype(str)"],"metadata":{"id":"wfj0UDIU-B7V","executionInfo":{"status":"ok","timestamp":1777717837401,"user_tz":-300,"elapsed":862,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["stop_words = set(stopwords.words('english'))\n","lemmatizer = WordNetLemmatizer()\n","\n","def preprocess_text(Comment):\n"," Comment = Comment.lower()\n"," Comment = re.sub(f\"[{string.punctuation}]\", \"\", Comment)\n","\n"," tokens = Comment.split()\n","\n"," tokens = [word for word in tokens if word not in stop_words]\n"," tokens = [lemmatizer.lemmatize(word) for word in tokens]\n","\n"," return \" \".join(tokens)\n","\n","df['clean_text'] = df['Comment'].apply(preprocess_text)"],"metadata":{"id":"q6cPJNFe8oTj","executionInfo":{"status":"ok","timestamp":1777717863610,"user_tz":-300,"elapsed":26207,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":["vectorizer = TfidfVectorizer()\n","X = vectorizer.fit_transform(df['clean_text'])\n","y = df['Sentiment']"],"metadata":{"id":"IhyVqIQt-pT5","executionInfo":{"status":"ok","timestamp":1777717869398,"user_tz":-300,"elapsed":5767,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}}},"execution_count":8,"outputs":[]},{"cell_type":"code","source":["X_train, X_test, y_train, y_test = train_test_split(\n"," X, y, test_size=0.2, random_state=42\n",")"],"metadata":{"id":"2b_55k6u-sJ7","executionInfo":{"status":"ok","timestamp":1777717869437,"user_tz":-300,"elapsed":36,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}}},"execution_count":9,"outputs":[]},{"cell_type":"code","source":["model = LogisticRegression(max_iter=200)\n","model.fit(X_train, y_train)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":219},"id":"GuKzIuZ0-veE","executionInfo":{"status":"ok","timestamp":1777717921841,"user_tz":-300,"elapsed":52389,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}},"outputId":"57293276-a6e2-4efb-b024-3fc7ff00e83e"},"execution_count":10,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.12/dist-packages/sklearn/linear_model/_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n","STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n","\n","Increase the number of iterations (max_iter) or scale the data as shown in:\n"," https://scikit-learn.org/stable/modules/preprocessing.html\n","Please also refer to the documentation for alternative solver options:\n"," https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n"," n_iter_i = _check_optimize_result(\n"]},{"output_type":"execute_result","data":{"text/plain":["LogisticRegression(max_iter=200)"],"text/html":["
LogisticRegression(max_iter=200)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
LogisticRegression(max_iter=200)
"]},"metadata":{},"execution_count":10}]},{"cell_type":"code","source":["y_pred = model.predict(X_test)\n","\n","print(\"Accuracy:\", accuracy_score(y_test, y_pred))\n","print(\"\\nClassification Report:\\n\", classification_report(y_test, y_pred))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"rNxSolAr-y6d","executionInfo":{"status":"ok","timestamp":1777717921860,"user_tz":-300,"elapsed":15,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}},"outputId":"10ff87ae-7ccf-4fda-ad8a-3d179b9cf314"},"execution_count":11,"outputs":[{"output_type":"stream","name":"stdout","text":["Accuracy: 0.785274419954799\n","\n","Classification Report:\n"," precision recall f1-score support\n","\n"," 0 0.79 0.65 0.71 11089\n"," 1 0.73 0.83 0.78 16502\n"," 2 0.83 0.82 0.82 20638\n","\n"," accuracy 0.79 48229\n"," macro avg 0.79 0.77 0.77 48229\n","weighted avg 0.79 0.79 0.78 48229\n","\n"]}]},{"cell_type":"code","source":["cm = confusion_matrix(y_test, y_pred)\n","\n","plt.figure()\n","sns.heatmap(cm, annot=True, fmt='d', xticklabels=model.classes_, yticklabels=model.classes_)\n","plt.xlabel(\"Predicted\")\n","plt.ylabel(\"Actual\")\n","plt.title(\"Confusion Matrix\")\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":472},"id":"DU7mUQ1o-2AB","executionInfo":{"status":"ok","timestamp":1777717922357,"user_tz":-300,"elapsed":495,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}},"outputId":"fd9f77f0-8ae4-46e6-e54d-edba5c1800d3"},"execution_count":12,"outputs":[{"output_type":"display_data","data":{"text/plain":[""],"image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":["def predict_sentiment(text):\n"," text_clean = preprocess_text(text)\n"," text_vec = vectorizer.transform([text_clean])\n","\n"," prediction = model.predict(text_vec)[0]\n"," probs = model.predict_proba(text_vec)\n","\n"," # convert number into label\n"," prediction_label = label_map[prediction]\n","\n"," return prediction_label, probs"],"metadata":{"id":"OOP3cdJ9-7tJ","executionInfo":{"status":"ok","timestamp":1777717922487,"user_tz":-300,"elapsed":107,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}}},"execution_count":13,"outputs":[]},{"cell_type":"code","source":["label_map = {\n"," 0: \"Negative\",\n"," 1: \"Neutral\",\n"," 2: \"Positive\",\n"," 3: \"Mixed\"\n","}"],"metadata":{"id":"AvUOUcnkAwxP","executionInfo":{"status":"ok","timestamp":1777717922515,"user_tz":-300,"elapsed":55,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}}},"execution_count":14,"outputs":[]},{"cell_type":"code","source":["def menu():\n"," while True:\n"," print(\"\\nSentiment Analysis System\")\n"," print(\"1. Single Prediction\")\n"," print(\"2. Batch Prediction\")\n"," print(\"3. Exit\")\n","\n"," choice = input(\"Enter choice: \")\n","\n"," if choice == '1':\n"," text = input(\"Enter your sentence: \")\n"," pred, prob = predict_sentiment(text)\n"," print(f\"Predicted Sentiment: {pred}\")\n"," print(f\"Probabilities: {prob}\")\n","\n"," elif choice == '2':\n"," texts = []\n"," n = int(input(\"How many sentences? \"))\n","\n"," for _ in range(n):\n"," texts.append(input(\"Enter sentence: \"))\n","\n"," results = []\n"," for t in texts:\n"," pred, _ = predict_sentiment(t)\n"," results.append(pred)\n","\n"," df_out = pd.DataFrame({\n"," \"Text\": texts,\n"," \"Prediction\": results\n"," })\n","\n"," df_out.to_csv(\"predictions.csv\", index=False)\n"," print(\"Saved to predictions.csv\")\n","\n"," elif choice == '3':\n"," break\n","\n"," else:\n"," print(\"Invalid choice!\")\n","\n","menu()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"F8yqOGGI-9FD","executionInfo":{"status":"ok","timestamp":1777718093645,"user_tz":-300,"elapsed":171180,"user":{"displayName":"riha muqaddas","userId":"09018071894621238080"}},"outputId":"073b548e-eb81-4717-99fd-f3a74a33de87"},"execution_count":15,"outputs":[{"name":"stdout","output_type":"stream","text":["\n","Sentiment Analysis System\n","1. Single Prediction\n","2. Batch Prediction\n","3. Exit\n","Enter choice: 1\n","Enter your sentence: weather is good\n","Predicted Sentiment: Positive\n","Probabilities: [[0.01204147 0.06498642 0.92297212]]\n","\n","Sentiment Analysis System\n","1. Single Prediction\n","2. Batch Prediction\n","3. Exit\n","Enter choice: weather is bad\n","Invalid choice!\n","\n","Sentiment Analysis System\n","1. Single Prediction\n","2. Batch Prediction\n","3. Exit\n","Enter choice: weather is not good\n","Invalid choice!\n","\n","Sentiment Analysis System\n","1. Single Prediction\n","2. Batch Prediction\n","3. Exit\n","Enter choice: i hate this\n","Invalid choice!\n","\n","Sentiment Analysis System\n","1. Single Prediction\n","2. Batch Prediction\n","3. Exit\n","Enter choice: 1\n","Enter your sentence: weather is bad\n","Predicted Sentiment: Negative\n","Probabilities: [[0.92798033 0.07078336 0.00123631]]\n","\n","Sentiment Analysis System\n","1. Single Prediction\n","2. Batch Prediction\n","3. Exit\n","Enter choice: 1\n","Enter your sentence: the product arrive on time\n","Predicted Sentiment: Neutral\n","Probabilities: [[0.11954165 0.71787783 0.16258053]]\n","\n","Sentiment Analysis System\n","1. Single Prediction\n","2. Batch Prediction\n","3. Exit\n","Enter choice: 3\n"]}]}]}