diff --git a/Project/SentimentAnalyzer.ipynb b/Project/SentimentAnalyzer.ipynb index acad8d8..b2c62ba 100644 --- a/Project/SentimentAnalyzer.ipynb +++ b/Project/SentimentAnalyzer.ipynb @@ -2,17 +2,602 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "All tests passed\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Analy\\AppData\\Local\\Temp\\ipykernel_37656\\1391354027.py:33: DtypeWarning: Columns (1,10) have mixed types. Specify dtype option on import or set low_memory=False.\n", + " df = pd.read_csv(\"data.csv\")\n" + ] + }, + { + "data": { + "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", + "
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...TrueNaN0.05.0http://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...TrueNaN0.05.0http://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...TrueNaN0.05.0http://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...TrueNaN0.04.0http://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...TrueNaN0.05.0http://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", + "
" + ], + "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 ... reviews.doRecommend \\\n", + "0 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "1 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "2 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "3 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "4 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... True \n", + "\n", + " reviews.id reviews.numHelpful reviews.rating \\\n", + "0 NaN 0.0 5.0 \n", + "1 NaN 0.0 5.0 \n", + "2 NaN 0.0 5.0 \n", + "3 NaN 0.0 4.0 \n", + "4 NaN 0.0 5.0 \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]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# You may start here" + "import textblob\n", + "import pandas as pd\n", + "def sentimentAnalyzer(text):\n", + " blob = textblob.TextBlob(text)\n", + " polarity = blob.sentiment.polarity\n", + " if polarity < -0.2:\n", + " return \"negative\"\n", + " elif polarity > 0.2:\n", + " return \"positive\"\n", + " else:\n", + " return \"neutral\"\n", + "\n", + "def verifyTest():\n", + " assert sentimentAnalyzer(\"Happy\") == \"positive\"\n", + " assert sentimentAnalyzer(\"Exciting\") == \"positive\"\n", + " assert sentimentAnalyzer(\"good\") == \"positive\"\n", + " assert sentimentAnalyzer(\"rich\") == \"positive\"\n", + " assert sentimentAnalyzer(\"beautiful\") == \"positive\"\n", + " assert sentimentAnalyzer(\"nice\") == \"positive\"\n", + " assert sentimentAnalyzer(\"smile\") == \"positive\"\n", + "\n", + " assert sentimentAnalyzer(\"Sad\") == \"negative\"\n", + " assert sentimentAnalyzer(\"disappointed\") == \"negative\"\n", + " assert sentimentAnalyzer(\"bad\") == \"negative\"\n", + " assert sentimentAnalyzer(\"poor\") == \"negative\"\n", + " assert sentimentAnalyzer(\"anger\") == \"negative\"\n", + "\n", + " \n", + " print(\"All tests passed\")\n", + "\n", + "verifyTest()\n", + "\n", + "df = pd.read_csv(\"data.csv\")\n", + "\n", + "\n", + "productDF = df[df[\"id\"] == \"AVqkIhwDv8e3D1O-lebb\"]\n", + "productDF.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Analy\\AppData\\Local\\Temp\\ipykernel_37656\\3014508027.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " productDF[\"sentiment\"] = productDF[\"reviews.text\"].apply(sentimentAnalyzer)\n" + ] + }, + { + "data": { + "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", + "
idnameasinsbrandcategorieskeysmanufacturerreviews.datereviews.dateAddedreviews.dateSeen...reviews.idreviews.numHelpfulreviews.ratingreviews.sourceURLsreviews.textreviews.titlereviews.userCityreviews.userProvincereviews.usernamesentiment
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...NaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...This product so far has not disappointed. My c...KindleNaNNaNAdapterpositive
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...NaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...great for beginner or experienced person. Boug...very fastNaNNaNtrumanpositive
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...NaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...Inexpensive tablet for him to use and learn on...Beginner tablet for our 9 year old son.NaNNaNDaveZpositive
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...NaN0.04.0http://reviews.bestbuy.com/3545/5620406/review...I've had my Fire HD 8 two weeks now and I love...Good!!!NaNNaNShackspositive
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...NaN0.05.0http://reviews.bestbuy.com/3545/5620406/review...I bought this for my grand daughter when she c...Fantastic Tablet for kidsNaNNaNexplore42positive
\n", + "

5 rows × 22 columns

\n", + "
" + ], + "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 ... reviews.id \\\n", + "0 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... NaN \n", + "1 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... NaN \n", + "2 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... NaN \n", + "3 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... NaN \n", + "4 2017-06-07T09:04:00.000Z,2017-04-30T00:45:00.000Z ... NaN \n", + "\n", + " reviews.numHelpful reviews.rating \\\n", + "0 0.0 5.0 \n", + "1 0.0 5.0 \n", + "2 0.0 5.0 \n", + "3 0.0 4.0 \n", + "4 0.0 5.0 \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 sentiment \n", + "0 NaN Adapter positive \n", + "1 NaN truman positive \n", + "2 NaN DaveZ positive \n", + "3 NaN Shacks positive \n", + "4 NaN explore42 positive \n", + "\n", + "[5 rows x 22 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "productDF[\"sentiment\"] = productDF[\"reviews.text\"].apply(sentimentAnalyzer)\n", + "productDF.head()" ] } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.1" } }, "nbformat": 4, diff --git a/Project/tempCodeRunnerFile.ipynb b/Project/tempCodeRunnerFile.ipynb new file mode 100644 index 0000000..c3bc1b7 --- /dev/null +++ b/Project/tempCodeRunnerFile.ipynb @@ -0,0 +1 @@ + print("All tests passed") \ No newline at end of file