diff --git a/Amazon_Sentimental_Analysis.ipynb b/Amazon_Sentimental_Analysis.ipynb new file mode 100644 index 0000000..9c92ab2 --- /dev/null +++ b/Amazon_Sentimental_Analysis.ipynb @@ -0,0 +1,1090 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "HlAYzxmF628V" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib as plt\n", + "import pandas as pd\n", + "import nltk\n", + "import matplotlib.pyplot as plt\n", + "from nltk.sentiment import SentimentIntensityAnalyzer\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, classification_report\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "source": [ + "!git clone https://github.com/ZahraAlharz/Selection-Python.git" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5BKSQxhG-HQS", + "outputId": "44c329c0-0081-40d0-aa60-1d0ee78cf678" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "fatal: destination path 'Selection-Python' already exists and is not an empty directory.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "nltk.download('punkt')\n", + "nltk.download('vader_lexicon')\n", + "nltk.download('stopwords')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xEnOyv11Xk5A", + "outputId": "9652672a-217e-40ae-ee9f-583dc4b84d61" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package punkt to /root/nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n", + "[nltk_data] Downloading package vader_lexicon to /root/nltk_data...\n", + "[nltk_data] Package vader_lexicon is already up-to-date!\n", + "[nltk_data] Downloading package stopwords to /root/nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 136 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df = pd.read_csv(\"/content/Selection-Python/One_product.csv\")" + ], + "metadata": { + "id": "G_we7Za6-UO-" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 776 + }, + "id": "l5iEReKSg8Iy", + "outputId": "ca512356-f2a8-4f8e-a4c4-35fcbfd2ad6e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " id name \\\n", + "0 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "1 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "2 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "3 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "4 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "\n", + " asins brand categories \\\n", + "0 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "1 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "2 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "3 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "4 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "\n", + " keys manufacturer \\\n", + "0 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "1 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "2 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "3 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "4 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "\n", + " reviews.date reviews.dateAdded \\\n", + "0 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "1 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "2 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "3 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "4 2017-01-12T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "\n", + " reviews.dateSeen ... \\\n", + "0 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "1 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "2 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "3 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "4 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "\n", + " reviews.doRecommend reviews.id reviews.numHelpful reviews.rating \\\n", + "0 True NaN 0 5 \n", + "1 True NaN 0 5 \n", + "2 True NaN 0 5 \n", + "3 True NaN 0 4 \n", + "4 True NaN 0 5 \n", + "\n", + " reviews.sourceURLs \\\n", + "0 http://reviews.bestbuy.com/3545/5620406/review... \n", + "1 http://reviews.bestbuy.com/3545/5620406/review... \n", + "2 http://reviews.bestbuy.com/3545/5620406/review... \n", + "3 http://reviews.bestbuy.com/3545/5620406/review... \n", + "4 http://reviews.bestbuy.com/3545/5620406/review... \n", + "\n", + " reviews.text \\\n", + "0 This product so far has not disappointed. My c... \n", + "1 great for beginner or experienced person. Boug... \n", + "2 Inexpensive tablet for him to use and learn on... \n", + "3 I've had my Fire HD 8 two weeks now and I love... \n", + "4 I bought this for my grand daughter when she c... \n", + "\n", + " reviews.title reviews.userCity \\\n", + "0 Kindle NaN \n", + "1 very fast NaN \n", + "2 Beginner tablet for our 9 year old son. NaN \n", + "3 Good!!! NaN \n", + "4 Fantastic Tablet for kids NaN \n", + "\n", + " reviews.userProvince reviews.username \n", + "0 NaN Adapter \n", + "1 NaN truman \n", + "2 NaN DaveZ \n", + "3 NaN Shacks \n", + "4 NaN explore42 \n", + "\n", + "[5 rows x 21 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idnameasinsbrandcategorieskeysmanufacturerreviews.datereviews.dateAddedreviews.dateSeen...reviews.doRecommendreviews.idreviews.numHelpfulreviews.ratingreviews.sourceURLsreviews.textreviews.titlereviews.userCityreviews.userProvincereviews.username
0AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...This product so far has not disappointed. My c...KindleNaNNaNAdapter
1AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...great for beginner or experienced person. Boug...very fastNaNNaNtruman
2AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...Inexpensive tablet for him to use and learn on...Beginner tablet for our 9 year old son.NaNNaNDaveZ
3AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN04http://reviews.bestbuy.com/3545/5620406/review...I've had my Fire HD 8 two weeks now and I love...Good!!!NaNNaNShacks
4AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-12T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...I bought this for my grand daughter when she c...Fantastic Tablet for kidsNaNNaNexplore42
\n", + "

5 rows × 21 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "df" + } + }, + "metadata": {}, + "execution_count": 138 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.info()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gCO7BFQ2-URm", + "outputId": "6784e1ef-4cbb-4eec-dea6-28b05333a860" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "RangeIndex: 2814 entries, 0 to 2813\n", + "Data columns (total 21 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 id 2814 non-null object \n", + " 1 name 2814 non-null object \n", + " 2 asins 2814 non-null object \n", + " 3 brand 2814 non-null object \n", + " 4 categories 2814 non-null object \n", + " 5 keys 2814 non-null object \n", + " 6 manufacturer 2814 non-null object \n", + " 7 reviews.date 2814 non-null object \n", + " 8 reviews.dateAdded 2814 non-null object \n", + " 9 reviews.dateSeen 2814 non-null object \n", + " 10 reviews.didPurchase 0 non-null float64\n", + " 11 reviews.doRecommend 2814 non-null bool \n", + " 12 reviews.id 0 non-null float64\n", + " 13 reviews.numHelpful 2814 non-null int64 \n", + " 14 reviews.rating 2814 non-null int64 \n", + " 15 reviews.sourceURLs 2814 non-null object \n", + " 16 reviews.text 2814 non-null object \n", + " 17 reviews.title 2814 non-null object \n", + " 18 reviews.userCity 0 non-null float64\n", + " 19 reviews.userProvince 0 non-null float64\n", + " 20 reviews.username 2814 non-null object \n", + "dtypes: bool(1), float64(4), int64(2), object(14)\n", + "memory usage: 442.6+ KB\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "id": "8RMJKoZc-UUR", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "9aff0a2c-5e28-4257-e0d9-2df7c1535115" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 140 + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "PkD-EeQr-UaW" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.info()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l-rfcGXBC3cx", + "outputId": "2dc90236-49f2-4dcc-dcf0-b3f0a11f8b5a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "RangeIndex: 2814 entries, 0 to 2813\n", + "Data columns (total 21 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 id 2814 non-null object \n", + " 1 name 2814 non-null object \n", + " 2 asins 2814 non-null object \n", + " 3 brand 2814 non-null object \n", + " 4 categories 2814 non-null object \n", + " 5 keys 2814 non-null object \n", + " 6 manufacturer 2814 non-null object \n", + " 7 reviews.date 2814 non-null object \n", + " 8 reviews.dateAdded 2814 non-null object \n", + " 9 reviews.dateSeen 2814 non-null object \n", + " 10 reviews.didPurchase 0 non-null float64\n", + " 11 reviews.doRecommend 2814 non-null bool \n", + " 12 reviews.id 0 non-null float64\n", + " 13 reviews.numHelpful 2814 non-null int64 \n", + " 14 reviews.rating 2814 non-null int64 \n", + " 15 reviews.sourceURLs 2814 non-null object \n", + " 16 reviews.text 2814 non-null object \n", + " 17 reviews.title 2814 non-null object \n", + " 18 reviews.userCity 0 non-null float64\n", + " 19 reviews.userProvince 0 non-null float64\n", + " 20 reviews.username 2814 non-null object \n", + "dtypes: bool(1), float64(4), int64(2), object(14)\n", + "memory usage: 442.6+ KB\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "id": "hw5xQ95UC9Ya", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "48384178-bb1a-491c-c589-d2ecd7045a9d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 142 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df['name'] = df['name'].astype(str)\n", + "df['reviews.numHelpful'] = df['reviews.numHelpful'].astype(float)\n", + "df['reviews.rating'] = df['reviews.rating'].astype(float)\n", + "df['reviews.text'] = df['reviews.text'].astype(str)\n", + "df['reviews.title'] = df['reviews.title'].astype(str)" + ], + "metadata": { + "id": "dRTGRzjIZhVb" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IVi3lS-th5qz", + "outputId": "608ecc5d-66f7-4ef3-9da7-59a35b8cb374" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 144 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df['reviews.numHelpful'] = df['reviews.numHelpful'].dropna()\n", + "df['reviews.rating'] = df['reviews.rating'].dropna()" + ], + "metadata": { + "id": "U0mMTXQSiPFA" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8ssJahi2ivjZ", + "outputId": "a319286e-c298-48f3-e6af-d663133e0aa2" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 146 + } + ] + }, + { + "cell_type": "code", + "source": [ + "sid = SentimentIntensityAnalyzer()" + ], + "metadata": { + "id": "3dLPk4DHXkZT" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def get_sentiment_label(score):\n", + " if score > 0.05:\n", + " return 'positive'\n", + " elif score < -0.05:\n", + " return 'negative'\n", + " else:\n", + " return 'neutral'" + ], + "metadata": { + "id": "BWV_g-qZTUMd" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def analyze_sentiment(text):\n", + " scores = sid.polarity_scores(text)\n", + " compound_score = scores['compound']\n", + " return get_sentiment_label(compound_score)" + ], + "metadata": { + "id": "JdY5eba8TZIy" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df['sentiment'] = df['reviews.text'].apply(analyze_sentiment)" + ], + "metadata": { + "id": "MO7FazRMc4_-" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df['true_sentiment'] = pd.cut(df['reviews.rating'], bins=[0, 1, 3, 5], labels=['negative', 'neutral', 'positive'])" + ], + "metadata": { + "id": "tHyVtYk1jVGi" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "true_labels = df['true_sentiment']\n", + "predicted_labels = df['sentiment']" + ], + "metadata": { + "id": "PnGm5Z6cT1G3" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "cm = confusion_matrix(true_labels, predicted_labels)" + ], + "metadata": { + "id": "PZaVGKnchtVm" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "plt.figure(figsize=(8, 6))\n", + "sns.heatmap(cm, annot=True, fmt=\"d\", cmap=\"Blues\")\n", + "plt.title(\"Confusion Matrix\")\n", + "plt.xlabel(\"Predicted Labels\")\n", + "plt.ylabel(\"True Labels\")\n", + "plt.show()" + ], + "metadata": { + "id": "cSgvucObUExk", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 564 + }, + "outputId": "7c4d554f-96af-4e1e-f958-1d5da67a1159" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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q8lX5eZm/+8lX758Sk83nFQRYC/pyhWdOnVKbdoz/QW5V7qRrtTUVGeXATiU02628ff3186dO++4f+fOnSpZsuRdz2O1WuXl5WX3YFj7nwlp0lSzP5qlzZs26syZ01r3/VotmD/Xbs00ICdNmvgv7d61U2fOnFb03h81eGCE8uVzU6vWbZ1dGlxE0pUr+uXQIf1y6JAk6czp0/rl0CHFnD2rpKQkTZvynvbvi9bZs2f088EbS6adi4vT46EtnVw5Miu33GwTFRWlRx55REWKFFGJEiXUsWNHHT582O6Yq1evKjw8XMWKFZOnp6c6d+6suLg4u2NOnjypNm3aqFChQipRooSGDRum69ev2x2zceNGPfTQQ7JarapUqZLmzZuX5c/NaYnk0KFD1bdvX+3Zs0fNmjWzNY1xcXFat26dZs+erXfffddZ5bm0V157XTOmTdX4cWN08eIF+ZUooSefekYv9g93dmlwUXFxsXplWKTi4+NV1NdXtR+qowWLvmB9PuSYgwd/Uu+e/1tH990JUZKk9h2e0Oujxuj48d/0zbIliv/zT/n4+OiBB6tr7qcLValSZWeVjHvUpk2bFB4erkceeUTXr1/Xq6++qhYtWujnn39W4cKFJUmDBw/WypUr9eWXX8rb21sRERHq1KmTfvjhB0k3vlikTZs28vf319atWxUTE6Pu3burQIECGj9+vCTp+PHjatOmjfr166eFCxdq3bp16t27t0qVKqXQ0NBM12sxDMNp45WLFy/W5MmTtWfPHqWlpUm6MYRap04dRUZG6umnnzZ13qvX734MAADIXTycuJZMsbDPHXbuC/O7mn7t+fPnVaJECW3atEmNGzdWQkKC/Pz8tGjRIj355JOSpF9++UVVq1bVtm3bVK9ePX333Xdq27atzp49awvqZs2apREjRuj8+fNyd3fXiBEjtHLlSv3000+29+rSpYvi4+O1alXmvzXMqetIPvPMM9q+fbuSkpJ05swZnTlzRklJSdq+fbvpJhIAACA3SUlJ0aVLl+wet644cycJCQmSZBuB2bNnj65du6bmzf833ez+++9X2bJlbTcob9u2TdWrV7ebIhgaGqpLly7p4MGDtmP+eo6bx9ztJudb5YoFyQsUKKBSpUqpVKlSKlCggLPLAQAALsaRcySjoqLk7e1t94iKirprTenp6Ro0aJAaNGigBx98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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(classification_report(true_labels, predicted_labels))" + ], + "metadata": { + "id": "RMhWSLbgUI_z", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "0cf2e3ab-cf37-43a1-b52a-89125b854654" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n", + "\n", + " negative 0.05 0.31 0.08 26\n", + " neutral 0.09 0.09 0.09 121\n", + " positive 0.97 0.91 0.94 2667\n", + "\n", + " accuracy 0.87 2814\n", + " macro avg 0.37 0.44 0.37 2814\n", + "weighted avg 0.92 0.87 0.90 2814\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.to_csv('output.csv', index=False)" + ], + "metadata": { + "id": "r50k8evJULZ_" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/Copy_of_Untitled8.ipynb b/Copy_of_Untitled8.ipynb new file mode 100644 index 0000000..3389d77 --- /dev/null +++ b/Copy_of_Untitled8.ipynb @@ -0,0 +1,1238 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "id": "HlAYzxmF628V" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib as plt\n", + "import pandas as pd\n", + "import nltk\n", + "import matplotlib.pyplot as plt\n", + "from nltk.sentiment import SentimentIntensityAnalyzer\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, classification_report\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "source": [ + "!git clone https://github.com/ZahraAlharz/Selection-Python.git" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5BKSQxhG-HQS", + "outputId": "44c329c0-0081-40d0-aa60-1d0ee78cf678" + }, + "execution_count": 135, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "fatal: destination path 'Selection-Python' already exists and is not an empty directory.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "nltk.download('punkt')\n", + "nltk.download('vader_lexicon')\n", + "nltk.download('stopwords')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xEnOyv11Xk5A", + "outputId": "9652672a-217e-40ae-ee9f-583dc4b84d61" + }, + "execution_count": 136, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package punkt to /root/nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n", + "[nltk_data] Downloading package vader_lexicon to /root/nltk_data...\n", + "[nltk_data] Package vader_lexicon is already up-to-date!\n", + "[nltk_data] Downloading package stopwords to /root/nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 136 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df = pd.read_csv(\"/content/Selection-Python/One_product.csv\")" + ], + "metadata": { + "id": "G_we7Za6-UO-" + }, + "execution_count": 137, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 776 + }, + "id": "l5iEReKSg8Iy", + "outputId": "ca512356-f2a8-4f8e-a4c4-35fcbfd2ad6e" + }, + "execution_count": 138, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " id name \\\n", + "0 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "1 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "2 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "3 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "4 AVqkIhwDv8e3D1O-lebb All-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,... \n", + "\n", + " asins brand categories \\\n", + "0 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "1 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "2 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "3 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "4 B01AHB9CN2 Amazon Electronics,iPad & Tablets,All Tablets,Fire Ta... \n", + "\n", + " keys manufacturer \\\n", + "0 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "1 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "2 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "3 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "4 841667104676,amazon/53004484,amazon/b01ahb9cn2... Amazon \n", + "\n", + " reviews.date reviews.dateAdded \\\n", + "0 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "1 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "2 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "3 2017-01-13T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "4 2017-01-12T00:00:00.000Z 2017-07-03T23:33:15Z \n", + "\n", + " reviews.dateSeen ... \\\n", + "0 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "1 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "2 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "3 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "4 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... \n", + "\n", + " reviews.doRecommend reviews.id reviews.numHelpful reviews.rating \\\n", + "0 True NaN 0 5 \n", + "1 True NaN 0 5 \n", + "2 True NaN 0 5 \n", + "3 True NaN 0 4 \n", + "4 True NaN 0 5 \n", + "\n", + " reviews.sourceURLs \\\n", + "0 http://reviews.bestbuy.com/3545/5620406/review... \n", + "1 http://reviews.bestbuy.com/3545/5620406/review... \n", + "2 http://reviews.bestbuy.com/3545/5620406/review... \n", + "3 http://reviews.bestbuy.com/3545/5620406/review... \n", + "4 http://reviews.bestbuy.com/3545/5620406/review... \n", + "\n", + " reviews.text \\\n", + "0 This product so far has not disappointed. My c... \n", + "1 great for beginner or experienced person. Boug... \n", + "2 Inexpensive tablet for him to use and learn on... \n", + "3 I've had my Fire HD 8 two weeks now and I love... \n", + "4 I bought this for my grand daughter when she c... \n", + "\n", + " reviews.title reviews.userCity \\\n", + "0 Kindle NaN \n", + "1 very fast NaN \n", + "2 Beginner tablet for our 9 year old son. NaN \n", + "3 Good!!! NaN \n", + "4 Fantastic Tablet for kids NaN \n", + "\n", + " reviews.userProvince reviews.username \n", + "0 NaN Adapter \n", + "1 NaN truman \n", + "2 NaN DaveZ \n", + "3 NaN Shacks \n", + "4 NaN explore42 \n", + "\n", + "[5 rows x 21 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idnameasinsbrandcategorieskeysmanufacturerreviews.datereviews.dateAddedreviews.dateSeen...reviews.doRecommendreviews.idreviews.numHelpfulreviews.ratingreviews.sourceURLsreviews.textreviews.titlereviews.userCityreviews.userProvincereviews.username
0AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...This product so far has not disappointed. My c...KindleNaNNaNAdapter
1AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...great for beginner or experienced person. Boug...very fastNaNNaNtruman
2AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...Inexpensive tablet for him to use and learn on...Beginner tablet for our 9 year old son.NaNNaNDaveZ
3AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-13T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN04http://reviews.bestbuy.com/3545/5620406/review...I've had my Fire HD 8 two weeks now and I love...Good!!!NaNNaNShacks
4AVqkIhwDv8e3D1O-lebbAll-New Fire HD 8 Tablet, 8 HD Display, Wi-Fi,...B01AHB9CN2AmazonElectronics,iPad & Tablets,All Tablets,Fire Ta...841667104676,amazon/53004484,amazon/b01ahb9cn2...Amazon2017-01-12T00:00:00.000Z2017-07-03T23:33:15Z2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z...TrueNaN05http://reviews.bestbuy.com/3545/5620406/review...I bought this for my grand daughter when she c...Fantastic Tablet for kidsNaNNaNexplore42
\n", + "

5 rows × 21 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "df" + } + }, + "metadata": {}, + "execution_count": 138 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.info()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gCO7BFQ2-URm", + "outputId": "6784e1ef-4cbb-4eec-dea6-28b05333a860" + }, + "execution_count": 139, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "RangeIndex: 2814 entries, 0 to 2813\n", + "Data columns (total 21 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 id 2814 non-null object \n", + " 1 name 2814 non-null object \n", + " 2 asins 2814 non-null object \n", + " 3 brand 2814 non-null object \n", + " 4 categories 2814 non-null object \n", + " 5 keys 2814 non-null object \n", + " 6 manufacturer 2814 non-null object \n", + " 7 reviews.date 2814 non-null object \n", + " 8 reviews.dateAdded 2814 non-null object \n", + " 9 reviews.dateSeen 2814 non-null object \n", + " 10 reviews.didPurchase 0 non-null float64\n", + " 11 reviews.doRecommend 2814 non-null bool \n", + " 12 reviews.id 0 non-null float64\n", + " 13 reviews.numHelpful 2814 non-null int64 \n", + " 14 reviews.rating 2814 non-null int64 \n", + " 15 reviews.sourceURLs 2814 non-null object \n", + " 16 reviews.text 2814 non-null object \n", + " 17 reviews.title 2814 non-null object \n", + " 18 reviews.userCity 0 non-null float64\n", + " 19 reviews.userProvince 0 non-null float64\n", + " 20 reviews.username 2814 non-null object \n", + "dtypes: bool(1), float64(4), int64(2), object(14)\n", + "memory usage: 442.6+ KB\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "id": "8RMJKoZc-UUR", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "9aff0a2c-5e28-4257-e0d9-2df7c1535115" + }, + "execution_count": 140, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 140 + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "PkD-EeQr-UaW" + }, + "execution_count": 140, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.info()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "l-rfcGXBC3cx", + "outputId": "2dc90236-49f2-4dcc-dcf0-b3f0a11f8b5a" + }, + "execution_count": 141, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "RangeIndex: 2814 entries, 0 to 2813\n", + "Data columns (total 21 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 id 2814 non-null object \n", + " 1 name 2814 non-null object \n", + " 2 asins 2814 non-null object \n", + " 3 brand 2814 non-null object \n", + " 4 categories 2814 non-null object \n", + " 5 keys 2814 non-null object \n", + " 6 manufacturer 2814 non-null object \n", + " 7 reviews.date 2814 non-null object \n", + " 8 reviews.dateAdded 2814 non-null object \n", + " 9 reviews.dateSeen 2814 non-null object \n", + " 10 reviews.didPurchase 0 non-null float64\n", + " 11 reviews.doRecommend 2814 non-null bool \n", + " 12 reviews.id 0 non-null float64\n", + " 13 reviews.numHelpful 2814 non-null int64 \n", + " 14 reviews.rating 2814 non-null int64 \n", + " 15 reviews.sourceURLs 2814 non-null object \n", + " 16 reviews.text 2814 non-null object \n", + " 17 reviews.title 2814 non-null object \n", + " 18 reviews.userCity 0 non-null float64\n", + " 19 reviews.userProvince 0 non-null float64\n", + " 20 reviews.username 2814 non-null object \n", + "dtypes: bool(1), float64(4), int64(2), object(14)\n", + "memory usage: 442.6+ KB\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "id": "hw5xQ95UC9Ya", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "48384178-bb1a-491c-c589-d2ecd7045a9d" + }, + "execution_count": 142, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 142 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df['name'] = df['name'].astype(str)\n", + "df['reviews.numHelpful'] = df['reviews.numHelpful'].astype(float)\n", + "df['reviews.rating'] = df['reviews.rating'].astype(float)\n", + "df['reviews.text'] = df['reviews.text'].astype(str)\n", + "df['reviews.title'] = df['reviews.title'].astype(str)" + ], + "metadata": { + "id": "dRTGRzjIZhVb" + }, + "execution_count": 143, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IVi3lS-th5qz", + "outputId": "608ecc5d-66f7-4ef3-9da7-59a35b8cb374" + }, + "execution_count": 144, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 144 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df['reviews.numHelpful'] = df['reviews.numHelpful'].dropna()\n", + "df['reviews.rating'] = df['reviews.rating'].dropna()" + ], + "metadata": { + "id": "U0mMTXQSiPFA" + }, + "execution_count": 145, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df.isnull().sum()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8ssJahi2ivjZ", + "outputId": "a319286e-c298-48f3-e6af-d663133e0aa2" + }, + "execution_count": 146, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id 0\n", + "name 0\n", + "asins 0\n", + "brand 0\n", + "categories 0\n", + "keys 0\n", + "manufacturer 0\n", + "reviews.date 0\n", + "reviews.dateAdded 0\n", + "reviews.dateSeen 0\n", + "reviews.didPurchase 2814\n", + "reviews.doRecommend 0\n", + "reviews.id 2814\n", + "reviews.numHelpful 0\n", + "reviews.rating 0\n", + "reviews.sourceURLs 0\n", + "reviews.text 0\n", + "reviews.title 0\n", + "reviews.userCity 2814\n", + "reviews.userProvince 2814\n", + "reviews.username 0\n", + "dtype: int64" + ] + }, + "metadata": {}, + "execution_count": 146 + } + ] + }, + { + "cell_type": "code", + "source": [ + "sid = SentimentIntensityAnalyzer()" + ], + "metadata": { + "id": "3dLPk4DHXkZT" + }, + "execution_count": 147, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def get_sentiment_label(score):\n", + " if score > 0.05:\n", + " return 'positive'\n", + " elif score < -0.05:\n", + " return 'negative'\n", + " else:\n", + " return 'neutral'" + ], + "metadata": { + "id": "BWV_g-qZTUMd" + }, + "execution_count": 148, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def analyze_sentiment(text):\n", + " scores = sid.polarity_scores(text)\n", + " compound_score = scores['compound']\n", + " return get_sentiment_label(compound_score)" + ], + "metadata": { + "id": "JdY5eba8TZIy" + }, + "execution_count": 149, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df['sentiment'] = df['reviews.text'].apply(analyze_sentiment)" + ], + "metadata": { + "id": "MO7FazRMc4_-" + }, + "execution_count": 150, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "df['true_sentiment'] = pd.cut(df['reviews.rating'], bins=[0, 1, 3, 5], labels=['negative', 'neutral', 'positive'])" + ], + "metadata": { + "id": "tHyVtYk1jVGi" + }, + "execution_count": 151, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "true_labels = df['true_sentiment']\n", + "predicted_labels = df['sentiment']" + ], + "metadata": { + "id": "PnGm5Z6cT1G3" + }, + "execution_count": 152, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "cm = confusion_matrix(true_labels, predicted_labels)" + ], + "metadata": { + "id": "PZaVGKnchtVm" + }, + "execution_count": 153, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "plt.figure(figsize=(8, 6))\n", + "sns.heatmap(cm, annot=True, fmt=\"d\", cmap=\"Blues\")\n", + "plt.title(\"Confusion Matrix\")\n", + "plt.xlabel(\"Predicted Labels\")\n", + "plt.ylabel(\"True Labels\")\n", + "plt.show()" + ], + "metadata": { + "id": "cSgvucObUExk", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 564 + }, + "outputId": "7c4d554f-96af-4e1e-f958-1d5da67a1159" + }, + "execution_count": 154, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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q8lX5eZm/+8lX758Sk83nFQRYC/pyhWdOnVKbdoz/QW5V7qRrtTUVGeXATiU02628ff3186dO++4f+fOnSpZsuRdz2O1WuXl5WX3YFj7nwlp0lSzP5qlzZs26syZ01r3/VotmD/Xbs00ICdNmvgv7d61U2fOnFb03h81eGCE8uVzU6vWbZ1dGlxE0pUr+uXQIf1y6JAk6czp0/rl0CHFnD2rpKQkTZvynvbvi9bZs2f088EbS6adi4vT46EtnVw5Miu33GwTFRWlRx55REWKFFGJEiXUsWNHHT582O6Yq1evKjw8XMWKFZOnp6c6d+6suLg4u2NOnjypNm3aqFChQipRooSGDRum69ev2x2zceNGPfTQQ7JarapUqZLmzZuX5c/NaYnk0KFD1bdvX+3Zs0fNmjWzNY1xcXFat26dZs+erXfffddZ5bm0V157XTOmTdX4cWN08eIF+ZUooSefekYv9g93dmlwUXFxsXplWKTi4+NV1NdXtR+qowWLvmB9PuSYgwd/Uu+e/1tH990JUZKk9h2e0Oujxuj48d/0zbIliv/zT/n4+OiBB6tr7qcLValSZWeVjHvUpk2bFB4erkceeUTXr1/Xq6++qhYtWujnn39W4cKFJUmDBw/WypUr9eWXX8rb21sRERHq1KmTfvjhB0k3vlikTZs28vf319atWxUTE6Pu3burQIECGj9+vCTp+PHjatOmjfr166eFCxdq3bp16t27t0qVKqXQ0NBM12sxDMNp45WLFy/W5MmTtWfPHqWlpUm6MYRap04dRUZG6umnnzZ13qvX734MAADIXTycuJZMsbDPHXbuC/O7mn7t+fPnVaJECW3atEmNGzdWQkKC/Pz8tGjRIj355JOSpF9++UVVq1bVtm3bVK9ePX333Xdq27atzp49awvqZs2apREjRuj8+fNyd3fXiBEjtHLlSv3000+29+rSpYvi4+O1alXmvzXMqetIPvPMM9q+fbuSkpJ05swZnTlzRklJSdq+fbvpJhIAACA3SUlJ0aVLl+wet644cycJCQmSZBuB2bNnj65du6bmzf833ez+++9X2bJlbTcob9u2TdWrV7ebIhgaGqpLly7p4MGDtmP+eo6bx9ztJudb5YoFyQsUKKBSpUqpVKlSKlCggLPLAQAALsaRcySjoqLk7e1t94iKirprTenp6Ro0aJAaNGigBx98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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(classification_report(true_labels, predicted_labels))" + ], + "metadata": { + "id": "RMhWSLbgUI_z", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "0cf2e3ab-cf37-43a1-b52a-89125b854654" + }, + "execution_count": 155, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n", + "\n", + " negative 0.05 0.31 0.08 26\n", + " neutral 0.09 0.09 0.09 121\n", + " positive 0.97 0.91 0.94 2667\n", + "\n", + " accuracy 0.87 2814\n", + " macro avg 0.37 0.44 0.37 2814\n", + "weighted avg 0.92 0.87 0.90 2814\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.to_csv('output.csv', index=False)" + ], + "metadata": { + "id": "r50k8evJULZ_" + }, + "execution_count": 156, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VXKPWqgQr_nW", + "outputId": "fe82617c-716f-4ebf-c436-3aa4a789ce60" + }, + "execution_count": 162, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!git clone https://github.com/ZahraAlharz/Selection-Python.git" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mBlZU3qMvuZG", + "outputId": "39d20b0b-54b1-435d-fef2-46a9afd6178d" + }, + "execution_count": 169, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "fatal: destination path 'Selection-Python' already exists and is not an empty directory.\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!git config --global user.name \"ZahraAlharz\"\n", + "!git config --global user.email \"zahra_alharz@icloud.com\"" + ], + "metadata": { + "id": "-ytE8rdRsKh5" + }, + "execution_count": 171, + "outputs": [] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "XwpZTMcQu9MH" + }, + "execution_count": 171, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "!git add .\n", + "!git commit -m \"Updated the repository\"" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "B7Y2VGt_txTr", + "outputId": "bf35fc14-d623-4c58-caa5-d1a366a531f3" + }, + "execution_count": 172, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "warning: adding embedded git repository: Selection-Python\n", + "\u001b[33mhint: You've added another git repository inside your current repository.\u001b[m\n", + "\u001b[33mhint: Clones of the outer repository will not contain the contents of\u001b[m\n", + "\u001b[33mhint: the embedded repository and will not know how to obtain it.\u001b[m\n", + "\u001b[33mhint: If you meant to add a submodule, use:\u001b[m\n", + "\u001b[33mhint: \u001b[m\n", + "\u001b[33mhint: \tgit submodule add Selection-Python\u001b[m\n", + "\u001b[33mhint: \u001b[m\n", + "\u001b[33mhint: If you added this path by mistake, you can remove it from the\u001b[m\n", + "\u001b[33mhint: index with:\u001b[m\n", + "\u001b[33mhint: \u001b[m\n", + "\u001b[33mhint: \tgit rm --cached Selection-Python\u001b[m\n", + "\u001b[33mhint: \u001b[m\n", + "\u001b[33mhint: See \"git help submodule\" for more information.\u001b[m\n", + "error: open(\"drive/MyDrive/6sigma/Six Sigma Yellow Belt Project Specialization.gdoc\"): Operation not supported\n", + "error: unable to index file 'drive/MyDrive/6sigma/Six Sigma Yellow Belt Project Specialization.gdoc'\n", + "fatal: adding files failed\n", + "On branch master\n", + "\n", + "Initial commit\n", + "\n", + "Untracked files:\n", + " (use \"git add ...\" to include in what will be committed)\n", + "\t\u001b[31m.config/\u001b[m\n", + "\t\u001b[31mSelection-Python/\u001b[m\n", + "\t\u001b[31mdrive/\u001b[m\n", + "\t\u001b[31moutput.csv\u001b[m\n", + "\t\u001b[31msample_data/\u001b[m\n", + "\n", + "nothing added to commit but untracked files present (use \"git add\" to track)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!git remote add origin https://github.com/ZahraAlharz/Selection-Python.git\n", + "!git push -u origin master" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "v1KZ1_uUtyc-", + "outputId": "569af5bc-7a65-4c69-e2bb-6a08f1c9a11e" + }, + "execution_count": 173, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "error: remote origin already exists.\n", + "error: src refspec master does not match any\n", + "\u001b[31merror: failed to push some refs to 'https://github.com/ZahraAlharz/Selection-Python.git'\n", + "\u001b[m" + ] + } + ] + } + ] +} \ No newline at end of file