File size: 28,515 Bytes
de99c92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### **Visualizing Data from r/place**\n",
    "Here, I will be using matplotlib to visualize common words to preview whether the sentiment to r/place 2023 was generally negative, neutral, or positive."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import csv\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we will find the most common comments on r/place 2023."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'place_comments.csv'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[7], line 8\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[39m# open the file storing reddit comments\u001b[39;00m\n\u001b[0;32m      6\u001b[0m \u001b[39m# specify utf-8 encoding to prevent unicode decode error\u001b[39;00m\n\u001b[0;32m      7\u001b[0m filepath \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mplace_comments.csv\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m----> 8\u001b[0m \u001b[39mwith\u001b[39;00m \u001b[39mopen\u001b[39;49m(filepath, \u001b[39m\"\u001b[39;49m\u001b[39mr\u001b[39;49m\u001b[39m\"\u001b[39;49m, encoding\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mutf-8\u001b[39;49m\u001b[39m\"\u001b[39;49m) \u001b[39mas\u001b[39;00m f:\n\u001b[0;32m      9\u001b[0m     skip \u001b[39m=\u001b[39m \u001b[39mnext\u001b[39m(f)\n\u001b[0;32m     10\u001b[0m     csv_reader \u001b[39m=\u001b[39m csv\u001b[39m.\u001b[39mreader(f)\n",
      "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\IPython\\core\\interactiveshell.py:284\u001b[0m, in \u001b[0;36m_modified_open\u001b[1;34m(file, *args, **kwargs)\u001b[0m\n\u001b[0;32m    277\u001b[0m \u001b[39mif\u001b[39;00m file \u001b[39min\u001b[39;00m {\u001b[39m0\u001b[39m, \u001b[39m1\u001b[39m, \u001b[39m2\u001b[39m}:\n\u001b[0;32m    278\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[0;32m    279\u001b[0m         \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mIPython won\u001b[39m\u001b[39m'\u001b[39m\u001b[39mt let you open fd=\u001b[39m\u001b[39m{\u001b[39;00mfile\u001b[39m}\u001b[39;00m\u001b[39m by default \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m    280\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39mas it is likely to crash IPython. If you know what you are doing, \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m    281\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39myou can use builtins\u001b[39m\u001b[39m'\u001b[39m\u001b[39m open.\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[0;32m    282\u001b[0m     )\n\u001b[1;32m--> 284\u001b[0m \u001b[39mreturn\u001b[39;00m io_open(file, \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
      "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'place_comments.csv'"
     ]
    }
   ],
   "source": [
    "# store the sentence frequencies in a dict\n",
    "# key=word, value=frequency\n",
    "freqs = dict()\n",
    "\n",
    "# open the file storing reddit comments\n",
    "# specify utf-8 encoding to prevent unicode decode error\n",
    "filepath = \"data/place_comments.csv\"\n",
    "with open(filepath, \"r\", encoding=\"utf-8\") as f:\n",
    "    skip = next(f)\n",
    "    csv_reader = csv.reader(f)\n",
    "    for row in csv_reader:\n",
    "        comment = row[0].lower()\n",
    "        if comment not in freqs:\n",
    "            freqs[comment] = 0\n",
    "        freqs[comment] += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# sort the words in decreasing frequency\n",
    "comments = [(comment, freqs[comment]) for comment in freqs]\n",
    "comments.sort(key=lambda x: -x[1])\n",
    "\n",
    "# store the top comments in two axes\n",
    "# modify the LIMIT to find the top # of comments\n",
    "LIMIT = 10\n",
    "y, x = [], []\n",
    "for i in range(LIMIT-1, -1, -1):\n",
    "    y.append(comments[i][0])\n",
    "    x.append(comments[i][1])\n",
    "\n",
    "# plot the results\n",
    "plt.barh(y, x)\n",
    "plt.title(\"Most Frequent Comments on r/place 2023 Discussion Threads\")\n",
    "plt.xlabel(\"Comment Frequency\")\n",
    "plt.ylabel(\"Comment\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### **Data Preview Analysis**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**u/spez is unpopular.**<br>\n",
    "From the visualization, we can see that \"fuck u/spez\" is the most popular comment, with over 500 instances being tracked in the comment sections. The variant \"fuck spez\" is the second most popular comment, indicating a massive distrust for u/spez, which represents Steve Huffman's account, who is the CEO of Reddit."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**There are numerous German users/comments on Reddit.**<br>\n",
    "Surprisingly, five of the top ten frequent comments are in German. Therefore, when performing sentiment analysis on r/place data, the NLP model can be inaccurate if it is unable to understand German comments.\n",
    "\n",
    "A workaround for this problem would be to identify if a comment is German or English. If a German NLP model and an English NLP model predict on comments of their respective to find the overall sentiment of the website."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "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.11.2"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}