diff --git a/article/proceedings.tex b/article/proceedings.tex index 5dd59e79c28141fc24f2becc9babe074310b3db3..4167ad8d30f5241f2a0a3cdb6166ac25e273eecf 100644 --- a/article/proceedings.tex +++ b/article/proceedings.tex @@ -725,13 +725,16 @@ The edit is not saved. \textbf{Interesting questions} \begin{itemize} - \item how many filters are there (were there over the years): 954 filters (stand: 06.01.2019); TODO: historically? + \item how many filters are there (were there over the years): 954 filters (stand: 06.01.2019); TODO: historically?; This includes deleted filters \item what do the most active filters do?: see~\ref{tab:most-active-actions} \item get a sense of what gets filtered (more qualitative): TODO: refine after sorting through manual categories; preliminary: vandalism; unintentional suboptimal behavior from new users who don't know better ("good faith edits") such as blanking an article/section; creating an article without categories; adding larger texts without references; large unwikified new article (180); or from users who are too lazy (to write proper edit summaries; editing behaviours and styles not suitable for an encyclopedia (poor grammar/not commiting to orthography norms; use of emoticons and !; ascii art?); "unexplained removal of sourced content" (636) may be an attempt to silence a view point the editor doesn't like; self-promotion(adding unreferenced material to BLP; "users creating autobiographies" 148;); harassment; sockpuppetry; potential copyright violations; that's more or less it actually. There's a third bigger cluster of maintenance stuff, such as tracking bugs or other problems, trying to sort through bot edits and such. For further details see the jupyter notebook. + Interestingly, there was a guideline somewhere stating that no trivial behaviour should trip filters (e.g. starting every paragraph with a small letter;) I actually think, a bot fixing this would be more appropriate. \item has the willingness of the community to use filters increased over time?: looking at aggregated values of number of triggered filters per year, the answer is rather it's quite constant; TODO: plot it at a finer granularity + when aggregating filter triggers per month, one notices that there's an overall slight upward tendency. + Also, there is a dip in the middle of 2014 and a notable peak at the beginning of 2016, that should be investigated further. \item how often were (which) filters triggered: see \url{filter-lists/20190106115600_filters-sorted-by-hits.csv} and~\ref{tab:most-active-actions}; see also jupyter notebook for aggregated hitcounts over tagged categories \item percentage of triggered filters/all edits; break down triggered filters according to typology: TODO still need the complete abuse\_filter\_log table!; and probably further dumps in order to know total number of edits - \item percentage filters of different types over the years: TODO according to actions (I need a complete abuse\_filter\_log table for this!); according to self-assigned tags (finish tagging!) + \item percentage filters of different types over the years: according to actions (I need a complete abuse\_filter\_log table for this!); according to self-assigned tags %TODO plot! \item what gets classified as vandalism? has this changed over time? TODO: (look at words and patterns triggered by the vandalism filters; read vandalism policy page); pay special attention to filters labeled as vandalism by the edit filter editors (i.e. in the public description) vs these I labeled as vandalism \end{itemize} @@ -755,7 +758,7 @@ The edit is not saved. \textbf{Questions on abuse\_filter\_log table} \begin{itemize} \item how often were filters with different actions triggered? (afl\_actions) - \item what types of users trigger the filters (IPs? registered?) + \item what types of users trigger the filters (IPs? registered?) : IPs: 16,489,266, logged in users: 6,984,897 (Stand 15.03.2019); \item on what articles filters get triggered most frequently (afl\_title) \item what types of user actions trigger filters most frequently? (afl\_action) (edit, delete, createaccount, move, upload, autocreateaccount, stashupload) \item in which namespaces get filters triggered most frequently? diff --git a/src/explore.ipynb b/src/explore.ipynb index b5330554cb455cd0f5df72221d5f3665275f0ecf..ba599cf0d143130bfbdfd3a099501febf00b094c 100644 --- a/src/explore.ipynb +++ b/src/explore.ipynb @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -311,6 +311,192 @@ "# \"The group this filter belongs to, as defined in $wgAbuseFilterValidGroups.\" still don't get it" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Timestamp\n", + "\n", + "Have a lot of filters been modified for the last time recently?" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "af_timestamp\n", + "2009-03-31 29\n", + "2009-04-30 19\n", + "2009-05-31 11\n", + "2009-06-30 8\n", + "2009-07-31 8\n", + "2009-08-31 21\n", + "2009-09-30 21\n", + "2009-10-31 6\n", + "2009-11-30 13\n", + "2009-12-31 3\n", + "2010-01-31 9\n", + "2010-02-28 9\n", + "2010-03-31 10\n", + "2010-04-30 5\n", + "2010-05-31 5\n", + "2010-06-30 1\n", + "2010-07-31 0\n", + "2010-08-31 10\n", + "2010-09-30 5\n", + "2010-10-31 0\n", + "2010-11-30 4\n", + "2010-12-31 1\n", + "2011-01-31 2\n", + "2011-02-28 0\n", + "2011-03-31 23\n", + "2011-04-30 2\n", + "2011-05-31 3\n", + "2011-06-30 1\n", + "2011-07-31 0\n", + "2011-08-31 2\n", + "2011-09-30 1\n", + "2011-10-31 0\n", + "2011-11-30 1\n", + "2011-12-31 0\n", + "2012-01-31 0\n", + "2012-02-29 10\n", + "2012-03-31 0\n", + "2012-04-30 0\n", + "2012-05-31 0\n", + "2012-06-30 1\n", + "2012-07-31 1\n", + "2012-08-31 36\n", + "2012-09-30 2\n", + "2012-10-31 1\n", + "2012-11-30 1\n", + "2012-12-31 2\n", + "2013-01-31 4\n", + "2013-02-28 1\n", + "2013-03-31 2\n", + "2013-04-30 21\n", + "2013-05-31 0\n", + "2013-06-30 1\n", + "2013-07-31 2\n", + "2013-08-31 0\n", + "2013-09-30 0\n", + "2013-10-31 2\n", + "2013-11-30 0\n", + "2013-12-31 0\n", + "2014-01-31 13\n", + "2014-02-28 0\n", + "2014-03-31 9\n", + "2014-04-30 3\n", + "2014-05-31 0\n", + "2014-06-30 1\n", + "2014-07-31 0\n", + "2014-08-31 3\n", + "2014-09-30 1\n", + "2014-10-31 0\n", + "2014-11-30 0\n", + "2014-12-31 3\n", + "2015-01-31 4\n", + "2015-02-28 33\n", + "2015-03-31 2\n", + "2015-04-30 3\n", + "2015-05-31 2\n", + "2015-06-30 12\n", + "2015-07-31 9\n", + "2015-08-31 8\n", + "2015-09-30 2\n", + "2015-10-31 1\n", + "2015-11-30 3\n", + "2015-12-31 8\n", + "2016-01-31 5\n", + "2016-02-29 3\n", + "2016-03-31 2\n", + "2016-04-30 6\n", + "2016-05-31 2\n", + "2016-06-30 93\n", + "2016-07-31 8\n", + "2016-08-31 43\n", + "2016-09-30 21\n", + "2016-10-31 7\n", + "2016-11-30 5\n", + "2016-12-31 7\n", + "2017-01-31 9\n", + "2017-02-28 7\n", + "2017-03-31 6\n", + "2017-04-30 25\n", + "2017-05-31 30\n", + "2017-06-30 4\n", + "2017-07-31 3\n", + "2017-08-31 1\n", + "2017-09-30 4\n", + "2017-10-31 10\n", + "2017-11-30 3\n", + "2017-12-31 6\n", + "2018-01-31 6\n", + "2018-02-28 2\n", + "2018-03-31 7\n", + "2018-04-30 21\n", + "2018-05-31 3\n", + "2018-06-30 3\n", + "2018-07-31 9\n", + "2018-08-31 9\n", + "2018-09-30 11\n", + "2018-10-31 42\n", + "2018-11-30 34\n", + "2018-12-31 32\n", + "2019-01-31 25\n", + "Freq: M, dtype: int64\n" + ] + } + ], + "source": [ + "df_origin['af_timestamp'] = pd.to_datetime(df_origin['af_timestamp'], format=\"%Y%m%d%H%M%S\")\n", + "\n", + "#df_modified = df_origin['af_timestamp'].groupby([df_origin.af_timestamp.dt.to_period(\"M\")]).agg('count')\n", + "#df_modified\n", + "df_modified = df_origin.set_index('af_timestamp').resample(\"M\").size()\n", + "\n", + "with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n", + " print (df_modified)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.xlabel('Month')\n", + "plt.ylabel('Num filters')\n", + "plt.plot(df_modified, 'bo')\n", + "plt.show()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Filter hits over the years" + ] + }, { "cell_type": "code", "execution_count": 5,