{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# HW5 -- Artificial Artificial Intelligence" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "neg = pd.read_csv('AMT_neg.csv')\n", "pos = pd.read_csv('AMT_pos.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initial EDA" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "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", "
HITIdHITTypeIdTitleDescriptionKeywordsRewardCreationTimeMaxAssignmentsRequesterAnnotationAssignmentDurationInSeconds...RejectionTimeRequesterFeedbackWorkTimeInSecondsLifetimeApprovalRateLast30DaysApprovalRateLast7DaysApprovalRateInput.textAnswer.sentiment.labelApproveReject
03IQ9O0AYW6ZI3GD740H32KGG2SWITJ3N0K7CX2I27L2NR2L8D93MF8LIRA5JSentiment analysisSentiment analysissentiment, text$0.02Fri Nov 01 12:08:17 PDT 20193BatchId:3821423;OriginalHitTemplateId:928390909;10800...NaNNaN440% (0/0)0% (0/0)0% (0/0)Missed Opportunity\\nI had been very excited to...NeutralNaNNaN
13IQ9O0AYW6ZI3GD740H32KGG2SWITJ3N0K7CX2I27L2NR2L8D93MF8LIRA5JSentiment analysisSentiment analysissentiment, text$0.02Fri Nov 01 12:08:17 PDT 20193BatchId:3821423;OriginalHitTemplateId:928390909;10800...NaNNaN70% (0/0)0% (0/0)0% (0/0)Missed Opportunity\\nI had been very excited to...NegativeNaNNaN
23IQ9O0AYW6ZI3GD740H32KGG2SWITJ3N0K7CX2I27L2NR2L8D93MF8LIRA5JSentiment analysisSentiment analysissentiment, text$0.02Fri Nov 01 12:08:17 PDT 20193BatchId:3821423;OriginalHitTemplateId:928390909;10800...NaNNaN4490% (0/0)0% (0/0)0% (0/0)Missed Opportunity\\nI had been very excited to...PositiveNaNNaN
\n", "

3 rows × 31 columns

\n", "
" ], "text/plain": [ " HITId HITTypeId \\\n", "0 3IQ9O0AYW6ZI3GD740H32KGG2SWITJ 3N0K7CX2I27L2NR2L8D93MF8LIRA5J \n", "1 3IQ9O0AYW6ZI3GD740H32KGG2SWITJ 3N0K7CX2I27L2NR2L8D93MF8LIRA5J \n", "2 3IQ9O0AYW6ZI3GD740H32KGG2SWITJ 3N0K7CX2I27L2NR2L8D93MF8LIRA5J \n", "\n", " Title Description Keywords Reward \\\n", "0 Sentiment analysis Sentiment analysis sentiment, text $0.02 \n", "1 Sentiment analysis Sentiment analysis sentiment, text $0.02 \n", "2 Sentiment analysis Sentiment analysis sentiment, text $0.02 \n", "\n", " CreationTime MaxAssignments \\\n", "0 Fri Nov 01 12:08:17 PDT 2019 3 \n", "1 Fri Nov 01 12:08:17 PDT 2019 3 \n", "2 Fri Nov 01 12:08:17 PDT 2019 3 \n", "\n", " RequesterAnnotation \\\n", "0 BatchId:3821423;OriginalHitTemplateId:928390909; \n", "1 BatchId:3821423;OriginalHitTemplateId:928390909; \n", "2 BatchId:3821423;OriginalHitTemplateId:928390909; \n", "\n", " AssignmentDurationInSeconds ... RejectionTime RequesterFeedback \\\n", "0 10800 ... NaN NaN \n", "1 10800 ... NaN NaN \n", "2 10800 ... NaN NaN \n", "\n", " WorkTimeInSeconds LifetimeApprovalRate Last30DaysApprovalRate \\\n", "0 44 0% (0/0) 0% (0/0) \n", "1 7 0% (0/0) 0% (0/0) \n", "2 449 0% (0/0) 0% (0/0) \n", "\n", " Last7DaysApprovalRate Input.text \\\n", "0 0% (0/0) Missed Opportunity\\nI had been very excited to... \n", "1 0% (0/0) Missed Opportunity\\nI had been very excited to... \n", "2 0% (0/0) Missed Opportunity\\nI had been very excited to... \n", "\n", " Answer.sentiment.label Approve Reject \n", "0 Neutral NaN NaN \n", "1 Negative NaN NaN \n", "2 Positive NaN NaN \n", "\n", "[3 rows x 31 columns]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neg[:3]" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "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", "
HITIdHITTypeIdTitleDescriptionKeywordsRewardCreationTimeMaxAssignmentsRequesterAnnotationAssignmentDurationInSeconds...RejectionTimeRequesterFeedbackWorkTimeInSecondsLifetimeApprovalRateLast30DaysApprovalRateLast7DaysApprovalRateInput.textAnswer.sentiment.labelApproveReject
03VMV5CHJZ8F47P7CECH0H830NF4GTP3N0K7CX2I27L2NR2L8D93MF8LIRA5JSentiment analysisSentiment analysissentiment, text$0.02Fri Nov 01 12:11:19 PDT 20193BatchId:3821427;OriginalHitTemplateId:928390909;10800...NaNNaN3550% (0/0)0% (0/0)0% (0/0)funny like a clown\\nGreetings again from the d...PositiveNaNNaN
13VMV5CHJZ8F47P7CECH0H830NF4GTP3N0K7CX2I27L2NR2L8D93MF8LIRA5JSentiment analysisSentiment analysissentiment, text$0.02Fri Nov 01 12:11:19 PDT 20193BatchId:3821427;OriginalHitTemplateId:928390909;10800...NaNNaN4870% (0/0)0% (0/0)0% (0/0)funny like a clown\\nGreetings again from the d...NeutralNaNNaN
23VMV5CHJZ8F47P7CECH0H830NF4GTP3N0K7CX2I27L2NR2L8D93MF8LIRA5JSentiment analysisSentiment analysissentiment, text$0.02Fri Nov 01 12:11:19 PDT 20193BatchId:3821427;OriginalHitTemplateId:928390909;10800...NaNNaN10520% (0/0)0% (0/0)0% (0/0)funny like a clown\\nGreetings again from the d...PositiveNaNNaN
\n", "

3 rows × 31 columns

\n", "
" ], "text/plain": [ " HITId HITTypeId \\\n", "0 3VMV5CHJZ8F47P7CECH0H830NF4GTP 3N0K7CX2I27L2NR2L8D93MF8LIRA5J \n", "1 3VMV5CHJZ8F47P7CECH0H830NF4GTP 3N0K7CX2I27L2NR2L8D93MF8LIRA5J \n", "2 3VMV5CHJZ8F47P7CECH0H830NF4GTP 3N0K7CX2I27L2NR2L8D93MF8LIRA5J \n", "\n", " Title Description Keywords Reward \\\n", "0 Sentiment analysis Sentiment analysis sentiment, text $0.02 \n", "1 Sentiment analysis Sentiment analysis sentiment, text $0.02 \n", "2 Sentiment analysis Sentiment analysis sentiment, text $0.02 \n", "\n", " CreationTime MaxAssignments \\\n", "0 Fri Nov 01 12:11:19 PDT 2019 3 \n", "1 Fri Nov 01 12:11:19 PDT 2019 3 \n", "2 Fri Nov 01 12:11:19 PDT 2019 3 \n", "\n", " RequesterAnnotation \\\n", "0 BatchId:3821427;OriginalHitTemplateId:928390909; \n", "1 BatchId:3821427;OriginalHitTemplateId:928390909; \n", "2 BatchId:3821427;OriginalHitTemplateId:928390909; \n", "\n", " AssignmentDurationInSeconds ... RejectionTime RequesterFeedback \\\n", "0 10800 ... NaN NaN \n", "1 10800 ... NaN NaN \n", "2 10800 ... NaN NaN \n", "\n", " WorkTimeInSeconds LifetimeApprovalRate Last30DaysApprovalRate \\\n", "0 355 0% (0/0) 0% (0/0) \n", "1 487 0% (0/0) 0% (0/0) \n", "2 1052 0% (0/0) 0% (0/0) \n", "\n", " Last7DaysApprovalRate Input.text \\\n", "0 0% (0/0) funny like a clown\\nGreetings again from the d... \n", "1 0% (0/0) funny like a clown\\nGreetings again from the d... \n", "2 0% (0/0) funny like a clown\\nGreetings again from the d... \n", "\n", " Answer.sentiment.label Approve Reject \n", "0 Positive NaN NaN \n", "1 Neutral NaN NaN \n", "2 Positive NaN NaN \n", "\n", "[3 rows x 31 columns]" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pos[:3]" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['HITId',\n", " 'HITTypeId',\n", " 'Title',\n", " 'Description',\n", " 'Keywords',\n", " 'Reward',\n", " 'CreationTime',\n", " 'MaxAssignments',\n", " 'RequesterAnnotation',\n", " 'AssignmentDurationInSeconds',\n", " 'AutoApprovalDelayInSeconds',\n", " 'Expiration',\n", " 'NumberOfSimilarHITs',\n", " 'LifetimeInSeconds',\n", " 'AssignmentId',\n", " 'WorkerId',\n", " 'AssignmentStatus',\n", " 'AcceptTime',\n", " 'SubmitTime',\n", " 'AutoApprovalTime',\n", " 'ApprovalTime',\n", " 'RejectionTime',\n", " 'RequesterFeedback',\n", " 'WorkTimeInSeconds',\n", " 'LifetimeApprovalRate',\n", " 'Last30DaysApprovalRate',\n", " 'Last7DaysApprovalRate',\n", " 'Input.text',\n", " 'Answer.sentiment.label',\n", " 'Approve',\n", " 'Reject']" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neg.columns.tolist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How many unique turkers worked on each dataframe?" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "53 Turkers worked on NEG batch\n", "38 Turkers worked on POS batch\n" ] } ], "source": [ "def get_unique(df, column):\n", " unique = np.unique(df[column], return_counts=True)\n", " df = pd.DataFrame(zip(unique[0], unique[1]))\n", " return len(unique[0]), unique, df\n", "\n", "num_neg, unique_neg, u_neg_df = get_unique(neg, 'WorkerId') \n", "num_pos, unique_pos, u_pos_df = get_unique(pos, 'WorkerId')\n", "\n", "print(num_neg, 'Turkers worked on NEG batch')\n", "print(num_pos, 'Turkers worked on POS batch')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How many HITS did each unique turker do?" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAFfCAYAAABTFkfhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydd9hdRfHHP0MIBEIogVBDCCBFQWpAqiAggkgVS5D2swBiFGmKiFJVOkgRjXSUJlIFUYSIirQ0QkgIkAKEDtJ7md8f3zm555733Pd9E1K4Op/nuc+999Q9e3ZnZ2dnZ83dSZIkSdqXueZ0ApIkSZIPRwryJEmSNicFeZIkSZuTgjxJkqTNSUGeJEnS5qQgT5IkaXPmnp03W2yxxXzgwIGz85ZJkiRtz4gRI553936t9s9WQT5w4ECGDx8+O2+ZJEnS9pjZo53tT9NKkiRJm5OCPEmSpM1JQZ4kSdLmzFYbeZIkyZzg3XffZerUqbz11ltzOimd0qtXL/r370/Pnj2n67wU5EmS/NczdepU+vTpw8CBAzGzOZ2cWtydF154galTp7L88stP17lpWkmS5L+et956i0UXXfQjK8QBzIxFF110hnoNKciTJPmf4KMsxAtmNI0pyJMkSWYTX//611l88cVZffXVZ+p100aeJB9RBh5247TfU47fbg6m5L+Pct7ODLr7fvbee2+GDBnCnnvuOVPvnxp5kiTJbOLTn/40ffv2nenXTUGeJEnS5qQgT5IkaXNSkCdJkrQ5KciTJEnanBTkSZIks4nBgwez4YYbMmHCBPr378955503U66b7odJkvzPMafcOS+77LJZct0uNXIz62Vm95jZfWb2gJkdHdsvNLPJZjY6PmvNkhQmSZIkndIdjfxtYAt3f83MegL/MrM/x75D3f2qWZe8JEmSpCu6FOTu7sBr8bdnfHxWJipJkiTpPt0a7DSzHmY2GngWuMXd745dPzOzMWZ2mpnN2+LcfcxsuJkNf+6552ZSspMkSaYP6aQfbWY0jd0S5O7+vruvBfQH1jez1YEfAasC6wF9gR+2OHeouw9y90H9+rVcBDpJkmSW0atXL1544YWPtDAv4pH36tVrus+dLq8Vd3/JzIYB27j7ybH5bTO7ADhkuu+eJEkyG+jfvz9Tp07lo24VKFYIml66FORm1g94N4T4fMBngRPMbCl3f8oUQHcnYOx03z1JkmQ20LNnz+ledaed6I5GvhRwkZn1QKaYK939T2Z2Wwh5A0YD+83CdCZJkiQt6I7Xyhhg7ZrtW8ySFCVJkiTTRU7RT5IkaXNSkCdJkrQ5KciTJEnanBTkSZIkbU4K8iRJkjYnBXmSJEmbk4I8SZKkzUlBniRJ0uakIE+SJGlzUpAnSZK0OSnIkyRJ2pwU5EmSJG1OCvIkSZI2JwV5kiRJm5OCPEmSpM1JQZ4kSdLmpCBPkiRpc1KQJ0mStDkpyJMkSdqcLgW5mfUys3vM7D4ze8DMjo7ty5vZ3Wb2iJldYWbzzPrkJkmSJFW6o5G/DWzh7msCawHbmNkGwAnAae7+MeBF4BuzLplJkiRJK7oU5C5ei7894+PAFsBVsf0iYKdZksIkSZKkU7plIzezHmY2GngWuAWYCLzk7u/FIVOBZVqcu4+ZDTez4c8999zMSHOSJElSoluC3N3fd/e1gP7A+sCq3b2Buw9190HuPqhfv34zmMwkSZKkFdPlteLuLwHDgA2Bhc1s7tjVH3hiJqctSZIk6Qbd8VrpZ2YLx+/5gM8C45FA3zUO2wu4blYlMkmSJGnN3F0fwlLARWbWAwn+K939T2Y2DrjczI4DRgHnzcJ0JkmSJC3oUpC7+xhg7Zrtk5C9PEmSJJmD5MzOJEmSNicFeZIkSZuTgjxJkqTNSUGeJEnS5qQgT5IkaXNSkCdJkrQ5KciTJEnanBTkSZIkbU4K8iRJkjYnBXmSJEmbk4I8SZKkzUlBniRJ0uakIE+SJGlzUpAnSZK0OSnIkyRJ2pwU5EmSJG1OCvIkSZI2pztLvSUzkYGH3Tjt95Tjt5uDKUmS5L+F1MiTJEnanC4FuZkta2bDzGycmT1gZgfE9qPM7AkzGx2fz8/65CZJkiRVumNaeQ842N1HmlkfYISZ3RL7TnP3k2dd8pIkSZKu6FKQu/tTwFPx+1UzGw8sM6sTliRJknSP6bKRm9lAYG3g7tg0xMzGmNn5ZrZIi3P2MbPhZjb8ueee+1CJTZIkSTrSbUFuZgsAfwS+7+6vAOcAKwJrIY39lLrz3H2ouw9y90H9+vWbCUlOkiRJynRLkJtZTyTEf+/uVwO4+zPu/r67fwD8Flh/1iUzSZIkaUV3vFYMOA8Y7+6nlrYvVTpsZ2DszE9ekiRJ0hXd8VrZGNgDuN/MRse2w4HBZrYW4MAUYN9ZksIkSZKkU7rjtfIvwGp23TTzk5MkSZJMLzmzM0mSpM1JQZ4kSdLmpCBPkiRpc1KQJ0mStDkpyJMkSdqcFORJkiRtTgryJEmSNicFeZIkSZuTgjxJkqTNSUGeJEnS5qQgT5IkaXO6EzQrSZIkmU0MPOzGab+nHL9dt85JjTxJkqTNSUGeJEnS5qQgT5IkaXNSkCdJkrQ5KciTJEnanBTkSZIkbU4K8iRJkjanS0FuZsua2TAzG2dmD5jZAbG9r5ndYmYPx/cisz65SZIkSZXuaOTvAQe7+yeADYDvmNkngMOAW919JeDW+J8kSZLMZroU5O7+lLuPjN+vAuOBZYAdgYvisIuAnWZVIpMkSZLWTNcUfTMbCKwN3A0s4e5Pxa6ngSVanLMPsA/AgAEDZjSdSdLWzMi06yTpLt0e7DSzBYA/At9391fK+9zdAa87z92Huvsgdx/Ur1+/D5XYJEmSpCPdEuRm1hMJ8d+7+9Wx+RkzWyr2LwU8O2uSmCRJknRGd7xWDDgPGO/up5Z2XQ/sFb/3Aq6b+clLkiRJuqI7NvKNgT2A+81sdGw7HDgeuNLMvgE8Cnx51iQxSZIk6YwuBbm7/wuwFru3nLnJSZIkSaaXnNmZJEnS5qQgT5IkaXNSkCdJkrQ5KciTJEnanBTkSZIkbU4K8iRJkjYnBXmSJEmbk4I8SZKkzUlBniRJ0uakIE+SJGlzUpAnSZK0OSnIkyRJ2pwU5EmSJG1OCvIkSZI2JwV5kiRJm5OCPEmSpM1JQZ4kSdLmdGeptyRJklnCwMNunPZ7yvHbzcGUtDepkSdJkrQ5XQpyMzvfzJ41s7GlbUeZ2RNmNjo+n5+1yUySJEla0R2N/EJgm5rtp7n7WvG5aeYmK0mSJOkuXQpyd/8H8J/ZkJYkSZJkBvgwg51DzGxPYDhwsLu/WHeQme0D7AMwYMCAD3G7ZE6Qg1FJ8tFnRgc7zwFWBNYCngJOaXWguw9190HuPqhfv34zeLskSZKkFTMkyN39GXd/390/AH4LrD9zk5UkSZJ0lxkS5Ga2VOnvzsDYVscmSZIks5YubeRmdhmwObCYmU0FjgQ2N7O1AAemAPvOwjQmSZIkndClIHf3wTWbz5sFaUmSJElmgJyinyTJLCU9n2Y9OUU/SZKkzUlBniRJ0uakIE+SJGlzUpAnSZK0OSnIkyRJ2pz0WkmSFvw3eVv8Nz1L0pHUyJMkSdqcFORJkiRtTgryJEmSNicFeZIkSZuTgjxJkqTNSUGeJEnS5qQgT5IkaXNSkCdJkrQ5KciTJEnanBTkSZIkbc4cmaKf04WTjxJZHpM5wcwsd6mRJ0mStDldCnIzO9/MnjWzsaVtfc3sFjN7OL4XmbXJTJIkSVrRHY38QmCbyrbDgFvdfSXg1vifJEmSzAG6FOTu/g/gP5XNOwIXxe+LgJ1mcrqSJEmSbjKjg51LuPtT8ftpYIlWB5rZPsA+AAMGDJjB2yVJe5ADp8mc4EMPdrq7A97J/qHuPsjdB/Xr1+/D3i5JkiSpMKOC/BkzWwogvp+deUlKkiRJpocZFeTXA3vF772A62ZOcpIkSZLppTvuh5cBdwKrmNlUM/sGcDzwWTN7GNgq/idJkiRzgC4HO919cItdW87ktCRJkiQzwByZop8ks5uyNwl8dDxKPqrpStqLnKKfJEnS5qQgT5IkaXNSkCdJkrQ5KciTJEnanBTkSZIkbU56rfwXkvE+kuR/i9TIkyRJ2pwU5EmSJG1OCvIkSZI2JwV5kiRJm9PWg50zMr05BwKTJIH/LlmQGnmSJEmbk4I8SZKkzUlBniRJ0uakIE+SJGlzUpAnSZK0OR8pr5U5OYo8pz1g5vQI+py+f5IkM05q5EmSJG3Oh9LIzWwK8CrwPvCeuw+aGYlKkiRJus/MMK18xt2fnwnXSZIkSWaANK0kSZK0OR9WI3fgr2bmwG/cfWj1ADPbB9gHYMCAAR/ydu1BroxeTw6otg/5rtqLD6uRb+Lu6wDbAt8xs09XD3D3oe4+yN0H9evX70PeLkmSJKnyoQS5uz8R388C1wDrz4xEJUmSJN1nhgW5mfU2sz7Fb2BrYOzMSliSJEnSPT6MjXwJ4BozK65zqbvfPFNSlSRJknSbGRbk7j4JWHMmpiVJkiSZAT5SU/STjqT3QJJ0zUfVU2x2pSv9yJMkSdqcFORJkiRtTgryJEmSNicFeZIkSZuTgjxJkqTNSa+VZKYzOxbcaLdFSGbV/f/XFiGZkXtP7zlz+v3OCKmRJ0mStDkpyJMkSdqcFORJkiRtTgryJEmSNue/drBzTg8IzQ7+F55xesk8SWYlH8XBd0iNPEmSpO1JQZ4kSdLmpCBPkiRpc1KQJ0mStDkpyJMkSdqctvBamdMjwnP6/jOL2TF1fk5f63+Z2TF9vR2v9b9AauRJkiRtzocS5Ga2jZlNMLNHzOywmZWoJEmSpPvMsCA3sx7A2cC2wCeAwWb2iZmVsCRJkqR7fBiNfH3gEXef5O7vAJcDO86cZCVJkiTdxdx9xk402xXYxt2/Gf/3AD7l7kMqx+0D7BN/VwEmxO/FgOdrLt1q+4yck9eaOddqt/TmtbKs/Lddazl379fiOHD3GfoAuwLnlv7vAZw1HecPn57tM3JOXmvmXKvd0pvXyrLy33ytus+HMa08ASxb+t8/tiVJkiSzkQ8jyO8FVjKz5c1sHuCrwPUzJ1lJkiRJd5nhCUHu/p6ZDQH+AvQAznf3B6bjEkOnc/uMnJPXap975LX+O67Vbultx2t1YIYHO5MkSZKPBjmzM0mSpM1JQZ4kSdLmpCBPkiRpcz6SgtzMes7pNJQxs8U+xLnrTefxa3ay79szmo6aay09s641pzCzZc3s0Ok8Z8lZlZ5ZxUetPnSHOZVmM5tpEV3NbNlO9n1hZt1nZjDLw9ia2eLA4cDHgPuBX7j7K7HvU8B4d3/FzOYDDgPWAbYws6uAi4HbPEZkzewmYH93n9LFPT8GrAmMR6EDag8D3N3XKJ3XGzgK+A4wEvgu8Dugl5nNC+wFvAe86O5jzOzLwKeBicCv3P3tuM4ngMHxeQkYVLrHxe6+p5mdA/ywyIsS15jZl9x9ROWZjgZ2NbMFgWVi8xPA9e4+3swWArap7PuLu79Ukz/rADeaWREf1IHn3f3x2P85YKfKtT4LXAhc5u4TS9fawN3v6pi9YGZnxrULHM1Ue8bduzUib2Z93f0/pf/9gC+hvF0auCa2Lw+sFoeNAxZw9zE1lxxtZmOBy4A/1uVPTRr+gGYl/72ya0ngaXf/Xs05LwB3A3cA/wbudvc3urjPHe6+cfw2YAtgN+ALZrYyNe8XeBVYxN2fj/PmAfYGDnT3j9fco7Y+mtmeLZJVBMN7umafu/uWpWsXaT4A+BSwROXePYBvojknN7v7HaV9RwDXAavGpvHuPtbM1mjxHjGz9SMN90ad2wbYP54NMzvT3b9bOcdQeJFyPn4ALObuf67c4t9m9m13/1PlGl8HfmJm/y7nBfCSu3vUn/7ArWVZZWbfdPdz4/cC8ayTkByulZHdZZZ7rZjZzcAI4B/AF4A+7r537HsAWDNcGYcCbwBXxXFbAy8DKwF/RBVvWeBnwEXAie7+blxnGPAld38+QgX8JO73KWAR4DngUuAG4M1KEp8CtkMV5nPAu8ARwGjgT8B27n6XmX08rvkgMC/wELAAcDOwMdAHVdzBcY3lgFGV+xnwGeA2YEVgHuBId7+0lF/rAn8Avubud0bBOwcJ0tfjOabG4f2R//4E1Fj8lcakrP5xztHufnHlnQwDNgTuLG3uG+kZGXl2ceU+56OGsR+q1JcBVwB/cvd14rp3uvuGpfvsRUf6AscCR7j76eVzzOwIdz8ufn8CuBboiXqOFwIbACsDVwNfcff+0bCdG88/Ou6xFrA8qiSXosZnXFy3B7BV5NvngbviWa5z92nvyszWRmXiS8CAyNezgSfRewQ4Gr2/i2qefcFI70bxWReYjAT7He5+ZTVjzOzxuN9uqCHti5SK+YBD6fh+d0bl7iXgYVQ3zkcC9G0koIq0OhIYvYBfUKmP0ejWsSt6558qbdsA+AHwrLuvZ2YbVNL8PLC2u79Yeb/nAvMD96CZ4Le7+0GhhEwFngXGRJo/CTyGFKVJSCErv8cjUcC+uYFbIn3DgB8iQfgzMxtZlM04Z2vgV5FX5Xz8NLCPu/+u8j72juPXdPeHY9uP4lkXQkqdlU5ZAHgtnuNOYHvgdHc/M651bjzLAagsTUbl+T9I1nSQkd2mu1NAZ/QD3Ff5P7L0e3zd9vg/Or6Xjge/E2m+JwInAPcBhwAHIWF8UBx/L7Bo/J4fFYxVUaUbiTTsz6PW+wL0Qn8XmT6lkr7HK2l6K757AS8APeL/ncBbqAFZKbZNLt1vc2Cz+H4qfm+GtIIrgFtRhdklPgfGs26DGrE/osLXsyZ/5wHeARau2bcI8FCL9/JYzbZBwBstjh8JPBy/N0UF/GmkEe4T20d1s0yMLo4tn1PJ+xuBbYt8R436pjSUj0nxfSHqRc1VOtcin69Hwu2RKC+HAQMrebcjEuRPx/FHosb6X6hH9iiwKLAfEhS3IK1y4UraO312oDcwJNLyfs3+nyMF4Na4/qLA5Ng3ocX7HVc6Zh0kvLevOW4BJOAmIeFbWx8r+bc70g6vANaI7ZsBf4u82TbS/HA1za3yBRhT+j038pO+Ggm1ZyrvcC5U158DVq95jw+i+SvzA68ACxb3K+5TfTakiAysed77KMmiyr5Jcd/VgdNR72qRTt7zo6gnTJSRm4DTIi/HIAXjFWDFOGYJ4M2u3kmXdWp6T5juGyiTFkEtdd/K/2uB/4vjLgAGxe+VgXsrBXFPJACeAX4aL/JoVPGeAk6OY4cBveJ3D+CBSnq+gjSGD4DbgeUrL+02YF+kAY1BQnUZZFZ5rYXQuRYJ07OAjUrXmivOvwVYqyyASufuCTyOehkXAL9Hwn+TSOflKHjOQ0SFqpy/XNx7oZp9v0Ha2hmVz5nAKy3e15vAejXbHwTur2zrEc/5e1SJq++6bydlYkzNOfcV59AsAL6PeiP3oy7oijQE+cMt7jGyvA91p09Fmt+/S9tXivL0ENJabwc+Vi4Tlev2RwrEk0hjXKTFs38CNc6nAv+Mz+nAKVG+dql8XkaCfFdg3vK9I21173d05RnHVvYvjBq5ScBxLdJZ/t8PCeQHUQO5Slznc5H+vwGfKV3/WSTUm9Jcumb1fg9Vy0Tk/Rt17xEJ+6qQK97jO8V7rJSVN1AZvj9+j4nP/aihm7vmPo+gSK515egRpEA8jxr6Xl3Iu/E0y4YewHmoHj4Q256sqXOt3kltHap+ZodpZQrNXbwqt9PIqHWQUHscVZaByFSxETJhPAx8DWXoMR42RzPbHLXqf0QPvw6yH24S35ehrvTOwIvAlegF7Yi6skXX7adxzhGoUh8V9/8GamnXRVqCIQF9avGY8f8ncfxKqBJ9zt3vMbP+qFV+BtjB3QeY2WrIZPIksmc+Fc8ymYZdudwtnh9VjL9F/oC6/B9DDcnOqOtd3rdz5NW/6jLe3S8q/zezJZAd+BXUZS9MK8uiSv4572i7n0Lr9+vuvkLl+LmR9jsfEgRlBiDt+zbUfV+u9I7HAjug91jk8ZHAt919YPXGZjYKdVE/VtluwBeRZjQYacqXofe/alx/Y1TeLkeB4ZaPc9eJcz6LzIXbIOFQ9+wD45jTgD+4Qj1jZhfUHEtcY2mklGyJFJKtUN5/DZXN6vv9JjLD3RvbDkJlsjfSnldAppYz3f3luP8U6t9XH2BBJHRO8LDtmtm96N2fRLMpDqSoLBZ5Uk5z1axT0A941d2Xanpws8eApdy9wwCpmb3h7vPXbL8b+Im7/9XM5nL3D2L76ui91a0Ptz8y2V5OIx+XRUrb/cAWHgIxyslb8QxvI3Pqu8D7NMbXFqxJ15+RIrBSZftDqMyejRr5Uag3shXqYTxFN+tQHR+JmZ1hT1wetcBTUeHfCgn5y4Eb3f0tM/snsJ/XhAIIz5IvIW2+uM51SCvtg4T3H5FJZBru/h8z2wgVxi8i88qFXjMYF3a5lrj70XHcEsCXkVAY4O7LxvbtgI3d/XAzGw98393/0mUGNe4/Fx0Hau519/fNbBGkOVUHO1+suU51EBLUAG4EHODuN4R3x7RruXvdYFdX6X0NVegyb6L3+n13f7Jy/GaVY0e4+2uRn7u6+9mlY1dHtsohwMnAsV4qzDFA+Za771G5x7/juf6AbK5NDVMc0xs18oPR4N14JOTuQeXxZnd/r4tn3xp1xzdCZXsKEoR3oqh2b3dy7rzIVrobUixuRbby6vtdEwmbKj9GPZjTkemrCXc/tbrNzD5ADetzNJeNQojcG9vLwsbdfYtKmgcjxexWd9+t1TNW7v1gnFcVZIYG85epOWfeujwMObCUu98f/xdFNvDH3H1EjL3sQHM+3oIUx/VpjLOsCQwHvunur9Xc56CaR1kElZtfu/uvKscvCPwI9bzOQkrA3qhXd2yhyM0os0Mj391jEMHMNvbmkeoh7n5W5fj90YDBNe7+amXfUe5+VM09FkKDVZvX7JtCo2CWH7ZoVVcoHTsX6v71QyaIaYMrM4LJy+YvwHnVwmBm8xRaWnU78G5JM/gM6mE84O43V45t8uio7FsMmWrqXnB/NFDzLBISL8Tn3thXx9finJeQhtJEC+HwmLsPqNle9pwYAxzv8pzohbTo5yrHF5pcB6EVFeQ8lEflwc7X0YDo+Mrxnwb+6d0s+NFAvoAEZuGtU5zbH5jqJc+nOKfwyli9tG0gGoc5EplJelbO+UY8++mV7X2Anb0yYB37vokGFb9T2X4U9e8dZJa63t2vqpyzL6p3rXpvj7a4XgfinfwQuNjdJ5jZxmhwfZy731Rz/DAkBDsoHajnsbK7v9/iXlshDRckeA8HDnN5vCyFTGzD0XMPLfLXzPrGc5U9olag4fn0gLtPqrnHvS4nhKpS56ic/KNoROLcBZByOclbeEiZ2S+AU6vlPvad4O4/rDuv6bjZIMinjRzXjCJPpWGeKDgcDaIsjlrKuwshaGZ/BV5w98GlayyBhO9T8Q0NN7dhXhmJLp03joZHw8TKvlWQNv0V1J26DLjc3aeY2Y5oxL5w7RqOurIvoJ5AWVNbMj6LInPB+ah38Y6ZvUp9ZesNvO7uC5p8pHdGAyZ7A1e5+2EVjw4DjkG29v8gj5BLUJd33sjLe2ruMzfSOvZEA1uPRK9nWF1+IVPBXGi0/h7kfTGNojdSxsyed/cOPvhm9hc0YPxzmj0nhiIBeHXl+DeRrbFO+3wbCdizkLYDGgQcgmy3U9D7+4O7P1fTGymXlSYhZmbzowr8PsrbKqdEur5Y6tp/AnkgHIM8YgqvlY2Rua0X8qo4sXKvjYHfuPvq1uyKOw74eck0UvamWRT1cH5DN5UOM7sD2KmmsfwccJSXPG9i+4LAEt7w2vgSMosBfA/4gbvfVjnndFReH0KKzJbAn5G5Z7S7H1KTrlaN/lmoV/KdihK4LOpxv4pMWCDT5zqo7O+BZMiqLnffPqjc3od6WS+jurNgnP9tr7g1d3KPN5HmvYeHO2HpnF+5+/7xexMkYyYipeVK5LW2Shw+nsaY1UvItfrGyvWaZGZLvBuG9A/zoZORfVRBrkD2vyPj8yLyWHgeCaspwI5xfK94Aad6Y6DqEVShNqt8dkamlAvQy61+voIE60T0gg8Elq5J/5rIXWtifIajgrBgfLYAxiJ7+iM16dgSOBgV6muQffgC4LMt8mhs6fdwYD5vDN4Vo/Flj471kSa1NarcLwIbxL6Tq3nujUGkEyOPn49rPxfbOnjGxDmLxPe8SLPqzrt/EzVCK5S2bYsE8umlbSPje0Qn13qgxfbvxjsaC6xW2WfxDs5BDf3NyFNiXzR4XXwORCaP30Z5G4k8myYjYfwfYK+aextSNv6ABPpGyPb6hcjXMUjI7kkMoFLx4io/HzGYHGk8HQmwI5Ft/Egq3jRx7CqxbxwlzxwkMM5Cguhq4HgkTFotcFAuX3eWtg8F9i79fwQJnnNRr2dclLOelWcZhcZ1XgTmj+03oPGX6yufG+JaRyP346vi9+Jx3jrIW+Q85Fm1DjLPHVnzHI/Gs4xAvc2vlva9jup9j9K2Hsj89yZSgj5R2nd9+dlL2/eM5x4R/3uicbXrUf0unncYsE78PgQNvn4GKUMLI9kxApW51aO8nEUMHNfJzJb1Y0aE8/R8aB7BrboD3Y8qwQmlh58U2xeI/wORQDugeLAomJfFS9u5k3v3QBrXGKQR3xaZW3xui+M2QHb5x2L7t2L7XGhg63warnYdRpGRZvQWqrQfb5GWc+N7jXiG91vk0b+B1eP3zTQE6ChCyFdfLiWXQZpdOs+KwrNx5fjTUEXsU9q2IKq0f6KjR0XhVfE4EnZHoe4uqFJXvWKmecYg2+dEVEmuQZr8BOpH6SfU5W/1ueJ/33LeIeHc0m0rysLnIh87uFgiLfNN1A1eDzWOK8S+9+P/MnXlO573n1F+ikZ0ISToF6sp80vUXOchGoK8Wk+cLrxpYluhdLyIBtZ3R0LxJOBb8exPUu+5MYqGe+moynYr/y/9fg0J63MjHwovl7Hxv1ekpVBGXow8qio7QyKPj0b26x3i9xSi7CLX3RfQYPwwVK5vq3mOG+I+e8f3wqX3+3aLsjEKyX+G0nQAACAASURBVJKqi2OHPC6d8w6NhuYU5OWzWeT7xbF9ROn4u6h4FZXk2+vxu1eUpbE0XD4/MoK8cAGqcwcqHmBHVMF3RYK86jJYTLz5Oxqc+GG81GvRSP1BhB95zf2fQFrMjai7tUAnad08Xuo7yE/6SdQ1/D9UMVv5mv40zrks0v+tyv4lkBZ1R+w/Hk0yqBPka0RBujg+E5EG/x5qvW9A2vP8pXPerLtW/B9PR23mMUJTqBzbAwnsC1p8rkIVZGgUtmdQhb2CZg23/OmBXN9eQwPQK6MKOrnm8yYaWK2m6xxkewSZOh6K46cAD9YJmcr5n6RRSe8ilIK6slr6fX/5upFnj6NB12L7mWic4UxUHm+h0ZBdH+/pyXjuwi11T6SYbIYG4fugcvcfGo39BTS74j5Mw9Pit6iXN7mS9rLS8S4aYwL1vu6I38XkuAuA3pX69QLqBVRdBsdRalwJJaOm3O0SebQfUsxeQ2MuJ6Ey+2PCha8m3++ipjeGxjpGIFPhHTTXmVZup0sgM8V1wNal7Z+J9/grNHlo6fh8KvLkytKxhYvju5RcVSt5/Vbp/2iiR0Kz+2Mx65bIxw6CvJqP8X9b1LAczEdIkC/X2ad0XO946f9AmvNalevMHRn2AQ0zTPE5Pj59S58VUav++zh/BWR/vxvZqgq/7vXipT2KGor/RMEaQrS4pTTcXS5Mpe2PEH7vqCIUv78Vz/IEqtwbVQp+8ZlU+b9rvMwD4mV+BblTlbWYoseyROTJK1Fw3ovfxf936aY2E9ernUBUc9yKqHF6pFoQS8dsgoTCOUgw7IS07mModR8rFWgK0vi3j8/RyA7+qTimalZ6C5nRvogavSIPv4Pskw8gxeFwSiaemrL1f6gRq/N/vi8+KyPhdAHSRPeK9NY1YI8h+yxIWNxeqai3xzt5Pn5/EWl1E1E5ezfKxe1EmUN1ZDcapohzkBJTVTrup9FjGQDcVbr3A6iuPI+E5AgkyF6O+1Ub17cJM04lz5apvvfYdgtqxB6n0TtZEZkWvkxp0k/pvJamOqQg7UOpVxDbT0ONWrlB6o2UjF/WXKcX6h1+GymF98fn5khrXXk8LfK67h4v0yh35V7wckhoFzKuEPCjgV1aPGNdD3Fx1DvuMHms7jNb3Q/DA+B9b8RaudBrpqLGqP97XuPyVvV8iW2TaXaNclRJhgHHle63GhrE3ANpkmui7tdlwBXuPtXMlvMWI/QxePF7VJGLwY9BqBu2pcdgmZmNcPd1zez8uPatHoNhpWtd0CKbVgcmuvtXW+zvNuEdcgpqxPZ39/ti+7XA1d5x6v7uqNIshCrf/cDXXbFcikG7DZHv7STU4H0RaUB1BWkTVBGO8EYcl/mRkHMknCfVpPk7kQ8gwbOTh2eImY1y97VLx79A/RKDX4w07u7uY0vH1w0yFy6RGyIBWnWDWxr1FFYw+cEfhyrxnsA5XjMYZWbPuPsSpf+dDlqZ2dyuUBVNrrju/kyL4xdBQn8uZJ+90t2fjX1fQeMdDyEb+rfd/cbw/jnD3QfHgGrhY/+Il8ITVO6zOw2FYlRsXgfZxef1isdOnHMocqnr1ep5K8ePR0rOi5XtfZGzw0o15yyPGr7VkBIGarQuAn7k7u+awjF8DgnwrZG30q4119rNS2EyStt7IlPV3jX36Eeza+1h7v5MeL781ksxaOJab6ByX/VUMzTLs4OvfJzXMpZR03GzWpCbouwdj8wnC9CIcXA+mhxTW7jDFRB3/yBc8lZHszcLv9UfufsvunH/FZDw3hG1vJcjre5Q4FJ3f6Ry/GJIkLwYaTwJ+cVORIX5NTSxoByg6XtIEIBezKaoZ7FQbDuwLm3uPrImvadR723RacAhjxgllWtNijQs5qUXbWbLoHGGN2lukOZDg5mHRPp3QH60nzP5GY9EWso13pios1ndswU9kSlksDfHIVkT5fGWqMEtGtIn6y5iZi9FeoyOE4UmuPsqdefF/qZgWtWGoztUG4/YtjkqH/3cvU/NOe8h76aCYrIO0OyuaZos8londaFvi6QV7o8dPGrinBWQkH6ptP1Z1PBdijx1yuViPuRmWnbnuwoNyh2O8tFpaPUresV9OK6zLKo3yyBvlZNCsL6KNOPC+6i49zyorGyByhjIO+QE4AJ3/3Vcty5g2k9oNEgT3f0NM9sPWBsNWN+DPIZW8JqgZWb2kLuvXN1eOabc6E2su07p2IlIcbmstK1X5Mf2qDddxxJ0DAA23jsG8qq/72wQ5LehWZh/N7NdkJA7AjnHD0G2q6oGtDmyqb2DbG6HIwG6KXL1uqHi1rhLJ0m4CnWtr0PmhuKB+6GMBWmeh7j7E+HiOBzZLrdE2vcNce+veb2vequXMwx1T4vWvPycy6CZZFOrJ5mZoUkMX0XmiPuQkH0G2bunBRyK42u1PTO7EQ2a1IbjNLMtaBZyt9a4iI5093VME4QKrXx9pDGOJCa51AlIM1sJaW6bom7/Ie7+ROWYDZDpqDCNXOruv60csxmq1IU/bXmi0FjU6zjZS5N0wt3sPCQQ7ovNhc31G16JLmeKLniou3+rsv3nwD3ufm3N8y0C7Ovux9fse5mOrrWgsuxI8y8otLHXvX62YLnHuRSNwF09UEP9OzRO812iq4/GAZ6qXGdlVPfuQGWrHJDudSTg/0Gzq90nkO39EHc/onK9VuXulrjuXWhW9LooBswLdY1inPMF1PAVjcU4JPz+jkxlu1EJmFa9RlxnKo1QA9e6+6tmNtndly/1xsr1sKwJFxMNnXBJReWqbv7CZ939ltL/IvLjvkhpvJ2GwncyGs872kvzSSzmgVjrAGCfRZP6flb3rE3pmQ2C/D53X7P0f4S7rxu/30cPXBXkg1Dl2yO+13NNLBiLBhkGVQR52UyxPRK8BWuhTKzydWS3+gHSPDd0912K9MaLedRLvq1mNgZp8/2Bmyqt7jT/0fi/GPIa2BXZ0y5HmmzhE/8yqjwTKWneNflXROu7FrXY80f3/lc0pkff1aJyjETa+IDK9lYaHkg4l2etnYw0dFACro5rzB95eArSqO6nI8sjoXIc6uJv6O61jW5ouL9GWuQG1d0oyuJSNef1QTb3LYAh7v7P2H4h6tUc4w0fb0OePDujsZBr0ZTps1DlmURjUlFx3z3QoDMe4WqjR1MI0aeRx0U1vffVCRszOwOZrb5emE1CUPekXvAT9z41jp0mCE2RRW+kYTv/PdK090cC9NmaZzzF3U+L85dGGu5XUT25xiuzMU3hpD+NBt0+V9nXSpCPdve1Sv93R4rbrsiV8jqkXJ3vXc+QfQcpC0cA/3J3N7NJ3mLausmHfQiyfV8a97rfZRY7A7n9HVrJ+81rLtUXjXX0rjbucd5jrlAb1ciP30EN4jeRWeZpZN5ZGHn3fIDqzXGorBdB71ZGveGngf7eCO19t9eYr6rM8njkwHPxIoehlnUKTKtU7xamkjJRWDeJ34+5+4TY1T+23QCsYGZNtlF33yHO/b/StdZz93upYGY7u/uO8fekEHoQlTIKzPOV05ZFlfSPwNfNbFf0ErcAvmFma1CKYY5ezF5IK/8qcKuZPYomwkxCmspWSCM92sxGIKF+dWgSn6QxMQlUGYjCv4+Z/RQNpva3+inDy6BY6tXKNhxp94VdtNyQLkqjpwJqaLdHgqafma2FtPK1kTfFJXG9ui7gn5G3yNHuvnYpj3VTLbpRhEaYjArzv1DjUKYnsJiZfY8ac5e7H2gK/3traGQfoIZjgpdmAsc7HYTsyl9E3dfRyOb5tXiex5CwKfLkq0gL7lFKz52ocV4FDSg3afdBWePGGjHqP094OJnGKs5CGmAPZHpsFZNo2mOUfi/h7mfG9fd39xPi9xbIfNHhGcvapbs/aWbnITPiUNQDrbIZck39uJmdiCYeFbbyNcys7tl7m9krRe/C3X9nZk8jM8fcqNH/PNJWD+jieV9H9ehXKM+u6Oxgd/9+9NBPQfl9IrCQae2Aw9E7a8p7rx8Te9S0BsBm0fMrY8CSZlaUl8vQoPxw1JgeigT5/vGcZ6BewpfRO74Rjfv8K+rmP1wzV98ws4lFb9Hd3zSZNLvGp9MLZXo/aHDgStQF/h2KgwASGLV+mmhQZa74vX5p+2eQANys7hPHVN3vRqEKWnX2fxAJo2KC0Pj4/yoSXjegQbzypIX3Ktf+Meqm3o+6ghsim28xWv9xGn7Oq0UapsQLraazJ+oZFB4JTd4WkXfb1OTVN1HjU/XkORJ5HEyi2Xd+GBoreBVVjmmhYbt4j89FPvwIaWiFb/CqpWPmrZwzJfL0N5U8Pi/ScC8ad+gfx48lwgBXrvNXJCzPjHw+FAW4+hbqem8R7+Bk1AtYDjUMy9VcazSlSHeUyiAyp52ONLmli/2ol1L2XChC8PZAWmKrPBsY+TUGmSueJ8Koosbke8j//MlqeejkmmVX1ftKv4+rPOOYumeM/72QJn410gAvRC6S87XIr4dQI/uTKJcPRvmq9TZBY0Kb1Wx/GLglfs/dnWcmQknT8Dq7HzVS49CEn9rJRZV6tT0SsM/X5X0n936RenmzOVIW6iI/jkUNxEKl63wh0vyL+F+dE/E6jXk05VC+C3W7XHTnoFn1IeJY12xfj5pwkVExdq9sW6fyvy6+ct3st7voKOCGoUo7sublbYZs3XNVrr030myLmXaPl/atgCrp3chWvysNAdjK53kiGkhavW7/dObvKBScqm6foYZxKKqsJ4JC+ka6DwF+ibr7+xHxnmuu09mEr1db5PEkSrMHS8fvSkwqqWy/D3VdjUoc9ahs/wI+Wdl+EbIbV93WnkNuXdUGfB0as/DWjXQeQiVGffHO43sAEtIDaj4jkNBrilFf82xLIa2tpb8wpbkSSOAWv/+KvCXqytDfWjzjn5HJ5Q9IYy9CPh8R+bJcpb69hKIMlq+/BjIb1E6w6eQ5qvnYHUFeFzd/daTYTKUTpa7mvPkq/4u8X6fms2Vc/+oW1/oH6u1cFMddgmYPr9/i+DFEY4u08fK+VrOWF6uW61af2WEj74VMA8UqGD+g0S3e3MN+bmZ/dPcvxu8FvD7i2DrESH1p8/U0ghm9jLTFf5TPc/cdStdYE3WXv4yW6dq4G8+wjruPjK7lX939b5X9o1GhOBnZVC9AvZDHkc/2KTQPtIK8HX5Uc6+PewR6slKEtxg4PA/Z4aYNznaR7lFokY0OMSxKxyyM8uNYpPHMjzSI2wkBgyrzzkgIvEHJaybu8Ud3P646kNXJwNYX6egCOA3vGGuls3g9j7r7cjX3aBVMa0GkUdbZZt0bXlGGusYbosHd1TxWpCrdYywaMHyofA3UjV4Svf/r0QDuvwvbrtUvUfYsqrjFcl/nediPrZtRN0vp+jut83cJ5PbZISqimQ1B9XN+1Gi+hhSXVoPlh7v7z2u2/7TFvY9CZqV34vrzofJUeP1U02RI+M4d5o3q8mz9vBJfxuQBVISbrbIgzeM/BUX+FaZUpzHvYmj1vVexmmiV3nGs4YfIc2bfyvYV0cB0h+UCY/8e7n5JZ/eH2TPYeSXK2N5ogsVY1P3ZBPiuuy8Ux5UHcSYiX9ArS9fphTTft5A2XbAB0jigtZvf7XGNuVBLOxgJpglIEy2zfHwPK227HnXPzOtdBosl6N6gOYb5PMhbo2prL9JVF2jqPuQT/LOKAPsn0vS2pjQ4W3fd0rW2RgJhWStFe7NGmNavIKFzddzzMTO7H02Wej8GNG9y983N7DI0aHMMzct0jYzrrlMjZFsNhv0FaVV/pXlwuvBYqNpBf4Ya68k0XDtBFX07NLBVuzZmVJTCnW6cVwKkdYVp0PogJJiHeMPtsTfqQj9dNMimCIc/ROMeZ6BB0l1ojlH/B6TRVj0Uvot6b+cQM/vcvVP7sc3YuqB3Aj/2SqCr2Heru29pGkDGNU5Tq1SV8uA76J2diRSCXZBg/ivNPtPzE6sIufsCnaWxco+10CD4QjQvz7YYWvP2vMrxuyIng+8jW/TnS7tPQmYM6OgU4e7+9W6maS7kUvv7mn3TolVac4CzyUjhqXPXHIPe4Y88XEVNYZp/BfzH3XfqMk2zQZCPdUV0KyY4LFnaNy1ofEVorYgqSQ+aXXgeQLb1n3v4V1q4FpWu2Q/ASx4gZrYpqkw7IW3nciTQi5a2/FL3RtpRuaXfADUe0zS2uO7CqHu6G4qx0u2V6UP4/wT5w16LBkyOQba7X7n7AZXGbXTcv/jfZVQ0MxuAGrk3kFZdRHvri7TIi5HdslwITkNxVN42udfd4vISGoO0s+JdFl4zm8R5V6CGoVjs2tAA4vOlZzwB9VYM+Jm7X115xlaaZ6FxX1Szb36kfVXXxnQUF7pa0XcAPu31Efg2QGatahTJuZCw3RKZ1wwNfJ+HTBLLo/GST6He10U12nsRo764/io0eyiMBT5w9zUif+8p1YfFPBZXjv+7o17CI6h3UffsJ7n7ldbRTe4J1HO9iZg4E9v3ROWvqk1/CfXAzq5sxxRH/EakWa+CytoVSNFY0t33CMF2AFJsrkReM9UFRVoS5X5fd7+7sn088I6XPOJK+wqZ07KOVMpdnZYOGmTdBOXp9ajhHYLGdcYhmfAkKgeHo97b08h8tzMq+1cgE90YWkTdRHXmUDQZ71gUUuLzaCC/aeHnVswOr5V3QJ4WZlad8DFfjHpb6Tfx39FDPUi48Lj7A6b4vseaVrI+OI4rhMB3UaUz04SMM9GA2KMos44qFaILikRYydPFzP6EhOmJlcbiM/F7PqTN7obsjn2Q58hVJvemMp9GQuZlpP2XK/dO6OWei+x6w5EJYHxJEyu/+F6AW8MDZb5o8Q0N2tR1JXvH94Ie8ZxN7oy3oYHYVWiE1Cx4CrjXtALLpkj4girrU9DBa2Z11DgMj0+ZHVDhvBNpmXcim25ZK5n2jHU9lOngr/F8vdE09V8C55rZ094cGvQKoGcI1suQn26Rd2ehCrkQyqNtXQtvr0pj8e9psyGRG+ElSNE4Efmn18bNdrm7nRnldifXxJVpHgqonhST4N6TZafp2QqhfgR6L5ei7vzy7n5g5dlPjvReid7fLaVrPYOE0xnA3WY22OUVth5qFNerJH074AtmNqWSj6BFUw4OM9RTwFbu7mb2L2CsmR2HGvOLIv3LAteb3Df/jDTqF03+3fMjhWNaliH5NF9ViAdz0SjfVTqsNFRDuW6VJ3TtiwbnQcrfmzTcCQ9H9W0n5HnWGzWexfqmJ6DeYuHw8AiAmR2I3kmVvnHu6q7w1O8hefAksrXXTpCrf5rpGKyYkQ/Sbs+gEWDojNL/Z1qcMzca7Z+IBMG1aIR6ldIx66DW7FnU9b0FmtbfXAGZNY7pRhqrgzALEEt0IXNGsXbipcjueR5y1u+BWuu9WnyGxrE3I5NSed/jaCCxGMWfigpnq/yaiip73eBhq7gptYGFurFvNTTwWPZI6cxr5t1u5uuEzo6hPoriGTTC7Y6p+Yyjfm3MyfGOxlAKDUoszosa+FuRYPs1jVjZRVqqngX3I9/fq+NzOGo8pyA/7bp074UGzt9AXfrhqEzXeSi8H59XaI6Z8yqVSJmEBw0qm4+2ePblWryDcn7vQgS6KvImvo2GcHoxjmvKxziuHGTs/NLvk5DH1A8pBalDg9LbIBPTIaiHvWL53qX6VywWPRJp/V+h0fP4CqobN9SUpyHITNFhIJuSY0Q1X0rby+koB07rEfcsBodHl/LqidJxO0WetQxwVrlfD1SGb0aN2yrILPQIsZ5xt+Rsdw+c0Q+thdxeyGzSt+YzPjKh6sLzKDKrFNsKU8EoKuFCY38/pA1XXZSmfbp4qUVj8Vzx8qJAH0LDZW4SNYG0Stf4dnzfVNleBGW6heZQrvvHpzbPWtxji9LvcmN2eRSOarS3q5Cp5TWkJX+8dM5N1Kw03o13PBIJq0Jg7UnHYGBFUKt7kU/x9TS7eBYeQ3vRHIyq8NIYiCr/cqXPB3G/rwHzVCsqldCgcf1yZV0S9cDuRF31OoG3GWpEq2FWH0O9wjtq3tVQVC6r8adHogUJqnnY0kOBhqvsujS7HH6AGonqsxeeLQfT7OVyEDJvlq9dDnT1MJXFl1vlY2x7nppoopGu92n42Bef9ykt+h158zAyXY6kZrHoOO7zqLG9IT6/jnQ+FOn8bnwuivxo5ZFWLKBcLXe1soDOG8ExqL4OQDJmYGxfFAnmugBnW7d4v29TiqoZ25ZG9feO7tTBObpmp7WeejwPcm2qLtw7GmXc2ZRWRClsYi3uMQl1Nw01Dt+MXcVo+wt07emyoDcCb62KulxfQQVjFVR4dvGOCxNPQF4CxbWdhl3sOKZv0eLOBjZPBL7g7g9WxhrmQS37OBoj/lPR4N9+yHwwLZ5KnPMlNLh4ETIvTTMHmdY/3A35cIMa3A+QdnsQqoyGGsBiYKlucLGYYHFCzT7c/XZr7fFSHVDdENkmq2tjfgsJnMLrZ1skAOYGnm1x7fcjzWWPClCl/MA7Ls+2Fnq317j7XpV9d6FFDaZUtg9EFfQAmr0wjkSBzZqOj3OGVTbt5u5PmVb1ORcNeJaffVVUl+rMPLt7fRCqa5DJ8Dc0L75cze8iH8+Ia3XIxzjOvCJcTAP5n/ZY7Si2rYFiphQLTzctFt0ZJm+R3WgOsHap10ypj+M36+x6Ue7K9acoD9BcJorwCIWXzf4oqqKjunWMuxfmGWKsaS9kN9+5dMtFkMKzqrt/hRrMbCuveMnVHjerBblpFmbLmxQCs67ixmBiUegecveXrX4Ztt07EeTlF1Me4OjspW6MbIPl5dyOcc3EWsgby26tiwrSbuilfMa1np+hFnh9NAhWtv0VdrGH3f2wmvS2yq9iyvOtNft2RFrMv4FNvQsXQJOnycXeWL+wWlkXQAOx2yAb8AcorOb+yKwwChXmtVGjtq2731q5x0C0PF51uj1mthOK89xy0KvVQFVXg7xx3+2RTdK9FIHPFFnxOmR/7FF7gfprjnP3T9RsXwiZMZ5F+ePx+zpkB1+15pytkRvurTR7YayJBO85VBrQTtI1F+rqF540A9GzH4B6jB2iD1rNOrmxvdXiyyuhsrpG6djFkcDdNtL+HZoDbf3G3ZsWOQ/7/YnII2rjyr434tlPpqML4rKo7D+BzK3nIzv+w2geyqjywSbvqmO8slZr7LvEK4txx/b7aQjpjyHlB5i2rm/tFPkYbzLXmMbckc7FvLK2bhw7mVjGMTY5pQitce/33d1NjhCfQgG6RlWvVcfsGOwsjPxVjbjKtMITLe1vkL1pcpy7XGgN+7kGxY62hk/4ajFQUHW9MtQl7HAPD5fEKmb2bdT9/wGNwbtBwIlm9ktkG10zrjECGGFmh6AW93dm9h2kDYJcBOtW+r4eGGdyzSyn7XnqB0UaB9WkOwTz+simWb1fXaOwMPBjM3us+F/R+P9EY2p0HyTIt0feC3tX7r0FEvBNgty1vukg0wLUVfe43YGzowL/u9jvpXCzlXuUBXd5kLfgDTqujXlbTZqeNYV4rfUuMrNveSVgV2OX7VvWsoKrkS17c4+Qy6bgYnu3ugcahJ3g7ttWbrA8MoMtCAw3s6IBBWl/JxcarjUW5B4HTLZGiOHi2e8CbjMt6HxrRcs/FNm6qyxfsw1kemoKJx0N8BeirtyDhOuFsXvduPdOSEBdhRSdz6HQFh0CjCEBX5TTaiTJL6H6tDAqKwe6+2ej7Nwb39CoP0sDm5jZ8d7R02Z1MxuMekI3uxZo/gINv/btK8fvFunvgJkd4O6/LOXJe2b2IvCn6Amv4M2uhI/TwpXQzL5FLMZhZseidzQSWNvMzvcIvdAZszseeW13OfaVNedj0WDlfh4TF0xuTGcj/9qfWLNP+OfRTMGda67bt/R3GJpea3H9A9Fg16mokdkUNW6f944Lyi4ax/4D2QnLzBvfl6CB2b+hQZcPoHml7tL1XqWjl0dfZFYa7O6jq+fUXOM2d9/CGmFeeyGBXvaz3sTdF6mcdwFyhSs3JAVLE94FSLPpNFysKT7MAi32jUKDVlX3uDvic09p34ZIw38fzRUomzaKCHX/rEnvxsimeyeNBuGRGlNUUdEvRlrvKd7w5FkCuQ3uQiOedbkSXo3GW3aiOczqn9FkjqE1z/4BHcsJyBT3nrv3rhw/DxLMFyMBcgUNQf5tNI7xojUvyP1TZOstltArnv0XkS8jkXA63RsxWaa5/NakeSdiQpK7/yW27YAmwdVFALwHuQZWteL9kOnl3UjbFWjwfkzdfQvK5szStcq96KYFmqvyJEwY98dzzxv339vDddPkdz8albtPIfPTINRINi2iHMe/iRqxnav10RpRQZdG1oHdkNvgCWhMZEcaroTbIceJJtNridORctgHmSuXc/fnTfM47nX31Vqc10jPbBbk1S582X/zIBrR3w5Fhe+EyvkLoMJwM80+4bfRsUtWMAoJh6oteqk45wQk0L+PBiYeAp5y90/VpP9JInBVhZORoHitdB+nsWZoWaMs7GIfc/ev1dzjEaQFVcPCFiamh4tDUfyLCajL1nIyQwstvtWq5f9EDegDle2tTB2FzfDh6i6klfQuHVu4x30fDcr2MI05bIyE+QbIfv2ZVs9Sc/9ppq7K9gtqDu+Lur9j0MDpAaiiHYS0wqFoILuDP2+cX4RZBdlj+yDT3kXeiKa3BNLIt0eDkFX2RxX7EqSlgRrOb8X1LqDUgMY1p40BmdlwZD57M5SUv1e7/mEq2Njln74w8raa4Aou5tTXlV7Ia+okpCDd4O7HhjB7HTVaTe6anZicPkCN8eoe4Y1NY1V94pkvQ3b9oq4UsxoLU1N5LOkkNH6wEKpnB7j7tSbT6CnuPqhy7/IEtYPi2vu5+83xLL1daxz0QkJ6RTT4/ms6Nu7jIx3zAGe5+8ml+zyGxn+WQQrRlcB1HnNaosE9gXAlRONOBdXJSDu4+6JxXjVae1JG4AAAIABJREFUbEvlt8wsN61UNOIe0WoWL3BxGhH4fkujW1U1iRSMp7GO4FHeWBGl1aApyO7UIeSllUJtmtl+7v6H+P0UjQUhysevieKo1E1KqdtWTlfREhcF9O9Iy6pjS+RuVe3mnYsaih+hPCv8x7cH8JoIbqH1u1m1DVMgf6ufCHFNWYhbI2TrUmFCqkZjOxU1ItX0Aixummm3EQ3/5BGoJzLFNCA4AZkCzkLa+wdWH2a3D1o0uDp4ulz0lobQPAh7lrv/vXoRM1sOVbpzUc/pSeTzW4R9+IW19uf9U+Vai6C4PbdHxXfUa7seVc7/lI5dFA2qX4nKyw6oFwISYC8DO1Yb0OAVM1s9TE/Po7rxJuqxzGOK6DjG3d8x2a+XQr2Upd39JTPbHhhqZn9AYaDrYp6PRd5XxYzef9KYx7EFcvE8GLjAZOK8TKfZIl5Z2Qf1eq8GbgkBfjkqQ0sil9DBSIO9Ma5zfc0z90VC/J9x3w+QeebbphDFT9AwYVaZGxT618xuRSbP7WJb0Ut+yxQy4QXTWNfxwGgzKzfur6Ey1RfNSdgWjcc9hcYGJqOB5+GRh26azHg2KgsfR+MI/0AT4C6I46oRWh80mQvnQu+zMB22koMdmB2DnWUhW8VbCNn7aJhAyqyAppx3mM1VOrdbLZiZPYC6ot+qmHU2QbbVX9C8es5eyLa7ItLkClPCeDT1e884f7UWlbFbhEC4ySNme2n7XKj7vy7qCl5vjdgdCyIB3x/4s5eWrbJKnPTY9gHqYv4Z2dTL+bwJWhLrmDj2MdR9XyrO+Vddur0+3EB5VaE/uPs7sf1BpOXdQMN2/nIcP5VGHJQiXb1RZRqLJnvs7RGaOHowPdCsxLLXzBFoSv1NlTQtjHoPTyAN+/Oo8TwAubcWlfD7qBIOQd4gTTE9Ks/eIU6GaWLZYWGHXSrSNhyVn6EeA82Vc+pWxZqC3uslNBbI2BgJhy2R7fgBGqFeT0CNwsHufk3l+seh6fkd6mJNb7kwHVS3L4nMcoNRHZiIejHVlX3Oc/ehJvt9Ear4PqQoDDWNgw1Gwvporx+AnQ/V0ToPozovrkVQWTu5KL9xbC9Ud/anETff0Lt4JH47mvNxGtG4I5fE8rMXi9wciMxa58QzLIka6L1RfTrM3a8qnbc0UniWdfeNa/K06pXURHd6qHPa/bDV1OPdkN9ptcCV1048092/W3PNaiatgbpkxTTxIsj+zqhr9QKNFwqNF3wyzcu5nY00gu/T0dXuT8hWeEmlUdgd5XFT0Bsz2wM1ChNopi+NSvoqHacF3xd5c2ykcV13729mf0TC6S6kHb+LNIW3a/Jjf2RPHYy8UooY6Le6u0fXdFN3fz2OH+WKJb4R8qYopuR3iSlmztl0dA28EwmAQTRMKgsgu/hCkZ+X0VhIYDTyjHnKFHDqYmTHviZ6HZt4rEdauvcayI1ts8r2x5Gp7WPeCEq1FhKCn0STMKqV8Op4Nz9D/uNHxu5ioYXqWAfADzzCUZjZ4cjFbM8QhPchzbo/GmgrFlz+KtI8y6tirYJ6bzehODsrE+t5Rlo2csXPGYDMghsTjY7XrMNpGgSs85Z6g4514BFqvFZK5ywXeVY1OZ3k7jdUjp0LxaDZDZXrwci8dT2aTFQbAM40zlLM4i57xvRFdaQQwoUXyO3eYlp79Fw6LN6CBpgPi2coN+69vOKqaTIF/h6ZjeaNbcvSaNwWQBETD6+5/1bu/rdqnZwZzA6NfBx68Mu840K7ZaFXnXo81WPqcen48sBHt9zTTFPNz0HCYxtUQS5CXecOHiUFLUwVrXyDx6I1FzeopPFutCjza5XjeyPt8qjyLVFBHIK653eiwrQ4KqwHeilgV5h6NnT3X1vHFVl+jArjn5FQKMYeDGnuP49nPLWkMW2FTBtHVfJvb3e/MAT8skgAlv2AW/m3G4p10q907EAq7nEmt611kdlhXyTwt4o0rY+mp+/gJVe+0HD/RMPXvc7N7gbUqytrO32R8Bzs7nfWnFPrmhf7ikrYndgwILvsUnHcrWhB3svN7Do0qLsRqvy9kenhLjR79nSaV8VaDgVbmmYLNi0KvDqyzZfdApvsqy2e43co1kuVwqx5VGX7BmgFqg71obuYxrZWRmNfq6BG6XJv4aUU58yNgrPtjzTtn9PsRfY91MAd56WFjs3sTOBwr0R3DAF8lrtvVXOvSaghP73SuF+MQswOrhzfEy05eXnNtVZGYyNTaG7cdqXh19/pvJXStT6LFILPVvdVmR3uh4ORpnGLadS4vNBuWePehdAETSEfNw2tuyz8a1sda7b1Ll7539/dL4zfE0xuQ+VFcQtb5/uuwaFVgdOim/895E+9E9J2+laFeDA/WoXki8CCJeHWD2lRTWFZ4xlf9Rp7e2hM28bvc9EkiQHAXWb27UIAhQZaaKHzmtlc3rD//cwUHOk8NOhUXnmmB1FpTQHG1kZa1VTkR7yAmfX08GMu5d1GxGIQZnZsqZdxBWqo695Nr8jPqnvcFOAx08Dqaqig34G0rn+7FpseRSO87stmtqKHfTw0881RD2uemvuCelQr01htqGgonwfetXo7fIeV1EsUNvSyC2vL2DAm18vvxnnroAF6UEP1qssmf6qZ3esaVHwMxRM6wEqrYrn7o2a2nIXJzuS7ficSCp8wLfdWhNFdykrxfupMPshcVNSPcu+iL3KPaxLYkc9FKIDy9p7ovXXwmUYN6N/d/XsmU+WlRNhqZNtfCfieNcZu6sLYvolCKfdGMVymlPaNiZ7V7YS7rmnR8oWQ98c4M/uhu19qsvcfhXrgS0adugyFtSje5ae9snauu482rXnbYa6DayHptc3sdjr60A9DgvwOGqbZzSNdh6N8rK6AtbYp/G5tcLnq/Wvx6ZiK/WE/qHU/DU1tHoaEVN3U4zWRVjoRuQodGA/5BvI4uL/0e0wc+zT1q+Q8R/1KQMXEjJdRpXgsPo8iwT04fn81MnR7StOLK891ARIQF1Q+L6GJN9Xj+yABewQRa6K0r3ZaMHKXugcNCi9SOeZEVNir99mDhmdOEd9jEuqq3owGXYcAi5fO+TnyC56/tK13PM8vUKF9mcb06/dRb6QuX96P9/MbGp46oIbtYDTYN0/lPruhCTX/RrbXAVEe6lYO6klj0eDq5wYU82JhNNC6HqrokyMPJsc7KH5PpsWKVXGvx6rvBzVCO5T+nxZ5dz7qTf06nmXr0jFjkWYIGvD8S/weRcSioXlVrB5ogLL4/320qDBI0XiUjuEB/hqfMyqfM2meIl8OVTAJmRV6lLYtgbT3KZW86B3Xv710zynV33HsMBoLdqwADJ9OmdFqFaIbiMVciuOQHX6PSNuNSOt9BJXp+ZEps4jF8gTy6S9W85qLxqpk8yBZ8Urk73Y1938IKTbVsA2vRhouqRy/VeTF/ChUxBo0x//ZHI1z7IRMakOmJ5/miI08WvnTUAUtu8YVU48XRQV8kDWvsj4VVYwOXRpoaQ5pNZCwFgpms05o0JsiwToRDXLsY2aPuPvHStdq5RvcwdUujj8EVej9irSFeeFsJMTOJxa4IHoqqHAU08SheVqwI/PHIchsMs2DxFsEpo977ogq6WlI6A+M5yjyq1oIxqGJW4/GfYuQrRPjOr8EznZ3N4UIftTdH6tcA5OL2D9QzIzamOyV419Htv7L6RheF9SAF7NtR7r7VGs9Q7cnaiw2QEJ6LhSbpZhU9o519EM+o/ZKMk/1RBWs6t/+dvHew4z4k9h+hNf71q+BzHoro3fwdXd/KLrRn/RYZLl0/ECk3Q6M/zeigeML438xhrEAgLu/Zho3OJh60+Ep7r5YnFs2bS6CPDc2otkt8yw0Ked37n5G9OJuQmMq02ztrcye1rzY+npo1meTSTR6svN7x7GkeVAZ/FS1fJnCKuNhWjKzuzxmEZvZvUiTXgQN0v/UO45fDUBK2leRktgHCe7y+MSmSIncF5Xjg70R8uF1NDZT9aGfjOKtNIVtiB7MM/F3MqpXS6DG9cuoHIyOY2vnbHTK9Ej9D/NBGtGp8WL+Hhm2aItje6AR3vK2zVHL1WF5KTTy/UjN9n2B41vc477K/xHxPQZ4MH7vXzlmAs0Bm4rPkcheXXef/eKZX4jPo8i2V9bsNkU2uqdRq91qCbxFkfC/C/ljFxrQ/mgU/ZtRQH6MehsnEdo70qJOQgVys84+cfx8qDJ/Mn7/G3WRl5yOd/4F1CN6EjXCG8X2ajCll1Ej8VDco9qz+X3k22Qa0QcnIk3fqI/KeGyc16e0rQ+yex4b/+uWptuH+oBlz9fcY3jl/12l3616Kd3Ov9I5wyIv10a9vCVj+9xRZh6rlK8JRV7XXGty6XfdsogHIAVhKo3AcAsiLfZ41KM9oOa8cnku95xfLZXBMZHGhUvHro60/qeRMlRs3xa5PhZzO/Yulcf/Q4PEO9Wk4yex7yvxfxk0O/N2KhEtS+eMQ3Vj+SiPq8T2schcUhcw7M0W13oI9QKqS0Kejcp5uTwuiOYuvIKE/C40B5fbBcVw6rqMTG+hmoFC+PNIWNNCu9047zG6KfyRLerxmu1zAWNbXP9vUTCXQZHT/hjb96UmxCua8faXFtd6OQrvP5FQ7VdzTJ/KSxxTc0wPNCB7QRTYL8VntXj2ifFdXYfyJmQ+OSfy6UzUOByDJimUj10UafU96p4ljlk1jim65D9EGkPdsd+isSalRdpfQZX2ISIULjIN3d7JPRdB2s8favZdguyc5bCvhirtvZTCISPvj0moMu9Wc60FijJBR0F+GzUCENmPH6VjlM6H0bhJ3fO8Hc9UPeeZeEdfpxTds4u6cDsyhY0m1guN7RfGs5YF4Apx7NEtrlVuRN8r/X418mw0MjuejgTxT5FA2QsJ4SupETI0C/KqotMzti+BBnQnx/OfhhqdLyBT5kTUABczVdeK89ZEDfCI+FxCzM6seb4rkPtsdfu2wAst8qRsYhpbfqbKc20b5eBgZJZbpOZaP4u8XK60bSDqZf+0RZ1/GyleVQXmAkrhgTstI9056MN8oiB0sG92cc7Po5B1S/ijlrLDIq2xr9XCpgMic8dG4Voqti+KRqTrzhlJRVtGmu4ryPSwdXw/F5VpL5qF98JopZRbad2iL4Qq+qQo0NdGAW/SWCrntIqNfDwRUxmN9E9CwueV+N645lo/RJX5MOQiuXv8Ho28RO5Atuf/IFvkJGR2WAjZt0dEHm5FRSulRgOs7D+Ikt2ztP0ZWi8i/Q4aJJ+WF3H/8aj7X3ePp+i4kPFBqCdTt5L8ZOrt6m+W87t0/AZIqy3b38ufp1AlfQaZCr+KTG3r1HzWRTON6559AvWLlM+HgszVnXNFi+2TkMlu7tK2tZCJYhL1QuZdOjYKr8andjwprnsoDa1/6djWA8VmeS22r9xFWVk/8vJINH61PWrsJ9N6AeRNW2wfRcM+vn5l+/+3d+Zhd01n//+sJIakqDFoEFNRbSkR1Zpqag0tShFehBr6U7NS1QnlbbWGmkrrbY0l1EzbxBiUIEESmTSDRCTEkBpCtFTu3x/fe2evs/ba5zlPREJ71nXt6znP2tPaa93rnofRybU9EdKdg/DT1jiThrQGjyOpciqymxVS0stNviW7Vp05FoTXymeo8Y4JNdnI0GZ52cz6JtfvgRY8Tc+5OOK00ud/GugVlKSqchrAqlkT30aeG7sisS4uFr03cF0IYXFr1BfONrND/P67XR+2E+IyznHvhbii0O4k7kdROwOJc9uae6EE+eCeBZwQVO8yjmAcBHRxHeeSPvbVTVb+2KXpbCRuDnMXqduAs4NKZl1KqW//LjJKpqXK3kIeAjvT6AZ2J+LOfoi8GK42Zb67N4SwaDOPIkv0wcjan0tf+ibi4CpBNCi9bJyD5WFTtN67yIMo9U4p3DmXpDGaGKTbXoNq8M8uKCf9K4kueFPghiA3xDggpj+S6prqOV0HvBOlrvYlyvqzcVuhRn+/ArJ5NNhHTOH7aQRu0b4U/xPKyN39kKpoblFqk862Z6hPJnZwpq+2BUU9PobgZ27UY1DyuF2Q+m5VhBzvDCHcgOYz3u9GGb6/GfIaOcjPjUGS9v5BMRzp9Re4/vxk81w63g5HBs5/mtnQqP8IyopQeliZMGxLxLycQaOb4ZnmPvShsfbpbSGEA83s6mRO9gf+GUJYxRLPmc60BeFH/gpSO/zKkmxkIYSXyRsuA7J6L+XXBRQmfCla6PSeXmhRj6ExGvMUZOzohyh93E4D1jezFUMIvzSzk/1df0KI+3GqxaK/gAB+IFKj7IY8Ew6yfPTZdchn9C7KnDATzWyNEMIXkX5sLSTCHmJmY91gtkG8ofxZqyEu+lEa08iuhBDcaX5pnBv5K6jA9W9jY5A/bxSuUvL3F4Cwqc9L6m42AcCqARIjKX2Ef4II0Bg/9wr5THuFwTJO2rWMf8fZFkXl+XOuQiqnlSwC2KDYg+9bPuR8CoKL3OYwy0cU34iCiB5K+rdEBUL2C9U4hRURMok3829Qdr1WIow/jQj+jxBsVBIkBbnt5tIpfB/4cwG70fXbAj+xTERgUIK186wxcvcN5BJ4upn9ooPxboFgZDSK8n3Pyrqf6yJCX9Q4TdvtKMHa3CRuQQFXo5FqNM4x0gNx2/2Qx1PclqUmFXQIoX/mvctSJokztEdiF9qWWoSH9kP5/1fMXLMKKjLxsP9/AmIyl0TpCV6nEUd1R4zZW4hZHIDUi7nApfqxLQBEPhxR3quoZiObQunHmmt/R5O2O1qMI5FHSZrbgaAsdSfRmGT+bMSx/MrMBifXD0f+vFsl1uzRPs6+VItFT0Ebakmku78PIeiVkfh7S/KOEQior0YBENNCGVb/BCI0DxEVdwhJcE/0rCuBHcysV9J/DOJavg2V3MhfQ9zNWYigLIMMhV9HXkAvIoPuyOh5OyLkO4EyqdNqCIB3M69jGl3/daQCmokSLR3m/VsjJLtL5luu8HkpuEbz+/dCes+XkuvXQhzvq0h1gn/fcH/GPSnHGEL4Dkov2xDM4ef6IEIY5yc5DjjRzLJ+6aGFgr7J9QdZ6YOfnlsVIah9kWpuAFJV3WXuP55cv7uZ3Zbp3whJhHfRiBy2RfaGNPFaQBzx0laN3B0OvG1J5G4IYaiZbeq/D0N78FakRvwUcq2cEEJYG+mtr0UuflMz7++KAp26J+/oghiASgGFEML65gVkkv6lkA1mJo0Rsr/NzXuIwv1DCOsjhqgLgr3C26wutcbhVPHQl8l7BX0NuZEWdRb+jhi2Hghh/4EoYtzM7vO574PUkfsgfFBEXN9iSXBTtn1Q3UxHB43GghOQj+mO/v/wmnt+jhDJfcgTYzmk+/oGjUaEn6KgmDugLHE2D+Nq+E3pu50aw2aS1xXOpMYo4Yt3OrLAP4z05ytmnl28syjrlepKJ1NvdZ/S5Du3QQag4YjzHogQ4hEkRtPoni5IwtnTj82QhNInc20fP5f6tn8C6fUrdQfRRs95TByIxO5U7zgMqSvWotSHFrUeeyKRfDAKtDgX2RgeJeMhghD2+37+KYevmcjwVvF8iuC2qA0b69WnIURasV0ggrk/SSk0H+tzSE1Vmc8W4LYr4nqvQaqYWxARL779EGQcHVxzzEqed5D/nYYI9wnJMQ04wa8ZhhvyfX1j//YzkEsqCCHm6rOuhjyYVsscGyAJ8Td+HEWNV5s/63ZELFbxcf4ESRVXEZWDTO4Z7vMzwZ9fMLK9a46L0b5rwEN+z7sOPz9AcNufxIc+xnFI2hwH9GqGi/z/RRAyH4CXmewQLjoLSPMAeOkgN0QI5SJEQQcjY+OqKK/I64gjHo7CWgun+WeRJ0QR2PJ1RJH7IM+J0cgIMdIn+HrEkdWNK66DGBdp/YcfF9F6segsQcpc1wdt4KnIDrBHdBT1LUf5UdmAwOCa55oD5xlILdLROIrNmAtOqFjWvf+rPubTKJHp6Qgp3om4wNSbZjJCKjfSWH+1oW5mcs9Ofk8RhfkgyrOSXrcW2rxj/P9tKWs3btvk28fiBkqEQP6JI1QURLJz5p5rfH5PTY7XkPF3KlHgmt8zHbm9/QOJ9N9Eetit0nny62ciovAjRHx7JOe3Ru6WzyN12Az/v2Kw7mDtx+NeJEn/iz6G9BtnoECw5ai6W74T/X4EdwdE+/aZzDtGIUQ3KjqepqxKdCVyfzwOIeQXkLdT6vmzlo/r2ujZw/xvl/TdyEZ3sK9F1oUWcdsnoujaou9lxHw14CH/uxzyIBuM8NahyJlhbPLcZf3vUUiFNcWP67xvI5rgjxQO6o4FolqxaqmxOBvZzj4Bv0L5RG4KCo64EG2O7dBkbY8MoBv6My5HVP+XLqrviETzbyHj2N+QB8aXEGVrCMsN9YFChSolV8kE5KlgaJNui/TkByCLezqZSwOvWzXIIyDRaST5ZmbWkF88KB/EiZlrAwKKPpS1RN9G3/suQoZp64pE+75UgxO2RR5Acys5uR74LuSl8k8ak4kVdoB+iCO6GeXVeSwoP0sfhJy+jVwYHwhRzujkG/uaZzXMtVBN4v8LJHqOqrm+knPd37180R+i/CRuBP4z4ppjVcWXkE50fPosK1VyW6L53wMxBmuZ2WquAtjNz/WlzDg5Hs13P0pCfj9iJtIiHEWCtUtRVOesoMCT8/3+lRGxGGBmw92I2g8RrPtCCPv5M8chhqknihwsioZ8AhGjy8ysId++qxOL2rKGCMeLQQFIU1Fcw3TEma5hZrODMkw+aB3nfVkd7dH9kV44hfk9kVryJX8/lMbLXkjauzvIMeFIk2pyFmJQ4mphsxFDcLOZ3ZAZxyUIpofQmIu9K2Xa3RgPrWqRDcv14v2QZDAbMQMprKyHHAE2dTgu0lbsighLxVmjM21BIPK5OUAy50aZ2ef9d7b6R1C6y8LPdDekn+uHgHxPM3siKMqrm3mS+8Kw5/e+iVwYi2xrN+GIpmZMP7dM5jI/dwnaBIv6cxdDap3LkO42zTtxFIqIS5N/HYwi/9aqec9SiGueFPVdgXTcFfsAUWJ6v3ZTNEeHI04+LVfVHxlgPmllBaalKMvM7Y90jSe4MW4gSg36W792WahWPnIA3cvf3RNxE0XiqE0RZ3srIkiBsn5h0Qpd5c9REd1xfu/haP2ySfxzLSh50kFI9RW3QxEhK8q29aPReH4S1YK+qedE0foh28dcr5Fo818br4mfWw4RxMKFbV2EXG+g3NAH+LVxEY41EdIcjQjn7citdE2/tjel50t3RMCfRwj4dTwjH0JGXRCnW0TugiSTOUjsbzCy1zU3Rq6GONmVkWpxpJ+7EHGsdRVx7kTE/YuIoTvJajx8QggTLF8sui5CdgWUFK3i5eMwESO8gigcjFyk5+Zit2oa6RgPbYlcW/cLKkO4L1rzJ5Ga8UTkTx57Mv0QSRvTKfMOrY+kkQ3MrK40YGutFbb9gxxosZby392ROH4nCmAZikT2vfAcJ1aKkZWcDIiDf8knaFDUPxYZMkAczUPRuVj8Ww1Z+p9CHNDvqAa+ZP3O/f7CJ3sRJIYu6v8/RT7AZ2fEeX066jsFiZQV33jEke2NNtoIhET6+rmVqPHDpl5NESgjNQNC0EW03QaZ67siQrE52vgDfF2+6XN3PRI3J/hReB2tHj1jCaQzHIE8GkjOXY64loq/uF+zLhLpxyKJ5QcIMT0IbBJdV5sXxc/39zXqnxyX+ZH290euaznf+jp96GNE+tDknodq+mOf/xmUzNSnfK7PQ9Lk3yg57t5+/TY+9mm+hntT1cFvhKTG95FK4SU8+MufUQRDpZG7y5LPN1IJeKJUFyxR841FKov/RXasQk3zG0p1yv7RuGrjC5D00q+TOKcbUv2d5Mcu3pdb8+ORx8hx0f0dxTssidx3n0Rq4a/T6H//ORoDmK7C8+4jnHMwKt3XdP925lgQHPkYVHnk3yGEy9AmvglxB1uhQII5PqFH+OROR4E3j2SedzwyZo2wAjpVheYCf3Y3tPCPO3UebXk3oXOQ3/IFlC5qqyCA+5X3p+0BK3M7DDKzHf33cLQhc94m21EWkj4UuW7tQmOOGWBu6bY5yKCyfohybyOxuofP080W+cGGEPazqJhE8v5uiDM9ESGeXyDRcZ2a619GaqVFENH7G/KsOcb/HmxlOayuiAgfj7j5fRG3MQgh+H0sqoQSvWMySrVQqTKfXFcU1+6HENN0oiT+ZrZqyFc5As3nj8xsWZc2MGW37GFRGbXkfacjxiJVVSzn37kPgtcbgJus0Re5pRYaK1Ndbq5OCGV5tMOIinDUPGMR5B2xr/9didIffTsUV3EIYgymIgeBf7hK803gQEtSsAbl47mMaj70TVBVnDvd2+M2BBsB7bUTzOxP0XOKcPaCOZub797n7nlki4glnIORTSz1zAlImn4cMQFHmNnEuSelruiFCpO85X29EJxPouqmu42V1Z7ib4/LFQbKXOwrIK49VxD9HKQViIs/F2M2a0wvXOSx2QAR2cfwvPym2pzTKFNNV5pV4y0qbUEg8nFm9hn/nfrgZl3tmjyrJ5rghxBl/4WZvennApnkTCGE88ysstmD0kZ+1qqBL/9CnEnO/3hFlCkwzS8+V//l/6+NjLrjTL7hWyKVwhBgb1OZqTvQpjqTxtJtbyODS5Fkq8i9fTVS1TyMOP3H0Aa5HalhckmrjkTi3H3AL81TgYYQbkO65Vxwwo/9uWk7BrjQktStQb7ye/v3XQ/8xTKFeqPreyKf+ay/cghhMVNBjGxxbddH7kPpuveKf1+ufRGtQ5GvfCZSU/wvqmCTJmIqquKkqooBCKmPT/ShP0NqkheQW9kPkT59HFIPrYjUgYXL6HSkJz8oA0PfQgzEU1ApwvGEebKm5J4dEGe7I0J21yN4OBwZfbsi1cVuSALdDBnm1iBBjKF0E+5OYz700cg7ZZOghF0Xm9lAZzIuRVJZVyQtfxZn4uozAAAgAElEQVQhuNuQT/pboTHf/V0IuaZtN/+btRmZ2elBZdauRJ4zc/wb1kBS1BdQ/pfbg9x0tzOzVZO5OgYZtftn5rE3Ii6pq+yx/jcXpLYUIlhpOwbtgftdHTPQx/dvpLIbitahKKiyAoqrOIvSDlD5/lx/etGHeiCPhYP99xW4eIy4z2eRqJoeRUrZp5Njlk/I15Ch6Ep/1vej9+2VvP+imnE9Q941bjQZ16kOvvFBypwiByB1yu8R1/EOZR6LtynDmN9EKouH8FSoPh9DqKa2XRIhq39ZKfbuhhDMDJRHurj25uj3HD9fiLPFMQ5xEg9Quq09iICs4h7lz7oeJfb6IlIDfMp/34uIQu6e1NtgOYSgZlCTphMZ9S5ByPEuxK1lc5I4DNV52ZxG4hqIkPhbCFm+Q+KySkbExb0KfC03RrEJIxDifoj6HDdjqE918IOaMYfo9+oIGU8kcvNLrr/f1zaX8+NTlB40SyMngDj8fCekdvkzsvO8gWI0oCbfSDo/lK51J6F9OQ0xR8X5FZDP9QOIgGw2jzhkXQT/NyH10tZorxRuzKsjt9Vj0b6uUzXmXCK74UF/mXOrNhnT12v6x1AyyIf7t3dFyHoosqttgdS4t/saZNN1dOZYEBz5J5GaYktkWNgYiVfPo82a86r4LhJVUmPgQBTM8Cl/dqWuYIbr/ydCslOScZ2HNsq9NAa+bIMCX3IJ8wtVxU40hsmfZWWV82EIwGa64eQxy5TJip73CaLSbYgreNsiEdKvWwRx89f6/0VE4P5I397D++MQ8t517/W2FtXghByXAZJSPot0lgWHOQ0hgteQy2jsyfMM8sNNUwuv4n//7fceal5xKKhYQFHQ+E9WFtfeqsk3HIPgKG0HIn38eGR4LIy6w5F3ze+QJPEjc8kkgqdijQtVRVHw+DFE0AaZVIUjzOwLLg1OsyhYy+FuSatKfIsimDmfRhgagBBfWoTjMUT8clGIn/T70kr2S/vfOtXPCohYvob01nMQ43GYyatoU/NQ9aBI0C6I0G+G1DSFt8toFAB0KCJoO1MyHVv5nN2Er6Wr4g5FMDDIXHXq6pg/IqnzTkQYtkLqEZC66/h4T4YQxlgUBRvkRXMTwi8vWF7N+T5VA/s7iDH6rCVql6DasjtmcMfBiJCn0eIgKfEfPvZ3Eez9LqjwxeFo/wxHktYj/newtRAF3Kx96LlWfJMe5HrKNfyd06wavReQzvpktPlPt2qY+HvAI6HMn9HV9U/dQgjLmrwoUvFkOsp/souZTfDnnIKszGsipBSLvjc0QeK9EBf0IqX+7evA2iGEjU2l2N6iBJYeqCp2mu+jmJt/mCLsTghl6bY68fK9EMJDIYSTaIwI3JXGyjYW3VPJz+7f8aiP85tmdn9yOvY0OJ3GyNthllQ1CvLkWRlxHbtRevLsgtRAs5FXwii/fjJCIIVb4vAQwrdNFe+/gbwf0rD+k5DBL/4eQzrH1cjn/PgW4o4+iwy3O0T3TTez7wV5MVwTQtgZZb1cMsitdWfEPV1P6fkzGalpNgR+LnDl00E2oJ2Icty4Tj1QGjDjtqV/Sx9KGOqLmJ2JiIN7CDEHhdrjfX9vCtuboflOvUMKYjkNrU2BoAIilC9SRYz74YWJrTHfyHeQQfQe/7+LX78ikrJ6ocIRbwCXBUX63olUXo8j6fmrPl8bIjg5B7gwhPCgSe15NWIAuiGd+GjEBGyB1Gift6q67qUQwhfMc3ib1DhfR7D1+VAtQRhQ4FzFUyzItXenEELqEXYTMCSEsHWCO/YDVrNMbpSgcpCH+9zci2x+IPh5GeUxej+5Zzv/uwJau/eRMT9HKPLtg7L0HR1Uxev06Iao9DNIB7Zuk2dNIZ9R7l+UjvqViEnEVU1E1uTzkfqiIo769V2Rz/NfSIKLfHyVLHxIV/Y6Eqkv9uefiqj9zMx4J5PxukAc8q2UQS6rIO7mdaSKmY5E+z7Jfe9TqmzS1KRv+jUb+b1T0IZ9AgHW3GCVzHhSUboXMn4V3jo9/RkvUPXk6YbUOKsg9dp5iFt7lsZI2k2ROuUsxMVUolcRQYnv2RxJZ48B36hZx/uQrhTgr1H/BBRPUPzfxdfqWYejw1LYoD7y72iEsF5CEbD3+lFUn5no4yw8ZQYhAvq/mfEeQKQWS86NpiaDKJn0zR2s4ZlkMibO497ORqYionkN1Vz3kyi9qLr5nNyCCO5w75uRPGsUjV5feyFp61hUADl99xVo716RO2rGO9PXJXfPQFrEHf6szRAum0mUQhoxBwMy+/0n/vx7/e+7iABORvimtVTH82NBO1jsydSX1noVib6XErmwRRusQ1coP98Mkb3n1xSqnTuQyJcWNyiOwotmC1+4nzlg3ktNZGeEII5Aod4XIclivRbm51PI62OYz88LiAMBIdnDfS5+RCYtawfPXgchqSI9wNE0lsfqgTieW5He+gqUz6U4HyPP4xDSSkPbX6ZMATwoef+I6PeuCPHOoIpcCrfEsUhF8yXvDygp2WBkXNoOcayDi3GSL/N2h1/zNtoMRcTnVUjsrUS/og04mhokhzjYeLybIEakK+56hhDRJtF85FId1NpfEAF4hDK6+G4Et9+iHmnuQamTXdWv/UJuDf3/T5JHjL8m0t1T5nWfBnzL+xZBxvA78PJpNWOqc0t8hqr956cIiU6oGe+rNOZgn4j21+9RrEP6jqWRuiz3/mbpqWsJIgnu8L4NEDw/jwjSMtH1Qzux309FDGNRzGJTVFQbxFTc1NJe7wxi+KAH1Q1cZ4x7Dm3oF5G4/jjisF7DOTAio0oH7ywQdtbgmGzOkxFXdm7U/5j/XYwao1Pu21oY108RshmPuKQNEHGLkWeMCJeP34F04xciRF+XM2WOP3PtqC/rf+3vH46KUFeQAEKyhf/w3NB2xLFUNi5y9xqa9HVHnM3lwIqZe77l452EPDFu9mM3xAkNROW14nteQRux0KvGHOAOVPOQ1HKjSIIaQ4QIvf8gRODHIzXKsw6PRc3GYhNujtw8d6FeAh1J3jf7CIfNbRHRWsp/D0HEdmTmnsMQwp/qv8cj6fHvKFVrwxr6/5eRR4wziOpMUuZ1H4UzED6HV/rc/poyH/ms6HjT4W528t7F/VkvZL7jTcSM5dJivEejEbgwsK6K8MOfEVPxCR/fK8AFNetbV7NgeO4czXHHvxGMLu1rPgZx2AciqTd14CgYlYb97u9Jq5XF+y6bXyk9FkQ+8rhZ8n9dZN5fkBvXTKquUKciHdw1iEuvtFDmWAZRytpotaBw4uPQZF+HDE+X+LmN0QJi7hKX0b2BNvfSfs9alBV+xiNjXi6E/HSkC93PzJ7wew1YxQ2OAeWhLira3404IoLSt27p4/060NfvLapwD0CSRAGAg4OqrV9PpGd1PefeNIZ5rxNCeNOv6+6/QRtlCgrumhpUV/BJ//Zcm+Vji9tiyNOlN9o8aTTb/Yg4FP7K9yKXy0J9Mxz4fgjh+9E9j6L12hfpLv/i3/9dFB16efyCoOyOg/z3J5HKpy/ixiciHe1tIYSLzazwH/4e2oS7IXjcyMwmBcVFnIj0q3chiWEg4riuRUg20KinXg2YEEJIq6OfjNI5xDaL+0MI30Bc8VmuS53rM43g9nCkzx+HDJGvhhBOBo53m1JDDngk4n8n+n+WmR0dVBs33o9FXvd/U0bcbof24nshhIeQ6qpiyPc9cHEI4W4ybonp9UhaKtoTybkZ5hjNW1G/4Gq0xy9CCPUJRHw+b2YzMu8AWKbGmD8W2WcampktmbkWgKDUDoWN4ZwQwpMIroYjSbdvckthx+mb7HeASSGEnyD438O/o3Bw6FI3hrgtaETe0KzeGPceoqqbB4XuF6k936X8sBghnYISARV5rB9F7lSLIHG64rMcQlgecX4zEbXcyMzeCCHcjxDfv/DgIr9+BcTpVBYcBfsUwQwXAr82s1tDCDcDd4UQ0hD5gMTJAcC5IYQiyGURxFkW7QkkKbzm5+7w/j1QtZO3g/y4X0Mb5WYagXpdM5vhnjG7oY3fM4TwACI8K/g9J5nZEH92Q37naL5eBq6PNsLK/rs7UidMJ/LtNxlx3w5KH7objYU1vgmsGeSXXBh3xiNO7x1//iyE9IciHXQX8oEZmNmDwKAgv919kfrlQbTBGoJ7kEqg2IDnIq7uGz6nO5tyd2wC/D7Id3l/H98cM5scQnjLytQJmyMY+op/fy9TrpGzEOdYeDLFnkSn+r0pkuiCuOX022Y6MS3m7w8hhGPN7Ha0H35o8rSZaGUMxeKIacoVz1ikBjEug6Ss4r1H+c9PAj2C8p4s5kwFZmYhBHMnhU1pdBgYamY7uWH+GcTtfw2pH/uFEF4ws3tDYw6Yyyzx8PH5OiGEsFKBnM2sKH7eEyH5u9Ae2wv4H6tJB+LtXfJpA4rUEwXTYkiVMgoxA3HefBwuuocQPmnucWVmg32ObkYRq0cnDhy3IWYh3e8gqfGHKPBvJKX/eg9KY2nTtiDcD2Nu4ASSCCbLRC0FuYgtb4rci12hnkVU+AQUPFEgvXOQXmxAcb8pT0tXlLxni8w73kYc4hkIaaTtamuh8rs/a27V6xDCMPPKRkEJfN5A+u20xdXM0yCXWy3J9xLkCnUG2hiXW2MS/ncsyvEcFCm2Wg6og7x8/oyApE8d4KcWdKTjzbXvIU79N4gDX9LMDvJnXIckh7uJCmsgRPsc4rjTJGe3m9lFyVjWRWXjpmfGuTkiXLtQ5tO5w+doeqgG9yyFsmKOD0lAWghhtrkbp/9fRDi+hET5m5C0MJyyCPQIRKheRH7b7zjcjbIy90+HOcxDCI+jaOaRSf+GiDHpafLMWN3HcQ1Sx4CQxR8Rsg9+/NE8EC953nS07jOS/luQn/kqSf8QpCYrIpF/YGYvOTIaiIjEBITAQTCztl//FRrdEt9GhLoH1Rwwa3t/kXNlHGKK5iDE9j3KYKKNKSWfG71vsL/vEYSI09w4AZWPWyydk1zzfTIUlWHbJTnXG8UoHGJJzqagAjA/RfrzudHUETPa0n6Prl3aWoggXhCI/NRm5y0TtRRC6Iss+GnmupsQF5kmrN8VIYAi3Pkg8+TyIYQnLUmA4/2nIQ711x2NK4RwtZkd6L+3Bl4zs6dDCHsjvey6aCOfhhDGbGRAHISCdTbPvH+yZZI+BWXg62dlBZf10YKfiPSFBUexnykL3XJIV9uLUkopgLqoxFIAgvnvZj6rvRChXBWpAYYj7udBFD3XEOUWouyB/n/s058trIGQchzCHCc5G5EioKDw9dkoqVQaEVnURPyrv2M0NS2oEMPjSNI6CQWrrFVwqClB9L71kOT0eWTouxhxlwcj1dB7/o0PIL/wx/CAFTP7f5k5OQ/B9iPJe7ZA6pgraMy82B8xwGtE1xY+059FklWqjgDdtE1mDl5FdogUMZ6PEOs0GpM9LYZyIL2UPIqgMoE7WdXP+u9on65hZYzA133M5yFENx0RvveDqvr8FiH8pxAcF8FX5yO99w/9ew3po9dDhCF1ySxUqltmpmQFxP2aj+FoJIk9g2D7xeQ7hiHuukKEQwhPp2qloKjlvchEU9c13+8PIFfgx5NzhyKJq1LNqvKcDxuRN315Xt8M7q1gZiu0+Jy6cPvFEGDmwsHn5uJI7rkjc902iJv8vD9vcaRmWQIh680RR9EFGTwWQ8h1EKpOVKezq/ue/REi3Rchit4oInZK5tquiCN+jypQx/7ERVvSx/kM+QonfZCEcgECsCPNrH9QSbcVKJFGIX5uj0KQUyJS/N+TMr3uq4jovYAqsE8KskOcb2Zb+feMLTjZ6BtH+RzMQHlCHovOGWVgRgzMRdrVZWkM7nkFicwFh3SJqRbnSihsP1fRaBHk8VApS+gI+N+mtL1rIbXRVLR+xXhiSfRnSBU2B+VsKVQ+hc0iLhs3Fkk616GcJkV1JIKCli5H6oQCeXXYgoKuDqNEjCCR/yxT6P22Uf8YU6j5EkhltyqlGuxuNIefsWpZwi+iQJi1k/4xSFr6FY05YB5H6TXS61dHxHkz5kMLshP9BXHB+yHCeR1SjW5vZrsl109ERtucHeBZRGjndiECvBqCsZdphMcVUJGIDUIIe5nZjdGzrkY+9kORVNob2X2mIW+pDmt5LhBEHkLYBhmt4ki2i6nX/xQTmn7A+mjTTkVi13UmneTPkfiX5li+GCHYSgkpSiPd0KS/HzJS/T+0EAFxZP2QW9DqQZFo05G4+35QsNMj5il5o+/ewczuIdNCVCc06X8UIdMzEBBPCAqiuc+iHOHR9asCA61aRLo4XwRKxX17IDF+x8z1I5HOc7gpcVcR7bg14qwPjC5fFon075FPr2sxNxFUYm0/pHdeGq1jmuTsJDOLjZkEzyHu912B7B5nmtmcOrVFUB6SIk9LEdxzu3mJs5q5Wq3m1M0IkU8NUcHwEMJxCE4+l0FmdZLo/0Pc5wBE3PohLvIWlHJifHpDUF6TqTmGIISwecrde38W9kImR7v3Z4PW0F48CnHv2yAvmi6IqRmMJNLrKaOjizJ2f7Ikn05QwrtcDpgDkPohJ53nCPt486RvoXQGKM4VatIUsQXkLtk1nQffD+ciKaVoyyAJ+1mkiiuktoAMtj9BDFTcVkGSOVQlgr8Au5jZcynMOnxv6u87EuG4Q8zs7nQ+6tqCUK3sghDqz2gUm36MEO9fM/f0rnlc4b+7I9KJvofExCGIEm6BxOyAAOoPKO93xWslqMr6aGR0eIGSgwwoJLhAKiNCWWczmwoghDAJ+byvkbxjPKKof4n6uiBOqkh8lba+KNnSJYhQDXHq/ze0AQ4012uHED6DAOR5M9s6841FKHQFybva40yqXNZNaNNOR5zZMmb2bedKR1uSN9olgietc8nPuqC1GmuRHSJU80UXrR9yG1wqyMvoUrTe/4OknuOtWkt0BPJuOs+iGq+hPlsiSN3yCo2SjaE8GV3MrGuy7ucgxPwu4vIfQbA4JCWe0fsrhCcot/bdSOW0dgjhPjPbru6ekCRly7xjFuI634q+pWBKuiN7x0mUof1PILfQfyIkvRKll80qKBJ2jSAHgWtNBRw2QATpUKTajI2dd+TG5WMbh7xdXvC13B4VQq7o8/36Iqw+XpMeSJpcHDFdTwHfMbPJufmKnhUXETnTzH7sv69AROX2aK5mItvEXgjJFtLQhj5fI5EKLY1avgDBwFPWWHwiNng3FNsJsgn+EiVzuwG5zT7tz87CUdoWhNfKSUjHFhtxRgQVH741hLCymf0huWd7ZDQ7v+hwzvI5pB+7Kijl6K8ok+8XGd0K8WyiyfB0oYjo3FaoBHZHyCCXmvRKR4K/DiG8RDlPhStXoNGtawAKs7+HxlSbXwMGhhAWNXmxFLknCo+a31HN1xAQcXkSOC0op8rSSMQ+FLghhNAPeXTcgAxee4UQ/kgjkl8fGTV/RvqCEA5A+UZ2pOSyvujzeQQC6j1ozYK+PfJsSN+xJ/LTvyfpH0/pGbNVZm2g6lmwG27Y9vXZN0iv+jAiejmk8RpCGD9J+s9Bm7Ko1BMP4LfWaBtZHYm665CpYm9mJ7oqYjPEYHwZweNlQTlKLkBwFiO55VMu0mRveTHa3Cl3/OkQwvIm18IDEDf4EHBFCOE5xMzE7QFU7m6pdMwhhCP8/u9Tqsk2QUT9AqRyeS1COqOQzzMIofaMxryUI+yG+Q8h7BFkW6i8HklW64ZSrToG6B1UHCZ3/Rzk8XGSuZ7eEWYRKDQmKHPk3SGEA0xqt2wWQeCvIYQlzOytAol7+1+Eb3KpHm4JIaxJo7rpWR/HNQhHPI/cog0RvvOB9XzuCuIeuxGmzMpaSNrc3uQZ9WPEmQ9zyb3izZS2BcGRP2M1eadDfWKhrVHmu0nIOHEmyouyOEJoy1P6aT6JONupyML8apBP7BZ+fwWY0UbZG+VVOT80piY92czmJihyiWJzM/thE3G5aENpTLWJj7kX8nfdH+UrOT6EMBDpzwdn5uUhK3XGPX2s+yLCcysyVvZGSbQec3Hvd0gcjJH8XVSR3DLIcHqimf0mx2WZ2ZczY8qJ3ssg8XqomX0ruX555O1RqDKKzdUDAfUcpCKJz0G+zN13zeySzJjWRAFbPTPn9kJqn5+heX7P+zdEc7kjUa5sizaCE8+4gs0PkdjdBRngipJ7ARG/jVHcw+b+d2kEY3f5N8b57g9Bvvj7JONtlvhtrhE2NCZlew0Zrw9KP5+y6lCDWyCCh81TTi/IaD4NeYIcHo3ll8gG8pDP2UAz+7nDwwtIkkvb5xEhvT3p74G8lB6mJNZ9ECNwOIKXXFsezfttSLqfiPzfYyN7kVPnZJQRM8eR16mVzkaM3++S/u8gBvEmIsnVzJ5JrtsVwcjqZraS9y1KSdy/hBijwmjfnTKPeQC6m1mFqQ6y25xrZv9TMy/ltQsAkWe9Rvxcg7tX1D8UbYb+SDze3cweDqX3wneIku8HOdMfhCjd9YhLfABtxJFmdlzmHd0RpTyExlJN59aIq0sjw18ayFGcX5dqRrmiRNUMtKHvQRsfAFOSrZaaqx2WQBz8fkicHBc965ggv+65SB5JBHErRMZjkY+5FfMQcWBvoCCO2yzSJzsXVIjn8bNWRW5db5K0IA+Jv1Llpo5HBGdttNkHmNnEIBe4m5Euu8OEQa6ieaHYPJnzk9Am3BG56811tTSz80JjruyTkT70R4j7+pWP630XvXPtywhOhyNvmMcQYXktRHrcmnFtbvLxXwHpUy/xdwafn8I4GpCxfg2TO+Vg5CnyT2cG1rOqSu+raF4foOoWuGgOmfl9z5jZehlCsjNSw4wsJCyf++E+p9ehfVrEAPwZGWdTaexWYCurlsA7ENkgGoyNyTVdkK5+L8TBvoBSyc6IrlkFrcNyCLE2PAKt7b5UpaTtEQw3IMMQwleQ5PYIIjiPIOblPeAAM3s+urY78oAa7f9/kipxH5Xj+kMI61rknpicy9pA0rYgVCtrhaonCGhiFwshrGhV16buKPf2oyGEV8zsYe/fHPmNfhOpMqYgPda3ERfQDXHmK5mMoN0odVtpOwV5UJyAkP8pptSkqwZF7KVRkgcAA4IMt3vSqFteGunL0oxyp0XvexqpAc71/w2FYBNdvyvSeVdSfSIx+Btoc6buZvuHMhp0fYTk9ytOWlRT0t+zGgqgKbisG71/WcQ1fRO4KIRwr3//X1JkET1rPI2Fbov+RRBRuwDNW8FNmZndhqIni0Clc50jXBchhoZ3I6nmSLT57kAE8SjEJb8TFCX542IjuoRyOmW+lcWQt85cRO4IdCNKT6SXkSqpqGCzKbCpq35m1czjIMQtzkAIYRqlq+c/XCq4OVJ3dUF65V7AY87tHoRsNd2Q4XA41SCea5Hq4Gakirg/KJK0G2Ia0nYB8iaZkox3DWBsCGFDq/qrn4OCXE6gGg2KlVGuRfsy4qwvQsjxOspi3EdTdREGwWbKXIDUjF+KxjIdfX9ATMBvfQ4vDCHciNbtXeSFdG00xmkOR49SDbgC2Q2ORUb7WEraH6lDjk2u/zXKTbS9z915piDFHYB7Qwi/MlcLm9k7wOgQwoMIN4xHRGUIIsrbmNkt/n3LWGS3Aca5mubIDANzETUR7HFbEBx5xQgXta+ihf0ejb6rf0W65qtCCLv7xi+eN9rKiLnVEXI7G8DMFg9VQ0LOuNQNAcI7lABXTMSaaPMfiJDcjogYHI8WeiXkI7o70k2ORx4mJ1hSbi1Ih1jhVP1c6noZ0KYcjZKE3YKIR5Hqs5kRp877JyACMw2JxEOie65GxCXlsp4y5dhOq7//GakKPkejkawnEo2PKjj4IHe1C4BXzezklJuyMp98VzS//RBCXcJk7Evf/Q5yl7wZbd6e/m3HomCU31M1SE1Da3Ub8DMrvZm+jaSVhlzZfu4g8sZWAMxT+Aa5HG6K1uoexMEXecQ/hwxwY1Fo/raUHj1Lo7X9EiIcz6E8ODOCAlAGWz6Pdl8EZ/shfX03/76nzY28wSsr+e8JSH+c+qoviuD9far+6scgmKtUmtKn28+C/PD3Q+s4GRUUmRu8FULYB8HwL83s7Mx31BVSHobcD4ti0kVA3+LAXZYx5Pt1LyKiMcbKQt1DgKNN6SPS698zs0Uy/cNQla3Vk/5nkAF6E4fVYZHK6R2kIkvVwnchCetPCIk/iuDkySaqs1GIQdmLqnttAz6rbdZikqf5ceCJg5K+nVCwyUw/HkRuOJXMakikOhtx4L9HqoUXKbPc7Yn04nv4sSfiwt5MjqIySl+qqUnHIv/W4p3TKLMwjor6uyGXQ5C4NToz3klkUpb6ufd8DJdTpsychZDA5dE7ilSf3dEmO4OkQDDiRnPv+D3ikI5Dm/a86FyaTGnZXL/3LYckiX8i6WRXP05HXOylfq4oNvsKXvczec7KyFtnW/+uEcj4uEkH756Op55FnjsvkyS/QgT4G36sibx8KonVHB6eRqqAO0myJtbM41DKDIeH+bhPRaL2D7y/iNa7wNf99eQblku/kWqypDgp2vq+1hPJFCIvngWck3nuKUhKOhkh3v3893A/t5KvY5GU7AwkxebesQ6yv9Rl0OyFGLGHfT4PoEyMdiZSB/4fQmbjkZT1iej+olzfhVHfD+O5rxnXT9EeGoCI02Hevy5Cyrl7xuLFzJP+Y5Hh+yDKgtQHI6eEu5B31A34/kFSa7MEeqN8Dg5HeOkJhHdOT9c5XjvKYho/pcQ5TQtBz31GKxd9kINq9fWJZKqvt/isV9Em/B3imNf2/iuaHZ18x0iEmONsdcX/o2nMAPhYdN+YzLN6ow11D1EGQj/XF3H2R0R9k4FnaoB2hgNDFikju0EDkve5+rH/jonCVxDiHYPsCPc4AD2fAlm8oVA+mrT/Cz6uP0aboHuT+b0aIdMRSNVyEWW2u+lEGzoF9Lr/a96zDvB/0f89EOe5K9U82cXxdCRPvT0AABhNSURBVHR9nAlwOOVmK7g3kNHzdURgJ1GGzW+IEMxnMuN6EoXPgyo7Ff2LI0Rziq/bkwjea/cIUda+dN0Qk/MDn9+L/Pf6CKF3aWH+CkJiiMGoZNBETNdT/uxPU+6ZIQi5/wDtme8hdcPhPlev0kj0XyOfD78L9dk6x+CpZxGhHNbCN/VB6o6xyN3zbp+nx5CUdlU0rquRCue7DqeHoShPEFP1DPkMniviDB+NxP1dn8c+/s6NkMpkY6IMh0hqG4CYhNX5CCHyR/1jukZ9XZE4PRS5QZ3kgNwfcUZX4KlRacyBfC41OZDnYVyrIl3o35BhZBHvn4I4/MmZ4yUkDt/jALmL3zMIce53JMed/qy0PmJxdEHcwGAkqj+LEOKOmfE+T5lbPUbKi6GNUeG8HdhSJPhTB6jnkIj/Kp4a1oHqkZr5GttkLieRECrvfyAzH0XNzKd8vStH5jlxvvk45/wsf97dCGGcibj+m/27Ch/jnX39inzo/ZPnb2wJMiThnBFyXY6IO0a6z2fx/OPJM1/xOT4y6V8tXRPvf9Jh7yd4vnA8zWmTeZ+bRzuzzlkEgJDSCBKpzs+tTpWQHE4Z8PN/SLU1Odorxd54lrLWQFzoZWryjuEIERZEvwcy9J6ZGc+Z/o50X92BCOjb8fxFv/v73LztxxNIZVGcXwkh1D7USCIt4I8D/blbI338kohBeo7Siy4m7sPQPs8dszLP749wysyWxjMvH9HJD57Q5NwshJwvQdzpxUi/9BLOEdGYA/lyxNGnItsIXE/tx/FIxFujybvvQRv9C4hjGUIp/tbmFkccxyaodmjR9xoKUEo5vK+gzZAWjt0ar5Ti9/dCOrUs9+HX1HHqj+BFmb0vRvLXIbeq9L6plERhXHLuKeSymRYAGEd+8x+MRNwRiEvqG52bjQjTV6L5eBGpxrbOPOvTCGmORlxJthB0cs/jSCReFxGyl5D3x9OIK++LkP2afv12SDLcODqmIQ4p5oxiRD4FIacCYRWFI5YgyhnvfZ9w2HsDIYy7EAFf3s9vRh6R3+brcjHwZe8rkOGyNccraA+lebxf9TV5OjmKvP8bI3j/A4Lljb1/EjWEhDKsvWBOLgW+WrMmT0Zz/yql6uw7ROrJ5NkD0N4u1D0TEQHZkbz0NAvBfsEgvO6/n/K53wbZbpZGqrwngUujd8aS6xYoSV7x/00oJcdbPifpPD6NEPODCJnHauFbkEq3QtybwPB3a/rXJFM8I3ttqy+b14P66uuXoMADkOFqBqXxdTgu5iIEUXDLD6FNl4pst6ENdmp0XIA40oERgMfHKzQWltgfIaIJyLVpzcy31FUYGYTrtZP+sxAyq3DYHcxZDpH+kUgNE/UfioxRdUi+QkiJdLPItTNF8i+QIGbEmb1NlQN5G3kWgKSKZ1ACoGIdj0dE8wsFcvKjUvEGcTPPIaR8EjKmxee3R0a5YyirCKWItEB+MXcd2zbmoA0ac0TvRH+/iTbiszTaWiZlxtsDcbGL+n03Iknhivh6xFxMQUjpKcriCI8mz/skIox3I6Lxms9pQUAmJ0eR06N/chTzeBJKi9E7PvxdX0HI5wH/9leQuq1CSDLfvYzDQ6ViFUoTvB3KwzIOIckCMZvPzzVISuqa3BvbOdbKvTu69luImKQIfgywT+b61Wnk4GNCfR+RxIkIXh9kfHwgmb/VEbP5V6Sma6mgTARLuWMQMpzOO579IDe3+AGLItFikE/QKP/9XRoRyuXR7wJo96SRSxpe3ENGZMu8e1kklh+eAfZpyKsiRRRTKSnxUISIPuXn7/IFXCO6ZyeEvM7PvP8qaigqUi/l9Np7O7DnONw6cblOHXMo4sxSorArSlmaXl/45xYcZ4qYJyFiWnAgD6GCtvEzVkbczzGUeuWibufFPr99fI3Tkm6zYoCO7l8VIcAHkTrjPP89CCGM04n0jYi7LvKbL0ejnaO/r+9O0Xsm+98rmh2Z+fqqP2u6r8E3ivlI1wrpzUchhFnUZG0m+a2IDIuP0EFdzpr7L/d5ecrHtjOS1noiRPoIsGFyT5aQ1Dx/aaQ2jZmjixBnfCGJrQOvcOXrcBhCni/5uj+MVKybk9GVR89YAeGNvzksnpO5ZjzOWGTOvZPDF4i7jv+/JfpdODTENW8HIwR/IZII4zm4FkmdDSXgEAPxtq9L7OBwBcIzE1BG048mIu8A2H5PvkzYTb7IxYeu6P0jkUiYimxrExmqkmfNwjmMpP944MVM/0bAPf57M+RLOtUX7zDkEjcJIeBbfUN8Ibk/XvCjasb1V/J67RGU0kiKSEeS4VSADWresTcZ7trP1RGFUcn/FcScnB+SjglJFPcSqXy8fxfg58WYqZZ0+zuJEcj/fxA4NfPuAyn15oOpctnvkLd1TPF1vRHprGtVWh3A7xzExcaEvSIRROcWd7idQ5XAVDy6ovt6IzXNSv7/CoiTq9Qeje6ZGv0uMk+e5N9fWx4wuqcnIiTDELFKS6q97PP+R1+HgkF6Be2tQ/05ARGHi/AkadE7VnK4GoeYlwcQ8RiCvJm+ibj0/oiJmuzvnpaMNUbw/yKD4P262dHvmCOfQB6210EMS8VjBxkvC0Nv/P3jfexpCbjd/dueQOqr1PmhF/KMuQ9JG3M59pZgcV4AuJPA3g1xngMp9UsDUbKhRZrcVwE06kW2l4HdMtdvg7jGD2QgRWLocAeSrkhH/xbi6tehgyLHNc98N5mjQq89mkbuoECkVzjwZJEyeXXMCJRzAyKi4O+ZQp6I1iHmR5B0cwaN9om7UXa49DlbkiBIB9bVkJFrBV/DV5H6bXm0Ef9GFSnPxt0PM++ZhrJQzsu6buTPf7mAOUT89vLf2yEu6wgynh7IvvIGIkj3oCjhYqNnPUN83ov8KPExG3FsOcPeSEoCdATiAv+A9sIhNe95gapb4BLUuOY1maPBiOh9zf+OQ/rslZB67XzEkBRS67MOFz38/18ixmx/vBpXzXt6+9+uSG9/IqU65kGHpxC9Y0kyCN7nMafTHuXPKn7H171Jxp0QEdyZ5D12lkM4bLCv/aEIeacupdsgQrEZ2qeFreF2X5uto2sPRJz8VZRMbHa+0mNBBAQNQOJWmnOiP+JA9qm5ry4NZ0N/UE6PwVQDOZZFwHygJbkR/L7DgAdMaWIDEnf2RJulP0Ku+3rfZIRspqJw6SHI02VrBKjrIAT0bfOEWUEZC+uKHATk8dJQjy+E8FMEwP+wKDjBA2SmI7FzsaC0plejaNRbPex9MUTQFkHBIMM80OA9KwMRVkac1Vo+X4Y45yJ6892gXCSzzWxCMrYRCBGfizbllYiD+CrKib1tJmBkFvLyKIpkPIcQ33qIEMZFKsznxSxJpN8kkKQLQmZ9EIKaFJ37BYqMfTBz39wUwr72S5rZmyGESxAnuija3IshRHqCf8tt6aPwnPahDPffEyHeRcxse3/HsWZ2QfT+K82rKEV9W0fP/D+EGIp2BfJL7k5jENEaPr6taWx3Iqn1p4jZmRmd+xvV6jlQ5q5Pv3F3VMHmEB9npfpUUHric5AX2FEIforqSE8ipmOOh7xfYFGOFL9mC8S1346CqjZD0ssIhLDXojSI3oAQ58pIJfFjVF/UfM9tk/m2Ihvq6ZS1M+NzmyHtwI00Bibu4GPYAKnxrgd+b9WUCHGupn+juqFvROc3QOuwLIKvOAjuZIQXL0X46nhLCly01OaFk+kkRR8/j+fqKl7nql33Rk77vf1YDQ86QEj+/szxFmWQyX6I610OcRfvIJHyezT6+j5BojNEBq9b0MZvcNGiuTfLO+T12qfhHiVJ/yQiDpdGlcdsMnptRHDGJM9Zysf6L/99AFLzvIIQxleja2M10SwUMdewBoiIvUhe/HyKxuCPwsjXFW2+3PrmJItfo42QBpJc5mPPGWff8G/cJfOOCYh7Xj3pn+Z/F0HIb1H//3RkjD81dyTP6IKI26tRX6ovf5omahJqAkb8d2xXmkzpTRMf71GmeI7dAovrh1M1hH7Hjz2j4zgkBU4nH1exbDSWgNIoXIMkhtu8/2ZKbns5ShtXDFuzEZN0CkLEOUlxTcQ8jULqrDt8zUd5/1pUJcBaNWfm3HHIm+pcRJQORgE6v6GJxw5lJaMRSEo6CdgsM/5+SJppCILzc+OAr2Xu2QL4TUt4tpWLPsiBfCr3IhI1EbDvgxBdTpScgShb1i878449KAMjlknO9ckcRzqADvNrrkOlnkBcTCW4pxh3k+9cP7PgU6k3vDzUwtzFwPYGHhkWnS900XOS/gLJn5X7FsTFpkBfiIqPklETUe9SVniB5MTPFIEdFAH/WBpdADdG3MnLCNHFSHkRZDNJA0nOQYglR8SG+wZ5GhlZF/Nrfu7jPR8Rx6Oj8cU61EHJ2Eek8+j9Od31Z2lUj8W/v4OQ6RRq1CSZeXuS0nMrDSLKjqsDuFqPjCE0Or8m4lDHI4KW85iZTCNjEcPqEL/3IbQXXkPIciyS5FLYOgVx409Q5mrZhMSrJXrX55AueRJVBH82UoflGIsOVaCUiHkKGRsXpcfOZF+XP6Jatd0y41yCMh6mLgjuQiJkTZXAHN3SmnYWCOYBaFZH4tArvrjj0Wa9ASGnHMc6yxc/7X+EkhrHx9zgAJpEQvkz7vVFnIgQ3uIISXw2um5czf07NHn2Dsn/zVy0tkCUPsd9roNcM1Ng3xD3702u39LnpKnBMQGQ1+sAxAHuQRLETL194nUkrucCRsaTsYMgo9ZsMoERiPA/58CeujI2BJJ4f51x9nmEqBZHm2U0EpFHUUoGSyOO/tf+/5vkucHfkgmIQkh5MlWk/Iy/fxmqRs2xlMFFb1ESgTV8bBWu1783hyi29DWpcPe0aByl0RC6HkJMY5BvfuWdGVitRYyoIMduiLv/IoKt6WSIfvLMg1D09hiUayhGcr/y+X6ABIYRgjck7eYYizrYnhcb1xxESApPvFgXPw0xcTNRrMpzSLXcv+b4fmffXxlPZy7+oAdRzgn/fyDKCpZeN5DEaOD9r6ENmSL4CcBLxYbP3Pc1hGzuLd6HqOh0xP3HodxbI31xbvxZdU9H5yIgjCntH8irBOZQExLd5Fm/II/k93VA6gyA7k5NJF/m2uUpw5Zz4ucAZHvoEd3zCaTC+UXmeUVo82KUSacK9dEI8h47lX4i9VHUt5NvqJdo5JC7+lrcSL0k9oq/5zmESDYqxotUaylSXgZJfDlONo56bEVN0ozz/TtCFlNoJCQzfMxp/9+RSimXH+UWH++RCPEvGx3rkScWWcTYBFZHURLZCmwh7np/h52R/g2D6ZiLjhH86Lp3UAPbrXxHBiZ6Z47V/bkvE8Wh+HfdSZkuYy6nHu35Tr2/Mp7OXDy/D2o4XGp0Q4hbuy3T/4wvXi6PwRhf4COpivJ9qapi/uJHTq2TU/c0U/nUUnqEGHIqgcJNKQW2lrgGGjeOISKX404q0oD3b+B/c4h592b3RP/PlUaQeidViZzl16QIeAiws//uE43zaf+WnMfOOPJEbHy6GZCh6SXg/cz1Z6INleNkx0Xr+RMfwzOIEK/j51JvhTpVTKfVJHVrTz0hGYMQYY7AFCkS0vwoUym9aWK9ehElOoUqUbiYPGLsiFNPYetZSje/y5Gh9zPNkNw8vCPWa6fnBiIOv0PmpWZ9Un3/cZlruiPYKzj1mT7f36UTzFPtGOYFAc+vg0ajWdYwUdefPOcpJM4MzhyvRb/vT85VXNr8+h+RN1DOod54+VLmWbWUlg78tTPAZgih5Z5Vt9HrOJBO+ZcjBPA7xDG27JOeAPHchFp170fqo5xOfwIlAaxEj9bAUJHONDeWrWvGeTJ5Vck/Sdz8kJrmRTwFAhmkTJ4obEfn1SR1yKzOCPoUThSoEph3yedHmUyGC6S51FG8o2VYrYGti6mxGTEfuGiaqzljpqMzaQjq9lwllYZf/2OiVBHel3LqLb+/8vxWLvogB3kOtuBiZ9dMRitGiZYCb+ZhvAPJIGU/9w8yqiA/VwHEOiD0c50JpFkG6c1n1DyrKVBnAORVVLkemiDGZAxZCaLZPdE3teTfHj8rWd+3aDRKxkRvTB2s5N7t/duQN1DWIa2nyXDLyDuqDim/QAe+37SmJmnG+dZx9zEib9k4Sp7wxKHrHUoddACrTd69BAqEOd7XdUcaHSTmKxfdAh6oRf7N9hwiCNtlrn+eSN8f9Xcn473X0fsr18+vD28yIc1c8KxmMuanUaJOfXMH8tBoVU1S6wrU7FwNEF6KPETqjJfNkmflnnUareu1l0HSy31RX9PoTb+mUxGffk0d5z2KRm6yeNYZfn1K2JsRvToYqnt3M6+RWDSPOdxKcqzMt6aMxQvkicImZNw1mTfO9xryLqx7kpdstvS5yCHs06iXRg73azvlMZMZb5bDRF5tQ5GnTJEx8FpEQD9fA8Od5qLn50G9pPBZ5ARwpa/t0cjQ+S6Z/Pj+rCwX36nxLIAPzho0/dyYmsmYn0aJOn/015BRIkdgCsNpZ/xQW5IIyFDazLNaczlKntWJjdOyNPAB76mzA9T5t5uvcYqUm3nszKiBlbp3j/JzOYQ5m3r99WiqyG9n6qWBOrVH1l2z7vpiHltY+ywMZfqvJ4+w/+X/p/Py+Zr3b5muYWfhPjr3NKUX0vKoKhBIfTVkfrzjwzrI77ldaPRJPwQxKrdn7t8OVYb6YONYUB+c+YC5XGzNZHw1058Vp2iuvqkzUL5MlEQnGtc6DuTz5Ifaie+fb8/qLFDTHDHW6Rnn5Z46Lr7Ov/0URyK1kgX1CCuFlZk0Bjc1uCV6X4owx5BXlZyNOKopNCI/Q5x8zm5Rp/bYi7wxe34aQZsZ2es4/5HU69VHNJv7+QCroyjD77vTaPdomVgs7CPdczT6pD+ODP1X0sipT6SGU+/Uuxfwh7ZiuMwiIJqLU/9CxoQcdz0vBsqsryvzwU0oec98edZ8XpMON2er99ACF597VmZ9r0MpCVoieg4rk0i4ORK3RJogTKo6+hOoIr//IYOU/Vwz/fmYzDfWqUlqOd86GGoGW9RLCk+S16t/jprI3fkIg79EOVN+hBd68f5l6779o3rQnIguTpVT34oWozebvndhfth8ev4ySOyt09N2aKCkRV9X5oObUPTu+fasBbEm83hPHRffsn+7r+8chDA7o1Kre/eeuXsRwpyQ+8Y65Of/j6ADlRYdED5aVJO0CkPNYIt6zv/T5FUoRfrVD5XhQGqqE4lsWr4mf1gQe2I+fkcrvvVNo0fn6b0fhQ/7EN/dzEC5LzKwzA8/1Hk2sMzPZ32Ya/JB15EW/dtr7v1ARK8OMWb66zjcltUelEh5CJ0gfHwAhqcOhmr6/4cmkkJmXpoG8XwIsPmheKMtqKMOVj/I+rb03oX1YQsDEOYVmdCiH+p8GPsCMdbMy5rM4z2d8m9vYdzzw8+3mehbtwmbqklq3t8pwtfZ6zsLQ7n+ZD88hgLhOs3YzAd4/FCR3MI4MvNltOhbP0/vW4gftkAAYX4jk/+kY17WpJPItLP+7a0HQMy7n28rom8zaewDqT2afM8Cgccm+2G+BNjM45g+EvaiD+tgHn3rO/WOhfhhCwQQPkxk8p90zMuatIBMO5O3ZX7DRKf1x03G9WMnAvNN7TG/rp+HeakjcAvTZvNfw1R9WOu70D/swwaEhYlM2sfceV1oxLLu3Z0ZUx3ym4exdC5a70OAx472w0dxrRYGzC6g751v6/uhVwhakC2E8AmUNnNfYFvksnarmd3d7NzCGu9/YwshLIN8qfcxs+0+Cu/uaEwhhN1RYYDNaVIp5uPUWtkPH8W1ard8+49C5HFrBghtIGm3eWn/qcxAez98/Nt/LCJvt3b7MFsb+bXbR6m1EXm7tVu7tdvHvHXp+JJ2a7d2a7d2+yi3NiJvt3Zrt3b7mLc2Im+3//oWQtgxhPD3EMLEEMIPFvZ42q3dOtvaOvJ2+69uIYSuqL7nDqjgxjBgXzMbu1AH1m7t1onW5sjb7b+9bYrqbj5rZu8iH/HdFvKY2q3dOtXaiLzd/ttbLxTlWLRp3tdu7faxaW1E3m7t1m7t9jFvbUTebv/tbTqwavT/Kt7Xbu32sWltRN5u/+1tGPDpEMIaIYRFUU6VOxbymNqt3TrVui3sAbRbuy3MZmb/DiEchWpGdgUuN7MxC3lY7dZunWpt98N2a7d2a7ePeWurVtqt3dqt3T7mrY3I263d2q3dPuatjcjbrd3ard0+5q2NyNut3dqt3T7mrY3I263d2q3dPuatjcjbrd3ard0+5q2NyNut3dqt3T7mrY3I263d2q3dPubt/wNnDavppUbrvQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u_neg_df.plot(kind='bar',x=0,y=1)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "u_pos_df.plot(kind='bar',x=0,y=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What's the `max` and `min` HIT for unique turkers" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For neg, the min was: 1 and the max was: 37\n", "For pos, the min was: 1 and the max was: 40\n" ] } ], "source": [ "print('For {}, the min was: {} and the max was: {}'.format('neg', unique_neg[1].min(), unique_neg[1].max())) \n", "print('For {}, the min was: {} and the max was: {}'.format('pos', unique_pos[1].min(), unique_pos[1].max())) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Did a specitic Sentiment take longer for turkers to assess? " ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1, 'Negative')" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "sns.catplot(x=\"Answer.sentiment.label\", \n", " y=\"WorkTimeInSeconds\", \n", " kind=\"bar\", \n", " order=['Negative', 'Neutral', 'Positive'], \n", " data=neg);\n", "plt.title('Negative')" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1, 'Positive')" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.catplot(x=\"Answer.sentiment.label\", \n", " y=\"WorkTimeInSeconds\", \n", " kind=\"bar\", \n", " order=['Negative', 'Neutral', 'Positive'], \n", " data=pos)\n", "plt.title('Positive')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How many turkers had less than 10 second response time?" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [], "source": [ "response_time = neg[neg['WorkTimeInSeconds'] < 10]\n", "response_time_check = neg[neg['WorkTimeInSeconds'] > 10]" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "48" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(response_time)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "312" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(response_time_check)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Checking for potential bots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Did anyone have a consistent average low response time?" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "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", "
WorkTimeInSecondsHITId
WorkerId
A13CLN8L5HFT467.23076913.0
A18WFPSLFV4FKY47.0000002.0
A1IQV3QUWRA8G122.0000001.0
A1N1ULK71RHVMM10.0000003.0
A1S2MN0E9BHPVA173.44444427.0
\n", "
" ], "text/plain": [ " WorkTimeInSeconds HITId\n", "WorkerId \n", "A13CLN8L5HFT46 7.230769 13.0\n", "A18WFPSLFV4FKY 47.000000 2.0\n", "A1IQV3QUWRA8G1 22.000000 1.0\n", "A1N1ULK71RHVMM 10.000000 3.0\n", "A1S2MN0E9BHPVA 173.444444 27.0" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "count = pos.groupby(['WorkerId'])['HITId'].count()\n", "work_time = pos.groupby(['WorkerId'])['WorkTimeInSeconds'].mean()\n", "new_df = pd.DataFrame([work_time, count]).T\n", "new_df[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Did anyone have a consistent average high response time?" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "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", "
WorkTimeInSecondsHITIdWorkTimeInMin
WorkerId
A13CLN8L5HFT467.23076913.00.120513
A18WFPSLFV4FKY47.0000002.00.783333
A1IQV3QUWRA8G122.0000001.00.366667
A1N1ULK71RHVMM10.0000003.00.166667
A1S2MN0E9BHPVA173.44444427.02.890741
\n", "
" ], "text/plain": [ " WorkTimeInSeconds HITId WorkTimeInMin\n", "WorkerId \n", "A13CLN8L5HFT46 7.230769 13.0 0.120513\n", "A18WFPSLFV4FKY 47.000000 2.0 0.783333\n", "A1IQV3QUWRA8G1 22.000000 1.0 0.366667\n", "A1N1ULK71RHVMM 10.000000 3.0 0.166667\n", "A1S2MN0E9BHPVA 173.444444 27.0 2.890741" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_df['WorkTimeInMin'] = new_df['WorkTimeInSeconds']/60\n", "new_df[:5]" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "WorkerId Answer.sentiment.label\n", "A13CLN8L5HFT46 Neutral 2\n", " Positive 11\n", "A18WFPSLFV4FKY Positive 2\n", "A1IQV3QUWRA8G1 Positive 1\n", "A1N1ULK71RHVMM Negative 1\n", " ..\n", "AMC42JMQA8A5U Positive 1\n", "AO2WNSGOXAX52 Neutral 3\n", " Positive 1\n", "AOMFEAWQHU3D8 Neutral 1\n", " Positive 6\n", "Name: Answer.sentiment.label, Length: 74, dtype: int64" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "count = pos.groupby(['WorkerId', 'Answer.sentiment.label'])['Answer.sentiment.label'].count()\n", "# count = pos.groupby(['WorkerId'])['Answer.sentiment.label'].count()\n", "count" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Did anyone answer ONLY pos/neg/neutral?" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "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", "
NeutralPositiveNegativeTotal
WorkerId
A13CLN8L5HFT46211013
A18WFPSLFV4FKY0202
A1IQV3QUWRA8G10101
A1N1ULK71RHVMM0213
A1S2MN0E9BHPVA221427
\n", "
" ], "text/plain": [ " Neutral Positive Negative Total\n", "WorkerId \n", "A13CLN8L5HFT46 2 11 0 13\n", "A18WFPSLFV4FKY 0 2 0 2\n", "A1IQV3QUWRA8G1 0 1 0 1\n", "A1N1ULK71RHVMM 0 2 1 3\n", "A1S2MN0E9BHPVA 2 21 4 27" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pnn = pd.DataFrame()\n", "pnn['Neutral'] = pos.groupby('WorkerId')['Answer.sentiment.label'].apply(lambda x: (x=='Neutral').sum())\n", "pnn['Positive'] = pos.groupby('WorkerId')['Answer.sentiment.label'].apply(lambda x: (x=='Positive').sum())\n", "pnn['Negative'] = pos.groupby('WorkerId')['Answer.sentiment.label'].apply(lambda x: (x=='Negative').sum())\n", "pnn['Total'] = pos.groupby('WorkerId')['Answer.sentiment.label'].apply(lambda x: x.count())\n", "pnn[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### This is getting a little confusing, let's just look at our top performers" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "top = pnn.sort_values(by=['Total'], ascending=False)" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "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", "
NeutralPositiveNegativeTotal
WorkerId
A681XM15AN28F1320740
A1Y66T7FKJ8PJA523735
A33ENZVC1XB4BA034034
A1S2MN0E9BHPVA221427
A37L5E8MHHQGZM613322
AE03LUY7RH400410721
A2G44A4ZPWRPXU412218
A1YK1IKACUJMV4015015
A3AW887GI0NLKF310215
A3HAEQW13YPT6A014014
\n", "
" ], "text/plain": [ " Neutral Positive Negative Total\n", "WorkerId \n", "A681XM15AN28F 13 20 7 40\n", "A1Y66T7FKJ8PJA 5 23 7 35\n", "A33ENZVC1XB4BA 0 34 0 34\n", "A1S2MN0E9BHPVA 2 21 4 27\n", "A37L5E8MHHQGZM 6 13 3 22\n", "AE03LUY7RH400 4 10 7 21\n", "A2G44A4ZPWRPXU 4 12 2 18\n", "A1YK1IKACUJMV4 0 15 0 15\n", "A3AW887GI0NLKF 3 10 2 15\n", "A3HAEQW13YPT6A 0 14 0 14" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Interesting!! Looking from here, we have three workers who ONLY chose positive. \n", "\n", "Let's look at their response time to see if we can determine if they are a bot!!" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [], "source": [ "top['Avg_WorkTimeInSeconds'] = pos.groupby('WorkerId')['WorkTimeInSeconds'].apply(lambda x: x.mean())\n", "top['Avg_WorkTimeInMin'] = pos.groupby('WorkerId')['WorkTimeInSeconds'].apply(lambda x: x.mean()/60)\n", "top['Min_WorkTimeInMin'] = pos.groupby('WorkerId')['WorkTimeInSeconds'].apply(lambda x: x.min()/60)\n", "top['Max_WorkTimeInMin'] = pos.groupby('WorkerId')['WorkTimeInSeconds'].apply(lambda x: x.max()/60)" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "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", "
NeutralPositiveNegativeTotalAvg_WorkTimeInSecondsAvg_WorkTimeInMinMin_WorkTimeInMinMax_WorkTimeInMin
WorkerId
A681XM15AN28F132074013.5750000.2262500.1000000.833333
A1Y66T7FKJ8PJA523735695.85714311.5976190.21666722.000000
A33ENZVC1XB4BA034034366.6470596.1107840.6166679.916667
A1S2MN0E9BHPVA221427173.4444442.8907410.4000004.983333
A37L5E8MHHQGZM613322346.2727275.7712122.1500008.283333
AE03LUY7RH400410721102.2380951.7039680.1000003.433333
A2G44A4ZPWRPXU412218221.2777783.6879630.3833337.383333
A1YK1IKACUJMV4015015593.6000009.8933331.71666711.000000
A3AW887GI0NLKF310215269.4000004.4900001.6166677.216667
A3HAEQW13YPT6A014014442.9285717.3821430.86666711.100000
\n", "
" ], "text/plain": [ " Neutral Positive Negative Total Avg_WorkTimeInSeconds \\\n", "WorkerId \n", "A681XM15AN28F 13 20 7 40 13.575000 \n", "A1Y66T7FKJ8PJA 5 23 7 35 695.857143 \n", "A33ENZVC1XB4BA 0 34 0 34 366.647059 \n", "A1S2MN0E9BHPVA 2 21 4 27 173.444444 \n", "A37L5E8MHHQGZM 6 13 3 22 346.272727 \n", "AE03LUY7RH400 4 10 7 21 102.238095 \n", "A2G44A4ZPWRPXU 4 12 2 18 221.277778 \n", "A1YK1IKACUJMV4 0 15 0 15 593.600000 \n", "A3AW887GI0NLKF 3 10 2 15 269.400000 \n", "A3HAEQW13YPT6A 0 14 0 14 442.928571 \n", "\n", " Avg_WorkTimeInMin Min_WorkTimeInMin Max_WorkTimeInMin \n", "WorkerId \n", "A681XM15AN28F 0.226250 0.100000 0.833333 \n", "A1Y66T7FKJ8PJA 11.597619 0.216667 22.000000 \n", "A33ENZVC1XB4BA 6.110784 0.616667 9.916667 \n", "A1S2MN0E9BHPVA 2.890741 0.400000 4.983333 \n", "A37L5E8MHHQGZM 5.771212 2.150000 8.283333 \n", "AE03LUY7RH400 1.703968 0.100000 3.433333 \n", "A2G44A4ZPWRPXU 3.687963 0.383333 7.383333 \n", "A1YK1IKACUJMV4 9.893333 1.716667 11.000000 \n", "A3AW887GI0NLKF 4.490000 1.616667 7.216667 \n", "A3HAEQW13YPT6A 7.382143 0.866667 11.100000 " ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Even more interesting! These two don't appear to be bots, based on our current metric which is time variability.\n", "\n", "HOWEVER, worker `A681XM15AN28F` appears to only work for an average of 13 seconds per review which doesn't seem like enough time to read and judge a review..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PART 2: Second submission to AMT\n", "\n", "TOO MANY REVIEWERS!\n", "\n", "Here is when we realized that doing a kappa score with over 30 individual reviewers would be tricky, so we rusubmitted to AMT and required the turkers to be 'Master' in the hopes that this additional barrier-to-entry would help reduce the amount of turkers working on the project" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "293" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v2 = pd.read_csv('HW5_amt_v2.csv')\n", "v2[:5]\n", "len(v2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This time, I didn't separate the df into pos and neg before submitting to AMT, so we have to reimport the labels." ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [], "source": [ "labels = pd.read_csv('all_JK_extremes_labeled.csv')" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "98" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(labels)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oops! That's right, we replicated each review * 3 so three separate people could look at each review" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "labels2 = labels.append([labels] * 2, ignore_index=True)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "294" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(labels2)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "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", "
0PoN
76#LetRottenTomatoesRotSquad\\nI am a simple guy...P
174#LetRottenTomatoesRotSquad\\nI am a simple guy...P
272#LetRottenTomatoesRotSquad\\nI am a simple guy...P
116A 'Triumph of the Will' for Nihilists\\n'Joker...N
18A 'Triumph of the Will' for Nihilists\\n'Joker...N
.........
227lose of both time and money\\nThis was one of ...N
31lose of both time and money\\nThis was one of ...N
207poor plot\\nPoor plot. i find no reason for jo...N
11poor plot\\nPoor plot. i find no reason for jo...N
109poor plot\\nPoor plot. i find no reason for jo...N
\n", "

294 rows × 2 columns

\n", "
" ], "text/plain": [ " 0 PoN\n", "76 #LetRottenTomatoesRotSquad\\nI am a simple guy... P\n", "174 #LetRottenTomatoesRotSquad\\nI am a simple guy... P\n", "272 #LetRottenTomatoesRotSquad\\nI am a simple guy... P\n", "116 A 'Triumph of the Will' for Nihilists\\n'Joker... N\n", "18 A 'Triumph of the Will' for Nihilists\\n'Joker... N\n", ".. ... ..\n", "227 lose of both time and money\\nThis was one of ... N\n", "31 lose of both time and money\\nThis was one of ... N\n", "207 poor plot\\nPoor plot. i find no reason for jo... N\n", "11 poor plot\\nPoor plot. i find no reason for jo... N\n", "109 poor plot\\nPoor plot. i find no reason for jo... N\n", "\n", "[294 rows x 2 columns]" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labels2.sort_values(by='0')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Shoot! I realized I had to delete some emojis for the csv to be accepted by AMT, so the reviews themselves won't actually be matching... solution: Create two 'for-matching' columns made up of the first 5 words of each review" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [], "source": [ "v2['for_matching'] = v2.apply(lambda x: x['Input.text'].split()[:5], axis=1)" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "labels2['for_matching'] = labels2.apply(lambda x: x['0'].split()[:5], axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Annnnnd why did I do that when I could just sort the df and apply the PoN" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "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", "
0PoNfor_matching
76#LetRottenTomatoesRotSquad\\nI am a simple guy...P[#LetRottenTomatoesRotSquad, I, am, a, simple]
174#LetRottenTomatoesRotSquad\\nI am a simple guy...P[#LetRottenTomatoesRotSquad, I, am, a, simple]
272#LetRottenTomatoesRotSquad\\nI am a simple guy...P[#LetRottenTomatoesRotSquad, I, am, a, simple]
116A 'Triumph of the Will' for Nihilists\\n'Joker...N[A, 'Triumph, of, the, Will']
18A 'Triumph of the Will' for Nihilists\\n'Joker...N[A, 'Triumph, of, the, Will']
214A 'Triumph of the Will' for Nihilists\\n'Joker...N[A, 'Triumph, of, the, Will']
\n", "
" ], "text/plain": [ " 0 PoN \\\n", "76 #LetRottenTomatoesRotSquad\\nI am a simple guy... P \n", "174 #LetRottenTomatoesRotSquad\\nI am a simple guy... P \n", "272 #LetRottenTomatoesRotSquad\\nI am a simple guy... P \n", "116 A 'Triumph of the Will' for Nihilists\\n'Joker... N \n", "18 A 'Triumph of the Will' for Nihilists\\n'Joker... N \n", "214 A 'Triumph of the Will' for Nihilists\\n'Joker... N \n", "\n", " for_matching \n", "76 [#LetRottenTomatoesRotSquad, I, am, a, simple] \n", "174 [#LetRottenTomatoesRotSquad, I, am, a, simple] \n", "272 [#LetRottenTomatoesRotSquad, I, am, a, simple] \n", "116 [A, 'Triumph, of, the, Will'] \n", "18 [A, 'Triumph, of, the, Will'] \n", "214 [A, 'Triumph, of, the, Will'] " ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_labels = labels2.sort_values(by='0')\n", "sorted_labels[:6]" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "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", "
Input.textAnswer.sentiment.labelApproveRejectfor_matching
229#LetRottenTomatoesRotSquad\\nI am a simple guy...PositiveNaNNaN[#LetRottenTomatoesRotSquad, I, am, a, simple]
228#LetRottenTomatoesRotSquad\\nI am a simple guy...PositiveNaNNaN[#LetRottenTomatoesRotSquad, I, am, a, simple]
227#LetRottenTomatoesRotSquad\\nI am a simple guy...PositiveNaNNaN[#LetRottenTomatoesRotSquad, I, am, a, simple]
53A 'Triumph of the Will' for Nihilists\\n'Joker...NeutralNaNNaN[A, 'Triumph, of, the, Will']
55A 'Triumph of the Will' for Nihilists\\n'Joker...NegativeNaNNaN[A, 'Triumph, of, the, Will']
54A 'Triumph of the Will' for Nihilists\\n'Joker...NegativeNaNNaN[A, 'Triumph, of, the, Will']
\n", "
" ], "text/plain": [ " Input.text Answer.sentiment.label \\\n", "229 #LetRottenTomatoesRotSquad\\nI am a simple guy... Positive \n", "228 #LetRottenTomatoesRotSquad\\nI am a simple guy... Positive \n", "227 #LetRottenTomatoesRotSquad\\nI am a simple guy... Positive \n", "53 A 'Triumph of the Will' for Nihilists\\n'Joker... Neutral \n", "55 A 'Triumph of the Will' for Nihilists\\n'Joker... Negative \n", "54 A 'Triumph of the Will' for Nihilists\\n'Joker... Negative \n", "\n", " Approve Reject for_matching \n", "229 NaN NaN [#LetRottenTomatoesRotSquad, I, am, a, simple] \n", "228 NaN NaN [#LetRottenTomatoesRotSquad, I, am, a, simple] \n", "227 NaN NaN [#LetRottenTomatoesRotSquad, I, am, a, simple] \n", "53 NaN NaN [A, 'Triumph, of, the, Will'] \n", "55 NaN NaN [A, 'Triumph, of, the, Will'] \n", "54 NaN NaN [A, 'Triumph, of, the, Will'] " ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_v2 = v2.sort_values(by='Input.text')\n", "sorted_v2[sorted_v2.columns[-5:]][:6]" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [], "source": [ "all_df = sorted_v2.copy()\n", "# all_df['PoN'] = sorted_labels['PoN'].tolist()\n", "# THIS DIDN'T WORK BECAUSE I DIDN'T WAIT UNTIL ALL WERE DONE FROM AMT. RESEARCHER ERROR BUT OMG I HATE MYSELF" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "293" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(all_df)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "97.66666666666667" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "293/3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirming that YEP. 293 isn't divisible by 3, meaning I didn't wait until the last turker finished. omg." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Reuploading now -- WITH BETTER CODE AND BETTER VARIABLE NAMES!" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "294\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", "
Last7DaysApprovalRateInput.textAnswer.sentiment.labelApproveReject
00% (0/0)Everyone praised an overrated movie.\\nOverrat...NegativeNaNNaN
10% (0/0)Everyone praised an overrated movie.\\nOverrat...NegativeNaNNaN
20% (0/0)Everyone praised an overrated movie.\\nOverrat...NegativeNaNNaN
30% (0/0)What idiotic FIlm\\nI can say that Phoenix is ...NegativeNaNNaN
40% (0/0)What idiotic FIlm\\nI can say that Phoenix is ...NegativeNaNNaN
\n", "
" ], "text/plain": [ " Last7DaysApprovalRate Input.text \\\n", "0 0% (0/0) Everyone praised an overrated movie.\\nOverrat... \n", "1 0% (0/0) Everyone praised an overrated movie.\\nOverrat... \n", "2 0% (0/0) Everyone praised an overrated movie.\\nOverrat... \n", "3 0% (0/0) What idiotic FIlm\\nI can say that Phoenix is ... \n", "4 0% (0/0) What idiotic FIlm\\nI can say that Phoenix is ... \n", "\n", " Answer.sentiment.label Approve Reject \n", "0 Negative NaN NaN \n", "1 Negative NaN NaN \n", "2 Negative NaN NaN \n", "3 Negative NaN NaN \n", "4 Negative NaN NaN " ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turker = pd.read_csv('HW5_amt_294.csv')\n", "print(len(turker))\n", "turker[turker.columns[-5:]][:5]" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "294\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", "
0PoN
0Everyone praised an overrated movie.\\nOverrat...N
1What idiotic FIlm\\nI can say that Phoenix is ...N
2Terrible\\nThe only thing good about this movi...N
3Watch Taxi Driver instead\\nThis is a poor att...N
4I learned one thing.\\nIt borrows a lot of ele...N
\n", "
" ], "text/plain": [ " 0 PoN\n", "0 Everyone praised an overrated movie.\\nOverrat... N\n", "1 What idiotic FIlm\\nI can say that Phoenix is ... N\n", "2 Terrible\\nThe only thing good about this movi... N\n", "3 Watch Taxi Driver instead\\nThis is a poor att... N\n", "4 I learned one thing.\\nIt borrows a lot of ele... N" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Getting labels...\n", "labels = pd.read_csv('all_JK_extremes_labeled.csv')\n", "# X3\n", "labels = labels.append([labels] * 2, ignore_index=True)\n", "print(len(labels))\n", "labels[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### NOW, TO SORT!" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [], "source": [ "sorted_labels = labels.sort_values(by=['0'])\n", "sorted_turker = turker.sort_values(by=['Input.text'])" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "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", "
0PoN
76#LetRottenTomatoesRotSquad\\nI am a simple guy...P
174#LetRottenTomatoesRotSquad\\nI am a simple guy...P
272#LetRottenTomatoesRotSquad\\nI am a simple guy...P
116A 'Triumph of the Will' for Nihilists\\n'Joker...N
18A 'Triumph of the Will' for Nihilists\\n'Joker...N
\n", "
" ], "text/plain": [ " 0 PoN\n", "76 #LetRottenTomatoesRotSquad\\nI am a simple guy... P\n", "174 #LetRottenTomatoesRotSquad\\nI am a simple guy... P\n", "272 #LetRottenTomatoesRotSquad\\nI am a simple guy... P\n", "116 A 'Triumph of the Will' for Nihilists\\n'Joker... N\n", "18 A 'Triumph of the Will' for Nihilists\\n'Joker... N" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_labels[:5]" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "228 #LetRottenTomatoesRotSquad\\nI am a simple guy...\n", "229 #LetRottenTomatoesRotSquad\\nI am a simple guy...\n", "230 #LetRottenTomatoesRotSquad\\nI am a simple guy...\n", "56 A 'Triumph of the Will' for Nihilists\\n'Joker...\n", "55 A 'Triumph of the Will' for Nihilists\\n'Joker...\n", "Name: Input.text, dtype: object" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_turker['Input.text'][:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OMG HOORAY HOORAY HOORAY!!\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NOTE: FUN FACT!! I can type here and then hit the `esc` key to turn this cell into markdown!!" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "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", "
Input.textAnswer.sentiment.labelApproveRejectPoN
228#LetRottenTomatoesRotSquad\\nI am a simple guy...PositiveNaNNaNP
229#LetRottenTomatoesRotSquad\\nI am a simple guy...PositiveNaNNaNP
230#LetRottenTomatoesRotSquad\\nI am a simple guy...PositiveNaNNaNP
56A 'Triumph of the Will' for Nihilists\\n'Joker...NegativeNaNNaNN
55A 'Triumph of the Will' for Nihilists\\n'Joker...NegativeNaNNaNN
\n", "
" ], "text/plain": [ " Input.text Answer.sentiment.label \\\n", "228 #LetRottenTomatoesRotSquad\\nI am a simple guy... Positive \n", "229 #LetRottenTomatoesRotSquad\\nI am a simple guy... Positive \n", "230 #LetRottenTomatoesRotSquad\\nI am a simple guy... Positive \n", "56 A 'Triumph of the Will' for Nihilists\\n'Joker... Negative \n", "55 A 'Triumph of the Will' for Nihilists\\n'Joker... Negative \n", "\n", " Approve Reject PoN \n", "228 NaN NaN P \n", "229 NaN NaN P \n", "230 NaN NaN P \n", "56 NaN NaN N \n", "55 NaN NaN N " ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# YUCK THIS IS SO AGGRIVATING!! This line below doens't work because it still uses indexes.\n", "# So the P and N didn't match up \n", "# sorted_turker['PoN'] = sorted_labels['PoN']\n", "sorted_turker['PoN'] = sorted_labels['PoN'].tolist()\n", "sorted_turker[sorted_turker.columns[-5:]][:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PART 3: ANALYZE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, let's clean ALL the things" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [], "source": [ "all_df = sorted_turker[['Input.text', 'WorkerId', 'Answer.sentiment.label', 'PoN']]" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "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", "
Input.textWorkerIdAnswer.sentiment.labelPoN
228#LetRottenTomatoesRotSquad\\nI am a simple guy...A681XM15AN28FPositiveP
229#LetRottenTomatoesRotSquad\\nI am a simple guy...A2XFO0X6RCS98MPositiveP
230#LetRottenTomatoesRotSquad\\nI am a simple guy...AURYD2FH3FUOQPositiveP
56A 'Triumph of the Will' for Nihilists\\n'Joker...A1T79J0XQXDDGCNegativeN
55A 'Triumph of the Will' for Nihilists\\n'Joker...A2XFO0X6RCS98MNegativeN
\n", "
" ], "text/plain": [ " Input.text WorkerId \\\n", "228 #LetRottenTomatoesRotSquad\\nI am a simple guy... A681XM15AN28F \n", "229 #LetRottenTomatoesRotSquad\\nI am a simple guy... A2XFO0X6RCS98M \n", "230 #LetRottenTomatoesRotSquad\\nI am a simple guy... AURYD2FH3FUOQ \n", "56 A 'Triumph of the Will' for Nihilists\\n'Joker... A1T79J0XQXDDGC \n", "55 A 'Triumph of the Will' for Nihilists\\n'Joker... A2XFO0X6RCS98M \n", "\n", " Answer.sentiment.label PoN \n", "228 Positive P \n", "229 Positive P \n", "230 Positive P \n", "56 Negative N \n", "55 Negative N " ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_df[:5]" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [], "source": [ "all_df_all = all_df.copy()\n", "all_df_all['APoN'] = all_df_all.apply(lambda x: x['Answer.sentiment.label'][0], axis=1)" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "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", "
Input.textWorkerIdAnswer.sentiment.labelPoNAPoN
228#LetRottenTomatoesRotSquad\\nI am a simple guy...A681XM15AN28FPositivePP
229#LetRottenTomatoesRotSquad\\nI am a simple guy...A2XFO0X6RCS98MPositivePP
230#LetRottenTomatoesRotSquad\\nI am a simple guy...AURYD2FH3FUOQPositivePP
56A 'Triumph of the Will' for Nihilists\\n'Joker...A1T79J0XQXDDGCNegativeNN
55A 'Triumph of the Will' for Nihilists\\n'Joker...A2XFO0X6RCS98MNegativeNN
..................
265Venice 76 review\\nI have just watched the Joke...ARLGZWN6W91WDPositiveNP
266Venice 76 review\\nI have just watched the Joke...A38DC3BG1ZCVZ2PositiveNP
93lose of both time and money\\nThis was one of t...A2XFO0X6RCS98MNegativeNN
94lose of both time and money\\nThis was one of t...A3EZ0H07TSDAPWNegativeNN
95lose of both time and money\\nThis was one of t...ASB8T0H7L99RFNegativeNN
\n", "

294 rows × 5 columns

\n", "
" ], "text/plain": [ " Input.text WorkerId \\\n", "228 #LetRottenTomatoesRotSquad\\nI am a simple guy... A681XM15AN28F \n", "229 #LetRottenTomatoesRotSquad\\nI am a simple guy... A2XFO0X6RCS98M \n", "230 #LetRottenTomatoesRotSquad\\nI am a simple guy... AURYD2FH3FUOQ \n", "56 A 'Triumph of the Will' for Nihilists\\n'Joker... A1T79J0XQXDDGC \n", "55 A 'Triumph of the Will' for Nihilists\\n'Joker... A2XFO0X6RCS98M \n", ".. ... ... \n", "265 Venice 76 review\\nI have just watched the Joke... ARLGZWN6W91WD \n", "266 Venice 76 review\\nI have just watched the Joke... A38DC3BG1ZCVZ2 \n", "93 lose of both time and money\\nThis was one of t... A2XFO0X6RCS98M \n", "94 lose of both time and money\\nThis was one of t... A3EZ0H07TSDAPW \n", "95 lose of both time and money\\nThis was one of t... ASB8T0H7L99RF \n", "\n", " Answer.sentiment.label PoN APoN \n", "228 Positive P P \n", "229 Positive P P \n", "230 Positive P P \n", "56 Negative N N \n", "55 Negative N N \n", ".. ... .. ... \n", "265 Positive N P \n", "266 Positive N P \n", "93 Negative N N \n", "94 Negative N N \n", "95 Negative N N \n", "\n", "[294 rows x 5 columns]" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_df_all" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [], "source": [ "all_df_all['agree'] = all_df_all.apply(lambda x: x['PoN'] == x['APoN'], axis=1)" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "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", "
Input.textWorkerIdAnswer.sentiment.labelPoNAPoNagree
38This is extremely bad...\\nThis whole film make...A3EZ0H07TSDAPWNegativeNNTrue
216Took my 65 year old mother to see it.\\nI saw t...A3EZ0H07TSDAPWPositiveNPFalse
217Took my 65 year old mother to see it.\\nI saw t...A2XFO0X6RCS98MPositiveNPFalse
218Took my 65 year old mother to see it.\\nI saw t...AKSJ3C5O3V9RBPositiveNPFalse
264Venice 76 review\\nI have just watched the Joke...A3EZ0H07TSDAPWPositiveNPFalse
265Venice 76 review\\nI have just watched the Joke...ARLGZWN6W91WDPositiveNPFalse
266Venice 76 review\\nI have just watched the Joke...A38DC3BG1ZCVZ2PositiveNPFalse
93lose of both time and money\\nThis was one of t...A2XFO0X6RCS98MNegativeNNTrue
94lose of both time and money\\nThis was one of t...A3EZ0H07TSDAPWNegativeNNTrue
95lose of both time and money\\nThis was one of t...ASB8T0H7L99RFNegativeNNTrue
\n", "
" ], "text/plain": [ " Input.text WorkerId \\\n", "38 This is extremely bad...\\nThis whole film make... A3EZ0H07TSDAPW \n", "216 Took my 65 year old mother to see it.\\nI saw t... A3EZ0H07TSDAPW \n", "217 Took my 65 year old mother to see it.\\nI saw t... A2XFO0X6RCS98M \n", "218 Took my 65 year old mother to see it.\\nI saw t... AKSJ3C5O3V9RB \n", "264 Venice 76 review\\nI have just watched the Joke... A3EZ0H07TSDAPW \n", "265 Venice 76 review\\nI have just watched the Joke... ARLGZWN6W91WD \n", "266 Venice 76 review\\nI have just watched the Joke... A38DC3BG1ZCVZ2 \n", "93 lose of both time and money\\nThis was one of t... A2XFO0X6RCS98M \n", "94 lose of both time and money\\nThis was one of t... A3EZ0H07TSDAPW \n", "95 lose of both time and money\\nThis was one of t... ASB8T0H7L99RF \n", "\n", " Answer.sentiment.label PoN APoN agree \n", "38 Negative N N True \n", "216 Positive N P False \n", "217 Positive N P False \n", "218 Positive N P False \n", "264 Positive N P False \n", "265 Positive N P False \n", "266 Positive N P False \n", "93 Negative N N True \n", "94 Negative N N True \n", "95 Negative N N True " ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_df_all[-10:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lets see how many agree!" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "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", "
Input.textPoNagree
0#LetRottenTomatoesRotSquad\\nI am a simple guy...P1.000000
1A 'Triumph of the Will' for Nihilists\\n'Joker...N1.000000
2A Breath of Fresh Cinema\\nBursting with emoti...P1.000000
3A MASTERPIECE\\nJoaquin Phoenix's performance ...N0.333333
4A brilliant movie\\nThis movie is slow but nev...P1.000000
\n", "
" ], "text/plain": [ " Input.text PoN agree\n", "0 #LetRottenTomatoesRotSquad\\nI am a simple guy... P 1.000000\n", "1 A 'Triumph of the Will' for Nihilists\\n'Joker... N 1.000000\n", "2 A Breath of Fresh Cinema\\nBursting with emoti... P 1.000000\n", "3 A MASTERPIECE\\nJoaquin Phoenix's performance ... N 0.333333\n", "4 A brilliant movie\\nThis movie is slow but nev... P 1.000000" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "agree_df = pd.DataFrame(all_df_all.groupby(['Input.text','PoN'])['agree'].mean())\n", "agree_df = agree_df.reset_index()\n", "agree_df[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OK so this actually gave us something we want...\n", "BUT PLEASE TELL ME THE BETTER WAY!!" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "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", "
Input.textPoNagreeagree_factor
0#LetRottenTomatoesRotSquad\\nI am a simple guy...P1.000000agree
1A 'Triumph of the Will' for Nihilists\\n'Joker...N1.000000agree
2A Breath of Fresh Cinema\\nBursting with emoti...P1.000000agree
3A MASTERPIECE\\nJoaquin Phoenix's performance ...N0.333333disparity
4A brilliant movie\\nThis movie is slow but nev...P1.000000agree
...............
93The mirror of society\\nActing 10/10\\nActors 10...N0.000000agree_wrong
94This is extremely bad...\\nThis whole film make...N1.000000agree
95Took my 65 year old mother to see it.\\nI saw t...N0.000000agree_wrong
96Venice 76 review\\nI have just watched the Joke...N0.000000agree_wrong
97lose of both time and money\\nThis was one of t...N1.000000agree
\n", "

98 rows × 4 columns

\n", "
" ], "text/plain": [ " Input.text PoN agree \\\n", "0 #LetRottenTomatoesRotSquad\\nI am a simple guy... P 1.000000 \n", "1 A 'Triumph of the Will' for Nihilists\\n'Joker... N 1.000000 \n", "2 A Breath of Fresh Cinema\\nBursting with emoti... P 1.000000 \n", "3 A MASTERPIECE\\nJoaquin Phoenix's performance ... N 0.333333 \n", "4 A brilliant movie\\nThis movie is slow but nev... P 1.000000 \n", ".. ... .. ... \n", "93 The mirror of society\\nActing 10/10\\nActors 10... N 0.000000 \n", "94 This is extremely bad...\\nThis whole film make... N 1.000000 \n", "95 Took my 65 year old mother to see it.\\nI saw t... N 0.000000 \n", "96 Venice 76 review\\nI have just watched the Joke... N 0.000000 \n", "97 lose of both time and money\\nThis was one of t... N 1.000000 \n", "\n", " agree_factor \n", "0 agree \n", "1 agree \n", "2 agree \n", "3 disparity \n", "4 agree \n", ".. ... \n", "93 agree_wrong \n", "94 agree \n", "95 agree_wrong \n", "96 agree_wrong \n", "97 agree \n", "\n", "[98 rows x 4 columns]" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def return_agreement(num):\n", " if num == 0:\n", " return 'agree_wrong'\n", " if num == 1:\n", " return 'agree'\n", " if (num/1) !=0:\n", " return 'disparity'\n", "\n", "agree_df['agree_factor'] = agree_df.apply(lambda x: return_agreement(x['agree']), axis=1)\n", "agree_df" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "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", "
agree_factorInput.textPoNagree
0agree333333
1agree_wrong313131
2disparity343434
\n", "
" ], "text/plain": [ " agree_factor Input.text PoN agree\n", "0 agree 33 33 33\n", "1 agree_wrong 31 31 31\n", "2 disparity 34 34 34" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1 = agree_df.groupby(['agree_factor']).count()\n", "df1.reset_index(inplace=True)\n", "df1" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'How many turkers agreed on sentiment?')" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEICAYAAABGaK+TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAXgUlEQVR4nO3debhddX3v8fcHAoKCDBIjkwSFB8FaoOaiFkQEHFAr3KtSqa1R8aa2jtcR7b0OSFtte0W9dSiCEhVFhFJwqIoIKj4VDMogBIUiSJCQA4IMShX83j/W78DmZJ+cneScnCx4v57nPGet328N3733Op/89m8PSVUhSeqfDWa7AEnSmjHAJamnDHBJ6ikDXJJ6ygCXpJ4ywCWppwxwrXNJTkxyzGzXsT5Jck2Sg2e7jumS5N+TLJztOh7oDPApDPvDSvKyJOfNVk2zKUkl2WW269D6I8m7k3x2sK2qDqmqxbNQy/0GB0m2TPLpJL9I8ssk/y9J1nVdM8UA1zqVZMNpPNac6TpWH86rNbI18CNgj/bzPOBFs1rRNDLAp0GS3ZOcm+TWJJcleX5r37m1bdDWP5FkxcB+n0nyhkmOeU2StyS5JMmdSU5IMq89Nb09yTeTbDWw/ReTLE/yqyTfSfL4gb4Tk3wkyVfavucneWzr+0iS/zvh3Gcm+V9DavpOW7w4yR1J/nTYs5HBUXo798eSfDXJncDTJ2y7eZJzknw4nYck+ackP09yY5KPJ9m0bXtAkmVJ3pZkOfCpJNsk+XK7n3+Z5Lvj9/eQ+j+U5LoktyW5MMlTB/o2TbI4yS1JliZ5a5JlEx6PtyW5BLgzyZwk2yU5LclYkp8led3A9hskOSrJfya5OckpSbYe6P+LJNe2vr8ZVu/Atlu0UeRY2+d/D1xTL0tyXrvPbml1HLKKY70tyfXtOvhJkoOmqjfJ/PaYLmyPy03jNSd5NvAO4E/bNXFxaz83ySsHavxekmPb43R1kj9u7dclWZGB6ZYRr4E3tf1uSPLy1rcIeAnw1lbLl6rq6qo6tqpurarlwE+Beau6v3ulqvxZxQ9wDXDwhLaXAee15Y2Aq+gu4o2BA4Hbgd1a/8+BJ7blnwBXA7sP9O29ivN+n+5i2x5YAfwQ2BvYBPgW8K6B7V8BbA48BPggcNFA34nAzcA+wBzgJODk1rcP8Atgg7a+DfBrYN4kdRWwy7D7Ytg27dy/AvalGzBs0tqOAR4BXAAcM7DvscCZdCOnzYEvAX/f+g4A7gbe327npsDfAx9vj8NGwFOBTFL7n7dzzgHeBCwHNml97wO+DWwF7ABcAiyb8HhcBOzYzrsBcCHwzva4P6Y9ts9q27++PX47tFr/Bfh869sDuAPYv/V9oN2ugyep+9PAGe3+mE8XQkcO3P+/A/4nsCHwV+3xXOk+AHYDrgO2a+vzgceOUO/89ph+ot32PYH/4r7r+N3AZyec61zglQM13g28vNV4DN21/5F2rmfS/c1sthrXwNHt8X4O3fW61cD1dswk9+MLgV8CO852rkxbPs12Aev7T/vDvQO4deDn19wX4E+lC4INBvb5PPDutvwZ4I3Ao+gC/B+AVwE7t2NtsIrzvmRg/TTgYwPrrwX+bZJ9t2x/cFu09ROB4wf6nwNcMbC+FHhGW34N8NVV3B9rEuCfntB/IvBJ4MfAWwbaA9xJC5XW9hTgZ235AOC3tNBtbUfThdsuk9W8ittyC7BnW743fNv6K1k5wF8xsP4k4OcTjvd24FMD9+lBA33b0gXtHLrQP3mg72Htdq0U4HSB91tgj4G2vwTOHbj/rxroe2i7/x815Fi70A0EDgY2mtC3qnrnt2PuMNB/AfDitvxupg7wKwf6ntCON2+g7WZgrxGvgd8Acwb6VwBPHri2VgpwYL/2eO+3Jjmwvv44hTKaw6pqy/Ef4K8H+rYDrquq3w+0XUs3aoZuVHcA3WjrO3QX9tPaz3cn7DfRjQPLvxmyvhl088pJ3tee/t5GFzbQjabHLR9Y/vX4vs1iutEp7fdnVlHTmrhuSNtz6UZzHx9om0sXQBe2p9q3Al9r7ePGququgfV/pHsG9I321PyoyYpI8uY2PfKrduwtuO8+2m5CncNqHmzbCdhuvM52vHdw39PznYDTB/qWAve0/vudq6rupAuwYbahG2leO9A2eH3BwGNbVb9ui4OP73jfVcAb6AJ3RZKTk2w3Qr0rnYeVr6GpTLx2qaph1/Mo18DNVXX3atby18CxVfWAevOBAb72fgHsOGHe9dHA9W3523Sj9APa8nl00wlPa+vT4c+AQ+lGVlvQjZigG82M4rPAoUn2BHYH/m01zn0n3R9cd8LkUUO2GfaVl5+g+8P8apKHtbab6P6QHz/wD+YWVTX4x3m/Y1XV7VX1pqp6DPB84I3j87qD2nz3W4HD6Z5ub0k3tTN+H91AN30wbscpbsd1dKPCLQd+Nq+q5wz0HzKhf5Oqur6d697jJ3ko3dTOMDfRjYR3GmgbvL5WS1V9rqr2a8cruumoqeqd8rBrUsskRrkG1qSWben+Vh9QDPC1dz7dCOCtSTZKcgDwJ8DJAFV1Jd0F+efAt6vqNrrRyAuYvgDfnG5O8ma6MP271dm5qpYBP6AbeZ9WVb9ZxeY30s33jrsYeHySvZJsQje6G9Vr6KaVvpRk0/Zs5BPAsUkeCZBk+yTPmuwASZ6XZJckoQvke4Bhz2o2p5s7HQPmJHkn8PCB/lOAtyfZKsn2rbZVuQC4vb0ouGl7FvQHSf5b6/848LdJdmp1zk1yaOs7FXhekv2SbEw3DTT0b7Gq7mm1/W26F3x3opuS++yw7VclyW5JDkzyEOAuuuty/L5aVb1TuRGYn0lePF4da3INDKnlMUPaX0D32s8DigG+lqrqt3SBfQjd6OGjwEur6oqBzb5N97TvuoH10L0oOR0+Tfe0+nrgcroXo1bXYrq5yammT94NLG5Pbw+vqp/SBdA3gSvpnmGMpLrJyUXAMuCM9g/A2+imRL7fpoO+Sffi22R2bdvcAfwH8NGqOmfIdl+nG/H/lO6+uov7T4kc3er4WTveqXT/KE5W+z10b0nbq+1zE3A83TMggA/RvRD3jSS30z0mT2r7Xga8Gvgc3Wj8lnbuybyW7pnO1XT37+foXkNYXQ+he7H2JrrpkEfSzduvst4RfLH9vjnJdFzTq3sNDDoB2KNdn4PPJE+ie/b1gJI2wa8HuST7043qdiovCpL8Fd2LdE+b7VqkyTgCF0k2onsb2fEP1vBOsm2Sfdv7oXeje5vh6bNdl7QqBviDXJLd6d7OuC3d+8cfrDame+/z7XTvsT+DbjpMWm85hSJJPeUIXJJ6ap1+Kc8222xT8+fPX5enlKTeu/DCC2+qqrkT29dpgM+fP58lS5asy1NKUu8luXZYu1MoktRTBrgk9ZQBLkk9ZYBLUk8Z4JLUUwa4JPWUAS5JPWWAS1JPGeCS1FPr9JOY0+GJb/n0bJeg9cyF//jS2S5BmhWOwCWppwxwSeopA1ySesoAl6SeMsAlqacMcEnqKQNcknrKAJeknhopwJNsmeTUJFckWZrkKUm2TnJWkivb761mulhJ0n1GHYF/CPhaVT0O2BNYChwFnF1VuwJnt3VJ0joyZYAn2QLYHzgBoKp+W1W3AocCi9tmi4HDZqpISdLKRhmB7wyMAZ9K8qMkxyd5GDCvqm5o2ywH5s1UkZKklY0S4HOAPwI+VlV7A3cyYbqkqgqoYTsnWZRkSZIlY2Nja1uvJKkZJcCXAcuq6vy2fipdoN+YZFuA9nvFsJ2r6riqWlBVC+bOnTsdNUuSGCHAq2o5cF2S3VrTQcDlwJnAwta2EDhjRiqUJA016veBvxY4KcnGwNXAy+nC/5QkRwLXAofPTImSpGFGCvCqughYMKTroOktR5I0Kj+JKUk9ZYBLUk8Z4JLUUwa4JPWUAS5JPWWAS1JPGeCS1FMGuCT1lAEuST1lgEtSTxngktRTBrgk9ZQBLkk9ZYBLUk8Z4JLUUwa4JPWUAS5JPWWAS1JPGeCS1FMGuCT1lAEuST1lgEtSTxngktRTBrgk9dScUTZKcg1wO3APcHdVLUiyNfAFYD5wDXB4Vd0yM2VKkiZanRH406tqr6pa0NaPAs6uql2Bs9u6JGkdWZsplEOBxW15MXDY2pcjSRrVqAFewDeSXJhkUWubV1U3tOXlwLxhOyZZlGRJkiVjY2NrWa4kadxIc+DAflV1fZJHAmcluWKws6oqSQ3bsaqOA44DWLBgwdBtJEmrb6QReFVd336vAE4H9gFuTLItQPu9YqaKlCStbMoAT/KwJJuPLwPPBH4MnAksbJstBM6YqSIlSSsbZQplHnB6kvHtP1dVX0vyA+CUJEcC1wKHz1yZkqSJpgzwqroa2HNI+83AQTNRlCRpan4SU5J6ygCXpJ4ywCWppwxwSeopA1ySesoAl6SeMsAlqacMcEnqKQNcknrKAJeknjLAJamnDHBJ6ikDXJJ6ygCXpJ4ywCWppwxwSeopA1ySesoAl6SeMsAlqacMcEnqKQNcknrKAJeknjLAJamnRg7wJBsm+VGSL7f1nZOcn+SqJF9IsvHMlSlJmmh1RuCvB5YOrL8fOLaqdgFuAY6czsIkSas2UoAn2QF4LnB8Ww9wIHBq22QxcNhMFChJGm7UEfgHgbcCv2/rjwBuraq72/oyYPthOyZZlGRJkiVjY2NrVawk6T5TBniS5wErqurCNTlBVR1XVQuqasHcuXPX5BCSpCHmjLDNvsDzkzwH2AR4OPAhYMskc9oofAfg+pkrU5I00ZQj8Kp6e1XtUFXzgRcD36qqlwDnAC9smy0EzpixKiVJK1mb94G/DXhjkqvo5sRPmJ6SJEmjGGUK5V5VdS5wblu+Gthn+kuSJI3CT2JKUk8Z4JLUUwa4JPWUAS5JPWWAS1JPGeCS1FMGuCT1lAEuST1lgEtSTxngktRTBrgk9ZQBLkk9ZYBLUk8Z4JLUU6v1dbKSJvfzo58w2yVoPfTod146Y8d2BC5JPWWAS1JPGeCS1FMGuCT1lAEuST1lgEtSTxngktRTBrgk9ZQBLkk9NWWAJ9kkyQVJLk5yWZL3tPadk5yf5KokX0iy8cyXK0kaN8oI/L+AA6tqT2Av4NlJngy8Hzi2qnYBbgGOnLkyJUkTTRng1bmjrW7Ufgo4EDi1tS8GDpuRCiVJQ400B55kwyQXASuAs4D/BG6tqrvbJsuA7SfZd1GSJUmWjI2NTUfNkiRGDPCquqeq9gJ2APYBHjfqCarquKpaUFUL5s6du4ZlSpImWq13oVTVrcA5wFOALZOMfx3tDsD101ybJGkVRnkXytwkW7blTYFnAEvpgvyFbbOFwBkzVaQkaWWj/IcO2wKLk2xIF/inVNWXk1wOnJzkGOBHwAkzWKckaYIpA7yqLgH2HtJ+Nd18uCRpFvhJTEnqKQNcknrKAJeknjLAJamnDHBJ6ikDXJJ6ygCXpJ4ywCWppwxwSeopA1ySesoAl6SeMsAlqacMcEnqKQNcknrKAJeknjLAJamnDHBJ6ikDXJJ6ygCXpJ4ywCWppwxwSeopA1ySesoAl6SemjLAk+yY5Jwklye5LMnrW/vWSc5KcmX7vdXMlytJGjfKCPxu4E1VtQfwZODVSfYAjgLOrqpdgbPbuiRpHZkywKvqhqr6YVu+HVgKbA8cCixumy0GDpupIiVJK1utOfAk84G9gfOBeVV1Q+taDsybZJ9FSZYkWTI2NrYWpUqSBo0c4Ek2A04D3lBVtw32VVUBNWy/qjquqhZU1YK5c+euVbGSpPuMFOBJNqIL75Oq6l9b841Jtm392wIrZqZESdIwo7wLJcAJwNKq+sBA15nAwra8EDhj+suTJE1mzgjb7Av8BXBpkota2zuA9wGnJDkSuBY4fGZKlCQNM2WAV9V5QCbpPmh6y5EkjcpPYkpSTxngktRTBrgk9ZQBLkk9ZYBLUk8Z4JLUUwa4JPWUAS5JPWWAS1JPGeCS1FMGuCT1lAEuST1lgEtSTxngktRTBrgk9ZQBLkk9ZYBLUk8Z4JLUUwa4JPWUAS5JPWWAS1JPGeCS1FMGuCT11JQBnuSTSVYk+fFA29ZJzkpyZfu91cyWKUmaaJQR+InAsye0HQWcXVW7Ame3dUnSOjRlgFfVd4BfTmg+FFjclhcDh01zXZKkKazpHPi8qrqhLS8H5k22YZJFSZYkWTI2NraGp5MkTbTWL2JWVQG1iv7jqmpBVS2YO3fu2p5OktSsaYDfmGRbgPZ7xfSVJEkaxZoG+JnAwra8EDhjesqRJI1qlLcRfh74D2C3JMuSHAm8D3hGkiuBg9u6JGkdmjPVBlV1xCRdB01zLZKk1eAnMSWppwxwSeopA1ySesoAl6SeMsAlqacMcEnqKQNcknrKAJeknjLAJamnDHBJ6ikDXJJ6ygCXpJ4ywCWppwxwSeopA1ySesoAl6SeMsAlqacMcEnqKQNcknrKAJeknjLAJamnDHBJ6ikDXJJ6ygCXpJ5aqwBP8uwkP0lyVZKjpqsoSdLU1jjAk2wIfAQ4BNgDOCLJHtNVmCRp1dZmBL4PcFVVXV1VvwVOBg6dnrIkSVOZsxb7bg9cN7C+DHjSxI2SLAIWtdU7kvxkLc6p+9sGuGm2i5ht+aeFs12CVua1Oe5dmY6j7DSscW0CfCRVdRxw3Eyf58EoyZKqWjDbdUgTeW2uG2szhXI9sOPA+g6tTZK0DqxNgP8A2DXJzkk2Bl4MnDk9ZUmSprLGUyhVdXeS1wBfBzYEPllVl01bZRqFU1NaX3ltrgOpqtmuQZK0BvwkpiT1lAEuST1lgM+iJIclqSSPm4VzX5Nkm3V9Xs2+JPckuSjJZUkuTvKmJBu0vgVJPjzbNa5KknOT+BZFDPDZdgRwXvs9svY1BtKa+k1V7VVVjweeQfd1GO8CqKolVfW6mTpxkhn/7MmDiQE+S5JsBuwHHEn3FkySbJDko0muSHJWkq8meWHruybJ+5P8EHhRkscm+VqSC5N8d3wUn2RuktOS/KD97NvaH5HkG23UdTwwLR8PU79V1Qq6T0q/Jp0DknwZIMnT2kj9oiQ/SrJ5ks2SnJ3kh0kuTXLv12ck+T/ty+3OS/L5JG9u7ecm+WCSJcDrV3GNPizJJ5Nc0M53aGvfNMnJSZYmOR3YdF3fT+sr/zWcPYcCX6uqnya5OckTgZ2B+XRfDvZIYCnwyYF9bq6qPwJIcjbwqqq6MsmTgI8CBwIfAo6tqvOSPJrubZ67042wzquqo5M8l+4fDomquro9q3vkhK43A6+uqu+1Acddrf2/V9VtbQru+0nOBBYALwD2BDYCfghcOHCsjcc/mZnkcwy/Rv8G+FZVvSLJlsAFSb4J/CXw66raPckftmMLA3w2HUEXttB9EdgRdI/HF6vq98DyJOdM2OcLcO/o/Y+BLyb3DqQf0n4fDOwx0P7wtv3+wP8AqKqvJLll2m+RHmi+B3wgyUnAv1bVsiQbAX+XZH/g93TfiTQP2Bc4o6ruAu5K8qUJx/rCwPJk1+gzgeePj9yBTYBH0127HwaoqkuSXDLdN7SvDPBZkGRrutHyE5IU3QehCjh9il3vbL83AG6tqr2GbLMB8OT2hzR4zrUrWg9YSR4D3AOsoBsJA1BV70vyFeA5wPeSPAt4MjAXeGJV/S7JNXRBO5U7B5Ynu0YDvKCqfjKhffVv1IOEc+Cz44XAZ6pqp6qaX1U7Aj8Dfgm8oM2FzwMOGLZzVd0G/CzJi6C78JPs2bq/Abx2fNsk4yH/HeDPWtshwFbTf7PUN0nmAh8H/rkmfKovyWOr6tKqej/dV2c8DtgCWNHC++nc9y153wP+JMkmbTT9vFWcdrJr9OvAa1uQk2Tv1j547f4B8IdrfIMfYAzw2XEEK4+2TwMeRfe1vJcDn6Wb6/vVJMd4CXBkkouBy7jvu9hfByxIckmSy4FXtfb3APsnuYxuKuXn03Rb1D+bthcmLwO+SReo7xmy3RuS/LhNWfwO+HfgJLrr61LgpcAVAFX1A7rvQrqkbXcpk1+7k12j76WbP7+k1fbe1v4xYLMkS4Gjuf/c+oOaH6VfzyTZrKruSPII4AJg36paPtt1SVMZuHYfSjdqXlRVvuA4g5wDX/98ub0CvzHwXsNbPXJcuv9WcRNgseE98xyBS1JPOQcuST1lgEtSTxngktRTBrgk9ZQBLkk99f8Bt8c0WKEzrwIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.barplot(x=['Agreed', 'Disagreed'],\n", " y= [64,34],\n", " data = df1);\n", "plt.title('How many turkers agreed on sentiment?')" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'How many turkers agreed on sentiment, but were wrong?')" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEXCAYAAACpuuMDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deZwcVbn/8c+XJJCYIAQZMQISBGRTCRoQWTQiKPADAVdQESQYrxcQZBGuqOR6wYuKol7XsEjY5LIIRC6yKSSAQkggQCAgyBrWAQIkIFt8fn+c06Sq6ZnpGaa6J5Pv+/Wa13Sd2p6uOnWe2rpKEYGZmVnNcu0OwMzMBhYnBjMzK3FiMDOzEicGMzMrcWIwM7MSJwYzMytxYhjEJJ0q6Zh2xzGQSLpf0nbtjqO/SPqTpL3bHUdPJE2QNL/dcVhzBkxiaLTBStpH0rXtiqmdJIWkddsdhw0ckiZLOqNYFhE7RsTUNsTS0p0Obw99J+lrkuZJek7StZLW62mcAZMYrH9JGtKP0xraX9NaGuZrBq2rfy2Yz2jgk8AqwBzgZz2OERED4g+4H9iurmwf4NpC94bA1cAzwO3AJ3L52rlsudx9IvBEYbzTgYO7me/hwK3A88DJwGrAn4CFwJXA6MLw5wKPAc8CM4CNC/1OBX4J/F8e9wZgndzvl8CP6+Y9DfhGg5hmAJHjWQR8rn5Z5OECWLcw718Dl+Txtstlx+T+KwJXAT8HBKwAHA88CDwO/AYYkYedAMwHjsjf9XRgVeDivJyfBq6pLe8G8f8MeAh4DpgNbFPoNwKYCiwA5gHfBObXrY8j8vp4CRgKvB04H+gE7gO+Xhh+OeBI4B/AU8A5wCqF/nsBD+R+R9GgnhWGXQk4Lc/nAeDbLKlT+wDX5mW2IMexYzf1+Qjg4VwP7gI+2lO8wNi8TvfO6+VJ4KjcbwfgZeCVXCduyeVXA/sVYrwOOCGvp3uBLXP5Q8ATwN6FGJupA4fm8R4Fvpz7TcpxvJxj+WMT23dtet/K3+t+4AuF/q99j/ptnwbbQ4PpPwC8P3/+Qh5+49w9EbiwF8t/Yl4mM3L5FsBf8zK9BZjQxXf8cnFZAHcD5xa6HwLGFbbd/fMw9+WyLYEbSW3LjcCWdcvnv/L6XQhcDqxa6P8lltTz79BFPQf2BGb3uL5603hX+dfoi9RVjmHAPbliLQ9smxfQ+rn/g4WKcRdpo9iw0G/TbuZ7PSkZrE7aCG4CNgWGA38Bji4Mvy+pkV0B+Ckwp9Dv1LxiNic1aGcCZ+d+mwOPsKShWRV4AViti7hea/Trl0WjYfK8nwW2IlX+4bnsGOAtwExyksjDn0BKTKvk7/NH4L8LG/GrwA/y9xwB/Dep4RiW/7YB1EXsX8zzHEpqWB4Dhud+xwHTSXsxa5ASQH1imAOsmee7HCm5fDev93fmdfvxPPxBef2tkWP9LfD73G8jUkPyodzvJ/l7dZUYTgMuystjLPB3YGJh+b8CfAUYAnwtr8/XLQNgfVIj8PZCg7NOE/GOzev0xPzdNyElx1o9ngycUTevqyknhldJDdSQvO4fJO2UrAB8jLTNjOpFHfheXt87kerr6EJ9O6bRcuxi2dam95Mcy4dJDf369d+jUX2nbnvoYt0dmj9PITX8Xyv0+0Yvlv9pwMi8DlYnbdM7keri9rm7o0EM7yTvoJJ2Zh4g1+3cbwFLtv8ArsjLfkT+v4C0IzOU1IAvAN5SWD7/AN6Vh78aOK6unm9N2kaOJ9XV+vb0raQ29MAe11d/N/B9/SM1CIvygq39vcCSxLANqYFZrjDO74HJ+fPpwCHA20iJ4YfAv1F3NNHFfIt7LucDvy50H0je22gw7sp5Ba9U2FhOKvTfCbiz0D0P2D5/PgC4pJvl0ZfEcFpd/1OBU4C5wOGFcpE2ynUKZR9kyZ7LBNLe4PBC/++RGs0uN85uvssCYJP8+bVGPXfvx+sTw76F7g8AD9ZN7z+A3xWW6UcL/cbkjWIoKZmcXeg3Mn+vRntSQ3K/jQplXwWuLiz/ewr93pSX/9saTGtd0g7GdsCwun7dxTs2T3ONQv+ZwB7582R6Tgx3F/q9J09vtULZU8C4JuvAP4Ghhf5PAFsU6lZfEsPIQtk5wHfqv0ej+k7PiWEiMK2wjPdjyU7ZA8D7erH831nofwRwet28LqNw5FXX7yHgfcAepAQ1E9iAlKyn1X2fbQvdewEz66b1N2CfwvL5dqHfvwOX5s/fJSe3Qt0s1XNSwrgZ+Fkz62ugncPdLSKurHVI2oe0giFl4Ici4l+F4R8gZXRIe6GfIB2uziAtyL2AF4Fr6sar93jh8z8bdI/K8QwBjgU+A3QAtWmuStpbh5S8al6ojZtNJe1NX5H/93yur3cealD2/0gJ9zeFsg5S5ZktqVYmUuNY0xkRLxa6f0RqmC7P40yJiOMaBSHpMNKG+nbSBvBm0jIilxXjbBRzsWwt4O2SnimUDSGdyqr1v0BScf0uJh0BluYVEc9LeqpRzDm+YaQ6VVOsX1BYtxHxQl4OxfVb63ePpINJy2tjSZcBh0TEIz3E+7r58Po61JP6uktENKrPzdSBpyLi1TcQS70FEfF8ofsB0jrqD9OB4yWNIX2Hc4CjJY0lnSKck4drZvnX17/PSNqlUDaMdFq2qzgmkHYOppN2Sj9MSrrT64Ytzqd2hFHUZf2jvC7q6/kLDer5BNJR4Te6iLtkabr4/AiwpqRizO8gnceFtNC3IS2A6aTzwVuRVkr9CumrzwO7kvYEVyLtYUDaoJpxBrCrpE1I10su7MW8nydtyGmG0tsaDBMNyk4ELgUukTQylz1JaiA2joiV899KEVHc6EvTioiFEXFoRLyTlIAPkfTR+plJ2oZ03eCzpNMOK5OSZm0ZPUo6jK9Zs4fv8RBpL3blwt+KEbFTof+Odf2HR8TDeV6vTV/Sm0inuBp5krTnuFahrFi/eiUizoqIrfP0gnRarqd4e5xsX2LpQjN1oL9jGV2og5CW7yP5c6l+k478mxYR95AaywNJ1waeIzWkk0hHHrVE0Mzyr69/p9cNP7KrnSKWJIZt8ufppDaoUTtUnE9tp6Go2fpX2qYkjeD19XwM8FgPO8ivWZoSww2kFf9NScMkTQB2Ac4GiIi7SRX9i8D0XDEeBz5F/yWGFUnnfJ8iVeLv92bkiJhPuqh0OnB+RPyzm8EfJ52XrLmFtPc5TtJw0t5osw4gnV77o6QRuXKcCJwg6a0AklaX9PGuJiBpZ0nrKu1ePkvay2pUyVYknTLoBIZK+i7piKHmHOA/JI2WtHqOrTszgYWSjpA0QtIQSe+WtFnu/xvgWElr5Tg7JO2a+50H7Cxpa0nLk06HNazzEbE4x3aspBXz9A4hJfNekbS+pG0lrUA6Yv0nS5ZVd/H25HFgbN3OUZ/0pQ40iKVYP2u3sJ7aw3j/KWn5vAOxM+lmDkh79J+U9KZ8W+rEnubXwHRSfapt71fXdUPvl/8ZwC6SPp7r3vD8m4w1uhh+OvAR0kX8+aQj2x1IDfXN3cznEuBdkj4vaaikz5GuHVzczTg15+UYt8z1fDKv31k9h7RD15SlJjFExMukRLAjaW/nV8CXIuLOwmDTSYe/DxW6RbqY3B9OIx3ePQzcQbqI1VtTSed+T+9huMnAVEnPSPpsRPyd1LBdSbqToenfd0Q6yTiJdJrtopxYjiBdiLpe0nN5uut3M5n18jCLSOc+fxURjQ6nLyMdofydtKxepHzI/L0cx315eueRkm1XsS8mNSDj8jhPAieRjtggnY6bRjrFtZC0Tj6Qx72ddOfHWaS9qgV53l05kLTnei9p+Z5FukbTWyuQLrI/SdprfSvpuki38Tah1og+Jak/6nRv60DRycBGuX7WjnzXJN0105XHSOvgEdKNGf9W2H5PIJ0Xf5y0jZxZN+5kCttDF9OfTtoxmdFFN/Ry+ee2ZFfSTS+dpLp8OF3vYPydtI1ck7ufI9Wn63Jd7mo+T5Hq+aGkHc9vAjtHxJNdjVMY93ZS3T2bVM8Xka4HFberT+b+TVG+MGEtIulDpL2QtcILH0lfI11c/XC7Y7G+y3uqtwDvjYhX2h3PskzSKNK1jfUi4r6+TGOpOWIYDCQNI90ud9KymhQkjZG0laTlJK1P2kO6oN1x2RsTES9HxIZOCu0haZd8Gm4k6XbV20h3+PWJE0OLSNqQlMXHkH7/sKxannTv+ELSb0QuIp0WNLO+25V0iu4R0mnfPd7IzqdPJZmZWYmPGMzMrGSg/cCtoVVXXTXGjh3b7jDMzJYqs2fPfjIiOno7XmWJId8SOYN0695Q4LyIODrf5/xhlvxSeJ+ImNN4KsnYsWOZNWtWVaGamQ1Kkup/Td2UKo8YXiI9C2RRvhvnWkl/yv0Oj4jzKpy3mZn1UWWJIV8RX5Q7a0/k9JVuM7MBrtKLz/kn5HNIv8K7IiJuyL2OlXSrpBPyYwPMzGyAqDQxRMTiiBhHesDT5pLeTXo0wAbAZqRnkB/RaFxJkyTNkjSrs7OzyjDNzKygJberRsQzpMfU7hARj0byEvA70gtsGo0zJSLGR8T4jo5eX1Q3M7M+qiwx5KcWrpw/jyC9+ejO/Lx08lM6dyO9RMbMzAaIKu9KGkN6GuIQUgI6JyIulvQXSR2kp57OIb1lzczMBogq70q6lfTe5Prybauap5mZvXF+JIaZmZUsFY/EMLOBb6v/2ardISwTrjuwu3ch9Q8fMZiZWYkTg5mZlTgxmJlZiRODmZmVODGYmVnJoLsr6f2Hn9buEAa92T/6UrtDMLMK+YjBzMxKnBjMzKzEicHMzEqcGMzMrMSJwczMSpwYzMysxInBzMxKnBjMzKzEicHMzEqcGMzMrMSJwczMSgbds5Js6fbg997T7hAGvXd897Z2h2ADnI8YzMysxInBzMxKKksMkoZLminpFkm3S/rPXL62pBsk3SPpfyUtX1UMZmbWe1UeMbwEbBsRmwDjgB0kbQH8ADghItYFFgATK4zBzMx6qbLEEMmi3Dks/wWwLXBeLp8K7FZVDGZm1nuVXmOQNETSHOAJ4ArgH8AzEfFqHmQ+sHoX406SNEvSrM7OzirDNDOzgkoTQ0QsjohxwBrA5sAGvRh3SkSMj4jxHR0dlcVoZmZlLbkrKSKeAa4CPgisLKn2+4k1gIdbEYOZmTWnyruSOiStnD+PALYH5pESxKfzYHsDF1UVg5mZ9V6Vv3weA0yVNISUgM6JiIsl3QGcLekY4Gbg5ApjMDOzXqosMUTErcCmDcrvJV1vMDOzAci/fDYzsxInBjMzK3FiMDOzEicGMzMrcWIwM7MSJwYzMytxYjAzsxInBjMzK3FiMDOzEicGMzMrcWIwM7MSJwYzMytxYjAzsxInBjMzK3FiMDOzEicGMzMrcWIwM7MSJwYzMytxYjAzsxInBjMzK3FiMDOzksoSg6Q1JV0l6Q5Jt0s6KJdPlvSwpDn5b6eqYjAzs94bWuG0XwUOjYibJK0IzJZ0Re53QkQcX+G8zcysjypLDBHxKPBo/rxQ0jxg9armZ2Zm/aMl1xgkjQU2BW7IRQdIulXSKZJGtyIGMzNrTuWJQdIo4Hzg4Ih4Dvg1sA4wjnRE8eMuxpskaZakWZ2dnVWHaWZmWaWJQdIwUlI4MyL+ABARj0fE4oj4F3AisHmjcSNiSkSMj4jxHR0dVYZpZmYFVd6VJOBkYF5E/KRQPqYw2O7A3KpiMDOz3qvyrqStgL2A2yTNyWXfAvaUNA4I4H7gqxXGYGZmvVTlXUnXAmrQ65Kq5mlmZm+cf/lsZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVlJZYpC0pqSrJN0h6XZJB+XyVSRdIenu/H90VTGYmVnvVXnE8CpwaERsBGwB7C9pI+BI4M8RsR7w59xtZmYDRGWJISIejYib8ueFwDxgdWBXYGoebCqwW1UxmJlZ77XkGoOkscCmwA3AahHxaO71GLBaF+NMkjRL0qzOzs5WhGlmZvQiMUhaS9J2+fMISSs2Od4o4Hzg4Ih4rtgvIgKIRuNFxJSIGB8R4zs6OpoN08zM3qCmEoOkrwDnAb/NRWsAFzYx3jBSUjgzIv6Qix+XNCb3HwM80dugzcysOs0eMewPbAU8BxARdwNv7W4ESQJOBuZFxE8KvaYBe+fPewMX9SZgMzOr1tAmh3spIl5ObT1IGkoXp4AKtgL2Am6TNCeXfQs4DjhH0kTgAeCzvY7azMwq02ximC7pW8AISdsD/w78sbsRIuJaQF30/mjzIZqZWSs1eyrpSKATuA34KnAJ8O2qgjIzs/Zp6oghIv4l6QxgRkTcVXFMZmbWRs3elfQJYA5wae4eJ2lalYGZmVl7NHsq6Whgc+AZgIiYA6xdVVBmZtY+zSaGVyLi2bqynu5KMjOzpVCzdyXdLunzwBBJ6wFfB/5aXVhmZtYuzR4xHAhsDLwEnAU8CxxcVVBmZtY+PR4xSBoCfC8iDgOOqj4kMzNrpx6PGCJiMbB1C2IxM7MBoNlrDDfn21PPBZ6vFRYejGdmZoNEs4lhOPAUsG2hLAAnBjOzQabZXz5/uepAzMxsYGgqMUj6eYPiZ4FZEeHHZpuZDSLN3q46HBgH3J3/3kt6Wc9EST+tKDYzM2uDZq8xvBfYKt+hhKRfA9eQ7la6raLYzMysDZo9YhgNjCp0jwRWyYnipX6PyszM2qbZI4YfAnMkXU16+c6HgO9LGglcWVFsZmbWBs3elXSypD+RXtU5D7gcmB8RzwOHVxifmZm1WLN3Je0HHES64DwH2AL4G+XfNZiZ2SDQ7DWGg4DNgAci4iPApuR3M5iZ2eDSbGJ4MSJeBJC0QkTcCaxfXVhmZtYuzSaG+ZJWBi4ErpB0EfBAdyNIOkXSE5LmFsomS3pY0pz8t1PfQzczsyo0e/F59/xxsqSrgJXI73/uxqnAL4DT6spPiIjjexOkmZm1TrO3q74mIqY3OdwMSWN7O30zM2uvZk8l9acDJN2aTzWNbsP8zcysG61ODL8G1iE9d+lR4MddDShpkqRZkmZ1dna2Kj4zs2VeSxNDRDweEYsj4l/AicDm3Qw7JSLGR8T4jo6O1gVpZraMa2likDSm0Lk7MLerYc3MrD16ffG5WZJ+D0wAVpU0HzgamCBpHOntb/cDX61q/mZm1jeVJYaI2LNB8clVzc/MzPpHO+5KMjOzAcyJwczMSpwYzMysxInBzMxKnBjMzKzEicHMzEqcGMzMrMSJwczMSpwYzMysxInBzMxKnBjMzKzEicHMzEqcGMzMrMSJwczMSpwYzMysxInBzMxKnBjMzKzEicHMzEqcGMzMrMSJwczMSpwYzMysxInBzMxKKksMkk6R9ISkuYWyVSRdIenu/H90VfM3M7O+qfKI4VRgh7qyI4E/R8R6wJ9zt5mZDSCVJYaImAE8XVe8KzA1f54K7FbV/M3MrG9afY1htYh4NH9+DFitqwElTZI0S9Kszs7O1kRnZmbtu/gcEQFEN/2nRMT4iBjf0dHRwsjMzJZtrU4Mj0saA5D/P9Hi+ZuZWQ9anRimAXvnz3sDF7V4/mZm1oMqb1f9PfA3YH1J8yVNBI4Dtpd0N7Bd7jYzswFkaFUTjog9u+j10armaWZmb5x/+WxmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJUPbMVNJ9wMLgcXAqxExvh1xmJnZ67UlMWQfiYgn2zh/MzNrwKeSzMyspF2JIYDLJc2WNKnRAJImSZolaVZnZ2eLwzMzW3a1KzFsHRHvA3YE9pf0ofoBImJKRIyPiPEdHR2tj9DMbBnVlsQQEQ/n/08AFwCbtyMOMzN7vZYnBkkjJa1Y+wx8DJjb6jjMzKyxdtyVtBpwgaTa/M+KiEvbEIeZmTXQ8sQQEfcCm7R6vmZm1hzfrmpmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW4sRgZmYlTgxmZlbixGBmZiVODGZmVuLEYGZmJU4MZmZW0pbEIGkHSXdJukfSke2IwczMGmt5YpA0BPglsCOwEbCnpI1aHYeZmTXWjiOGzYF7IuLeiHgZOBvYtQ1xmJlZA4qI1s5Q+jSwQ0Tsl7v3Aj4QEQfUDTcJmJQ71wfuammgrbUq8GS7g7A+8bpbug329bdWRHT0dqShVUTSHyJiCjCl3XG0gqRZETG+3XFY73ndLd28/hprx6mkh4E1C91r5DIzMxsA2pEYbgTWk7S2pOWBPYBpbYjDzMwaaPmppIh4VdIBwGXAEOCUiLi91XEMMMvEKbNByutu6eb110DLLz6bmdnA5l8+m5lZiRODmZmVDNjbVc1aQdLQiHi1xfMU6TTuv1o538FG0mRgEfBmYEZEXFnhvP4aEVtKGgtsGRFnVTWvgcBHDAOEJCfpN0DShZJmS7o9/zgSSRMl/V3STEknSvpFLj9V0m8k3QD8UNJISafk4W6WtGseboikH0m6UdKtkr7azfx/KekT+fMFkk7Jn/eVdKyksfn5YKcBc4E1Je0p6TZJcyX9oDCtRXmcWyRdL2m1XL5O7r5N0jGSFlW0OJcqEfHdqpJCbbuMiC1z0Vjg81XMayBxYuhn7W6glmH7RsT7gfHA1yWtDnwH2ALYCtigbvg1SHt+hwBHAX+JiM2BjwA/kjQSmAg8GxGbAZsBX5G0dhfzvwbYJn9enfQcMHLZjPx5PeBXEbEx8ArwA2BbYBywmaTd8nAjgesjYpM87ldy+c+An0XEe4D5zS+awUPSUXlbupb0RITadvTp/Pk4SXfk7eT4Qv/fSJqVx905l4+VdI2km/Lflrl8Qi6fBtyRy2pJ+DhgG0lzJH1D0gxJ4wrxXStpk1Ytj6p4L7X/7RsRT0saAdwo6f9IDdT7gIXAX4BbCsPXGqjFkr5PaqD2lbQyMFPSlcAXyA2UpBWA6yRdHhH3tfSbDWxfl7R7/rwmsBcwPSKeBpB0LvCuwvDnRsTi/PljwCckHZa7hwPvyOXvrTU6wEqkxr3Rcr8GOFjpgZB3AKMljQE+CHwdeAvwQERcn4ffDLg6IjpzfGcCHwIuBF4GLs7DzQa2z58/CNSSx1nA8c0smMFC0vtJv3saR2q7biItn1r/twC7AxtERORtqGYs6Tlt6wBXSVoXeALYPiJelLQe8HvSjgWk7fXdDbaxI4HDIqKWXJ4G9iGt+3cBwyPiFpZyTgz9r90N1DJH0gRgO+CDEfGCpKuBO4ENuxnt+eIkgE9FROl5XJIEHBgRl/UUQ0Q8nBuiHUh7+asAnwUWRcTC3Gg93900Cl6JJfeRL8bbac02wAUR8QJA3qMvehZ4EThZ0sUsSa4A5+RrOndLupd0BHkf8Iu8x7+Y8nY5s8kdr3OB70g6HNgXOLX3X2vg8amkflTXQG0C3ExqoLrTqIEal//eERHzcvmBhfK1I+LyKr7DUmolYEFOChuQTh+NBD4saXQ+T/ypbsa/DDgwJwIkbVoo/5qkYbn8XfkUU1euBw4mJYZrgMPy/0Zm5vhWVXoU/Z7A9B6+5/WF77FHD8Muc/JNBJsD5wE7A5cWe9cPDnwDeBzYhHSksHyhf1NJPCepK0hPiP4scGZfYh9onBj610BpoJY1lwJDJc0jnQO+nvT8re+TGuDrgPtJe5SN/BcwDLhV0u25G+Ak0mmhmyTNBX5L93vv1wBDI+Ie0mmOVegiMUTEo6TTEleRTi3OjoiLevieBwOHSLoVWLeb7zNYzQB2kzRC0orALsWekkYBK0XEJaRGv3iu/zOSlpO0DvBO0tOaVwIezUcSe5GexNCThcCKdWUnAT8HboyIBX34XgOOf/ncj/L5/wtJ5zPvAlYGJpMOUQ8HniYdQcyPiKMknQpcHBHn5fFHAD8FtiQl7fsiYmdJywHHkDYEAZ3AbhGxrDUMvSJpVEQsygn5AtLjVy5od1x9JelNwD/z+fM9gD0jYpl6l4mko4C9SdcHHiQl4HeTThtdB1xEOgUr4PiImJq3sxdJRwVvBg6JiIvzdYXzSUcPlwL7R8SofOT/2nWEPN9Fud8w0o7aW4BTI+KE3P9O4OCIKB6lLLWcGFpgsDVQS4t8V8p2pIbicuCgWIorvKRtgF+QGr1nSDc63NPeqAa++h2wCqb/duBq0kXvQfHbFF/Uao3JkooN1IVtjmeZEBGH9TxU70h6D3B6XfFLEfGB/p5XvYi4hvLpEWszSV8CjiUdhQyKpAA+YjAzszq++GxmZiVODGZmVuLEYGZmJU4MZmZW4sRg1k/ygw5vl/SjPoz7rSpiMusL35VkyzT14/sYJD0LrFJ49lVvxl0UEaN6Mbzf6WCV8RGDDQpq//sYpgGjgNmSPidpF0k35OldqSXvVBgl6XdK71S4VdKnJB0HjFB6lPOZebhDlN7TMFfSwbnsde90qG6J2rLMRww2KEhapfi4c+DjpEcklB53HhEH5F/CrgrsWnjc+R0RcUZ+QupMYFPS487fGhHH5MedXAd8pqunbhb3+iWNBp7Jj6/YD9gwIg5VeiHPChFRa+xHR8SCunHfT3pK5xakXznfAHwRWADcS3pM+/X18zfrL/7lsw0WA+1x52sA/6v0ToblC+NsR+HJqF08dG1r0uOln8+x/4H0yOlplN/pYFYJJwZb6mkAvI+hgf8BfhIR03J8k/swjUaafaeDWZ/5GoMNBgPxcecrkR79DelpoDVXAPvXOvIpJ4BXavMhPap7N0lvyvPbna7f62DW75wYbDAYKO9jKJoMnCtpNvBkofwY0ms/50q6hfSOaYApef5nRsRNpGsMM0nXF06KiJubnK/ZG+aLzzZo+XHnZn3jIzHu23YAAAA9SURBVAYbzCZLmkO6tfM+/Lhzs6b4iMGsF9r5PgazVnFiMDOzEp9KMjOzEicGMzMrcWIwM7MSJwYzMyv5/5ta3GwkHKTCAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.barplot(x=\"agree_factor\", y=\"agree\", data=df1);\n", "plt.title('How many turkers agreed on sentiment, but were wrong?')" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [], "source": [ "df2 = agree_df.groupby(['agree_factor', 'PoN']).count()\n", "df2.reset_index(inplace=True)" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'What was the pos/neg split for the turkers?')" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.barplot(x=\"agree_factor\",\n", " y=\"agree\",\n", " hue=\"PoN\",\n", " data=df2);\n", "plt.title(\"What was the pos/neg split for the turkers?\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What was the kappa score for the turkers?" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.33333333333333337" ] }, "execution_count": 132, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Example code\n", "from sklearn.metrics import cohen_kappa_score\n", "y1 = [0,1,2,3,4,0,1,2,3,4,0,1,2,3,4]\n", "y2 = [0,1,2,2,4,1,2,3,0,0,0,2,2,4,4]\n", "cohen_kappa_score(y1,y2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### This was absolutely miserable and had me questioning both my intellect and the meaning of life" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "FIRST PASS: Oh boy! This will be super fun. First, I'm going to brainstorm \"out loud\" how I'm going to do this when AMT doesn't require that the same N turkers complete the task, making inter-rater reliability extremely hard to track when one turker has done 46/98 reviews and another has done 2/98" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look at our top turkers" ] }, { "cell_type": "code", "execution_count": 393, "metadata": { "scrolled": true }, "outputs": [ { "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", "
NeutralPositiveNegativeTotalAvg_WorkTimeInSecondsAvg_WorkTimeInMinMin_WorkTimeInMinMax_WorkTimeInMin
WorkerId
A681XM15AN28F132074013.5750000.2262500.1000000.833333
A1Y66T7FKJ8PJA523735695.85714311.5976190.21666722.000000
A33ENZVC1XB4BA034034366.6470596.1107840.6166679.916667
A1S2MN0E9BHPVA221427173.4444442.8907410.4000004.983333
A37L5E8MHHQGZM613322346.2727275.7712122.1500008.283333
AE03LUY7RH400410721102.2380951.7039680.1000003.433333
A2G44A4ZPWRPXU412218221.2777783.6879630.3833337.383333
A1YK1IKACUJMV4015015593.6000009.8933331.71666711.000000
A3AW887GI0NLKF310215269.4000004.4900001.6166677.216667
A3HAEQW13YPT6A014014442.9285717.3821430.86666711.100000
\n", "
" ], "text/plain": [ " Neutral Positive Negative Total Avg_WorkTimeInSeconds \\\n", "WorkerId \n", "A681XM15AN28F 13 20 7 40 13.575000 \n", "A1Y66T7FKJ8PJA 5 23 7 35 695.857143 \n", "A33ENZVC1XB4BA 0 34 0 34 366.647059 \n", "A1S2MN0E9BHPVA 2 21 4 27 173.444444 \n", "A37L5E8MHHQGZM 6 13 3 22 346.272727 \n", "AE03LUY7RH400 4 10 7 21 102.238095 \n", "A2G44A4ZPWRPXU 4 12 2 18 221.277778 \n", "A1YK1IKACUJMV4 0 15 0 15 593.600000 \n", "A3AW887GI0NLKF 3 10 2 15 269.400000 \n", "A3HAEQW13YPT6A 0 14 0 14 442.928571 \n", "\n", " Avg_WorkTimeInMin Min_WorkTimeInMin Max_WorkTimeInMin \n", "WorkerId \n", "A681XM15AN28F 0.226250 0.100000 0.833333 \n", "A1Y66T7FKJ8PJA 11.597619 0.216667 22.000000 \n", "A33ENZVC1XB4BA 6.110784 0.616667 9.916667 \n", "A1S2MN0E9BHPVA 2.890741 0.400000 4.983333 \n", "A37L5E8MHHQGZM 5.771212 2.150000 8.283333 \n", "AE03LUY7RH400 1.703968 0.100000 3.433333 \n", "A2G44A4ZPWRPXU 3.687963 0.383333 7.383333 \n", "A1YK1IKACUJMV4 9.893333 1.716667 11.000000 \n", "A3AW887GI0NLKF 4.490000 1.616667 7.216667 \n", "A3HAEQW13YPT6A 7.382143 0.866667 11.100000 " ] }, "execution_count": 393, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oh wait, this was from the original dataset... Let's look at the new dataset" ] }, { "cell_type": "code", "execution_count": 394, "metadata": {}, "outputs": [], "source": [ "newdf = pd.DataFrame(turker.groupby(['HITId', 'WorkerId']))" ] }, { "cell_type": "code", "execution_count": 396, "metadata": {}, "outputs": [ { "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", "
01
0(302OLP89DZ7MBHSY6QU0WCST11GACJ, A1T79J0XQXDDGC)HITId ...
1(302OLP89DZ7MBHSY6QU0WCST11GACJ, A2XFO0X6RCS98M)HITId ...
2(302OLP89DZ7MBHSY6QU0WCST11GACJ, A681XM15AN28F)HITId ...
3(3087LXLJ6MGXDGEQ5QN8FC1JPSW0FT, A1L8RL58MYU4NC)HITId ...
4(3087LXLJ6MGXDGEQ5QN8FC1JPSW0FT, A1T79J0XQXDDGC)HITId ...
\n", "
" ], "text/plain": [ " 0 \\\n", "0 (302OLP89DZ7MBHSY6QU0WCST11GACJ, A1T79J0XQXDDGC) \n", "1 (302OLP89DZ7MBHSY6QU0WCST11GACJ, A2XFO0X6RCS98M) \n", "2 (302OLP89DZ7MBHSY6QU0WCST11GACJ, A681XM15AN28F) \n", "3 (3087LXLJ6MGXDGEQ5QN8FC1JPSW0FT, A1L8RL58MYU4NC) \n", "4 (3087LXLJ6MGXDGEQ5QN8FC1JPSW0FT, A1T79J0XQXDDGC) \n", "\n", " 1 \n", "0 HITId ... \n", "1 HITId ... \n", "2 HITId ... \n", "3 HITId ... \n", "4 HITId ... " ] }, "execution_count": 396, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newdf[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Annnnd that is definitely not what we wanted...\n", "\n", "Clearly, it's time to clean things up.\n", "\n", "What are our columns again?" ] }, { "cell_type": "code", "execution_count": 398, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['HITId', 'HITTypeId', 'Title', 'Description', 'Keywords', 'Reward',\n", " 'CreationTime', 'MaxAssignments', 'RequesterAnnotation',\n", " 'AssignmentDurationInSeconds', 'AutoApprovalDelayInSeconds',\n", " 'Expiration', 'NumberOfSimilarHITs', 'LifetimeInSeconds',\n", " 'AssignmentId', 'WorkerId', 'AssignmentStatus', 'AcceptTime',\n", " 'SubmitTime', 'AutoApprovalTime', 'ApprovalTime', 'RejectionTime',\n", " 'RequesterFeedback', 'WorkTimeInSeconds', 'LifetimeApprovalRate',\n", " 'Last30DaysApprovalRate', 'Last7DaysApprovalRate', 'Input.text',\n", " 'Answer.sentiment.label', 'Approve', 'Reject'],\n", " dtype='object')" ] }, "execution_count": 398, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turker.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Great. Let's make a fresh and clean (so fresh and so clean clean) df" ] }, { "cell_type": "code", "execution_count": 400, "metadata": {}, "outputs": [], "source": [ "turker_clean = turker[['HITId', 'WorkerId', 'Answer.sentiment.label', 'Input.text']]" ] }, { "cell_type": "code", "execution_count": 402, "metadata": {}, "outputs": [ { "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", "
HITIdWorkerIdAnswer.sentiment.labelInput.text
0338GLSUI43BXEPY2ES6SPI72KKESF7AH5A86OLRZWCSNegativeEveryone praised an overrated movie.\\nOverrat...
1338GLSUI43BXEPY2ES6SPI72KKESF7A2HGRSPR50ENHLNegativeEveryone praised an overrated movie.\\nOverrat...
2338GLSUI43BXEPY2ES6SPI72KKESF7AKSJ3C5O3V9RBNegativeEveryone praised an overrated movie.\\nOverrat...
337MQ8Z1JQEWA9HYZP3JANL1ES162YCARLGZWN6W91WDNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...
437MQ8Z1JQEWA9HYZP3JANL1ES162YCAKSJ3C5O3V9RBNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...
...............
2893PUV2Q8SV441ZJ34C0P7BTUH4JDDBHA3EZ0H07TSDAPWNegativeOscar for Phoenix\\nI will stop watching movie...
2903PUV2Q8SV441ZJ34C0P7BTUH4JDDBHA38DC3BG1ZCVZ2PositiveOscar for Phoenix\\nI will stop watching movie...
2913FO95NVK5C0UHF3B5N6M67LLN8PSR2A194R45ACMQEORPositiveJoker > Endgame\\nNeed I say more? Everything ...
2923FO95NVK5C0UHF3B5N6M67LLN8PSR2A1L8RL58MYU4NCPositiveJoker > Endgame\\nNeed I say more? Everything ...
2933FO95NVK5C0UHF3B5N6M67LLN8PSR2A1T79J0XQXDDGCPositiveJoker > Endgame\\nNeed I say more? Everything ...
\n", "

294 rows × 4 columns

\n", "
" ], "text/plain": [ " HITId WorkerId Answer.sentiment.label \\\n", "0 338GLSUI43BXEPY2ES6SPI72KKESF7 AH5A86OLRZWCS Negative \n", "1 338GLSUI43BXEPY2ES6SPI72KKESF7 A2HGRSPR50ENHL Negative \n", "2 338GLSUI43BXEPY2ES6SPI72KKESF7 AKSJ3C5O3V9RB Negative \n", "3 37MQ8Z1JQEWA9HYZP3JANL1ES162YC ARLGZWN6W91WD Negative \n", "4 37MQ8Z1JQEWA9HYZP3JANL1ES162YC AKSJ3C5O3V9RB Negative \n", ".. ... ... ... \n", "289 3PUV2Q8SV441ZJ34C0P7BTUH4JDDBH A3EZ0H07TSDAPW Negative \n", "290 3PUV2Q8SV441ZJ34C0P7BTUH4JDDBH A38DC3BG1ZCVZ2 Positive \n", "291 3FO95NVK5C0UHF3B5N6M67LLN8PSR2 A194R45ACMQEOR Positive \n", "292 3FO95NVK5C0UHF3B5N6M67LLN8PSR2 A1L8RL58MYU4NC Positive \n", "293 3FO95NVK5C0UHF3B5N6M67LLN8PSR2 A1T79J0XQXDDGC Positive \n", "\n", " Input.text \n", "0 Everyone praised an overrated movie.\\nOverrat... \n", "1 Everyone praised an overrated movie.\\nOverrat... \n", "2 Everyone praised an overrated movie.\\nOverrat... \n", "3 What idiotic FIlm\\nI can say that Phoenix is ... \n", "4 What idiotic FIlm\\nI can say that Phoenix is ... \n", ".. ... \n", "289 Oscar for Phoenix\\nI will stop watching movie... \n", "290 Oscar for Phoenix\\nI will stop watching movie... \n", "291 Joker > Endgame\\nNeed I say more? Everything ... \n", "292 Joker > Endgame\\nNeed I say more? Everything ... \n", "293 Joker > Endgame\\nNeed I say more? Everything ... \n", "\n", "[294 rows x 4 columns]" ] }, "execution_count": 402, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turker_clean" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And let's see how many turkers turked" ] }, { "cell_type": "code", "execution_count": 403, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ARLGZWN6W91WD 46\n", "A681XM15AN28F 37\n", "A1T79J0XQXDDGC 34\n", "A2XFO0X6RCS98M 33\n", "A3EZ0H07TSDAPW 33\n", "A1L8RL58MYU4NC 28\n", "A38DC3BG1ZCVZ2 22\n", "AKSJ3C5O3V9RB 21\n", "ASB8T0H7L99RF 10\n", "AE03LUY7RH400 6\n", "A37JENVKZQ56U6 5\n", "A194R45ACMQEOR 5\n", "AH5A86OLRZWCS 4\n", "A2HG1N3BVQO6I 4\n", "AURYD2FH3FUOQ 2\n", "AMC42JMQA8A5U 2\n", "ATHS9GUME1XCA 1\n", "A2HGRSPR50ENHL 1\n", "Name: WorkerId, dtype: int64" ] }, "execution_count": 403, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turker_clean.WorkerId.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OK let's make this easy on ourselves and just use the top 5 turkers for our first test\n" ] }, { "cell_type": "code", "execution_count": 405, "metadata": {}, "outputs": [], "source": [ "turker1 = turker_clean[turker_clean['WorkerId'] == 'ARLGZWN6W91WD']\n", "turker2 = turker_clean[turker_clean['WorkerId'] == 'A681XM15AN28F']\n", "turker3 = turker_clean[turker_clean['WorkerId'] == 'A1T79J0XQXDDGC']\n", "turker4 = turker_clean[turker_clean['WorkerId'] == 'A2XFO0X6RCS98M']\n", "turker5 = turker_clean[turker_clean['WorkerId'] == 'A3EZ0H07TSDAPW']" ] }, { "cell_type": "code", "execution_count": 406, "metadata": {}, "outputs": [], "source": [ "turker1.reset_index(drop=True, inplace=True)\n", "turker2.reset_index(drop=True, inplace=True)\n", "turker3.reset_index(drop=True, inplace=True)\n", "turker4.reset_index(drop=True, inplace=True)\n", "turker5.reset_index(drop=True, inplace=True)" ] }, { "cell_type": "code", "execution_count": 407, "metadata": {}, "outputs": [], "source": [ "merged_df = pd.concat([turker1, turker2, turker3, turker4, turker5], axis=0, sort=False)" ] }, { "cell_type": "code", "execution_count": 408, "metadata": {}, "outputs": [], "source": [ "merged_df.reset_index(drop=True, inplace=True)" ] }, { "cell_type": "code", "execution_count": 409, "metadata": {}, "outputs": [ { "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", "
HITIdWorkerIdAnswer.sentiment.labelInput.text
793AQN9REUTFGXCRWFMS3RJ4SIPSUYDGA681XM15AN28FPositive#LetRottenTomatoesRotSquad\\nI am a simple guy...
1423AQN9REUTFGXCRWFMS3RJ4SIPSUYDGA2XFO0X6RCS98MPositive#LetRottenTomatoesRotSquad\\nI am a simple guy...
1223IVKZBIBJ09HSLP89IUSS3JF0ZRSH5A2XFO0X6RCS98MNegativeA 'Triumph of the Will' for Nihilists\\n'Joker...
553IVKZBIBJ09HSLP89IUSS3JF0ZRSH5A681XM15AN28FNeutralA 'Triumph of the Will' for Nihilists\\n'Joker...
873IVKZBIBJ09HSLP89IUSS3JF0ZRSH5A1T79J0XQXDDGCNegativeA 'Triumph of the Will' for Nihilists\\n'Joker...
...............
1753J9UN9O9J3SDII0MOGETUATBIZD0JWA3EZ0H07TSDAPWPositiveTook my 65 year old mother to see it.\\nI saw t...
4331ODACBENUFU5EOBS8HM1HBGRMNSQ1ARLGZWN6W91WDPositiveVenice 76 review\\nI have just watched the Joke...
18031ODACBENUFU5EOBS8HM1HBGRMNSQ1A3EZ0H07TSDAPWPositiveVenice 76 review\\nI have just watched the Joke...
1623M93N4X8HKNDJRKYXIXD4GZUDRVSJAA3EZ0H07TSDAPWNegativelose of both time and money\\nThis was one of t...
1273M93N4X8HKNDJRKYXIXD4GZUDRVSJAA2XFO0X6RCS98MNegativelose of both time and money\\nThis was one of t...
\n", "

183 rows × 4 columns

\n", "
" ], "text/plain": [ " HITId WorkerId Answer.sentiment.label \\\n", "79 3AQN9REUTFGXCRWFMS3RJ4SIPSUYDG A681XM15AN28F Positive \n", "142 3AQN9REUTFGXCRWFMS3RJ4SIPSUYDG A2XFO0X6RCS98M Positive \n", "122 3IVKZBIBJ09HSLP89IUSS3JF0ZRSH5 A2XFO0X6RCS98M Negative \n", "55 3IVKZBIBJ09HSLP89IUSS3JF0ZRSH5 A681XM15AN28F Neutral \n", "87 3IVKZBIBJ09HSLP89IUSS3JF0ZRSH5 A1T79J0XQXDDGC Negative \n", ".. ... ... ... \n", "175 3J9UN9O9J3SDII0MOGETUATBIZD0JW A3EZ0H07TSDAPW Positive \n", "43 31ODACBENUFU5EOBS8HM1HBGRMNSQ1 ARLGZWN6W91WD Positive \n", "180 31ODACBENUFU5EOBS8HM1HBGRMNSQ1 A3EZ0H07TSDAPW Positive \n", "162 3M93N4X8HKNDJRKYXIXD4GZUDRVSJA A3EZ0H07TSDAPW Negative \n", "127 3M93N4X8HKNDJRKYXIXD4GZUDRVSJA A2XFO0X6RCS98M Negative \n", "\n", " Input.text \n", "79 #LetRottenTomatoesRotSquad\\nI am a simple guy... \n", "142 #LetRottenTomatoesRotSquad\\nI am a simple guy... \n", "122 A 'Triumph of the Will' for Nihilists\\n'Joker... \n", "55 A 'Triumph of the Will' for Nihilists\\n'Joker... \n", "87 A 'Triumph of the Will' for Nihilists\\n'Joker... \n", ".. ... \n", "175 Took my 65 year old mother to see it.\\nI saw t... \n", "43 Venice 76 review\\nI have just watched the Joke... \n", "180 Venice 76 review\\nI have just watched the Joke... \n", "162 lose of both time and money\\nThis was one of t... \n", "127 lose of both time and money\\nThis was one of t... \n", "\n", "[183 rows x 4 columns]" ] }, "execution_count": 409, "metadata": {}, "output_type": "execute_result" } ], "source": [ "merged_df.sort_values(by='Input.text')" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [], "source": [ "merged_df2 = pd.concat([turker1, turker2], axis=0, sort=False)" ] }, { "cell_type": "code", "execution_count": 195, "metadata": {}, "outputs": [ { "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", "
HITIdWorkerIdAnswer.sentiment.labelInput.text
333AQN9REUTFGXCRWFMS3RJ4SIPSUYDGA681XM15AN28FPositive#LetRottenTomatoesRotSquad\\nI am a simple guy...
93IVKZBIBJ09HSLP89IUSS3JF0ZRSH5A681XM15AN28FNeutralA 'Triumph of the Will' for Nihilists\\n'Joker...
3639O0SQZVJN78YHJJHK8BBGPP0UD7RVARLGZWN6W91WDPositiveA Breath of Fresh Cinema\\nBursting with emoti...
30334ZEL5JX6FRK2BVDVPICCGGCL5SOTA681XM15AN28FPositiveA brilliant movie\\nThis movie is slow but nev...
313DWGDA5POF4MG2LY1OWCB3NFIEPV1EARLGZWN6W91WDPositiveA clean masterpiece!\\nWhat I loved the most a...
...............
73D17ECOUOEV24TJFHEQ6S8VWRUX31QARLGZWN6W91WDNegativeOverhyped and not everyone joker performance i...
63G3AJKPCXLSKCVDMTH2YG0YCCF1Y43A681XM15AN28FNeutralRidiculous well acted Trash\\nSaw the movie Jok...
173JAOYN9IHL2YEWXU4I4PG1ATPEB33IA681XM15AN28FNeutralThe king has no clothes\\nRead the reviews- the...
383J5XXLQDHMBIQ5ZDOSAVZW2CGY3V36ARLGZWN6W91WDPositiveThe mirror of society\\nActing 10/10\\nActors 10...
4331ODACBENUFU5EOBS8HM1HBGRMNSQ1ARLGZWN6W91WDPositiveVenice 76 review\\nI have just watched the Joke...
\n", "

83 rows × 4 columns

\n", "
" ], "text/plain": [ " HITId WorkerId Answer.sentiment.label \\\n", "33 3AQN9REUTFGXCRWFMS3RJ4SIPSUYDG A681XM15AN28F Positive \n", "9 3IVKZBIBJ09HSLP89IUSS3JF0ZRSH5 A681XM15AN28F Neutral \n", "36 39O0SQZVJN78YHJJHK8BBGPP0UD7RV ARLGZWN6W91WD Positive \n", "30 334ZEL5JX6FRK2BVDVPICCGGCL5SOT A681XM15AN28F Positive \n", "31 3DWGDA5POF4MG2LY1OWCB3NFIEPV1E ARLGZWN6W91WD Positive \n", ".. ... ... ... \n", "7 3D17ECOUOEV24TJFHEQ6S8VWRUX31Q ARLGZWN6W91WD Negative \n", "6 3G3AJKPCXLSKCVDMTH2YG0YCCF1Y43 A681XM15AN28F Neutral \n", "17 3JAOYN9IHL2YEWXU4I4PG1ATPEB33I A681XM15AN28F Neutral \n", "38 3J5XXLQDHMBIQ5ZDOSAVZW2CGY3V36 ARLGZWN6W91WD Positive \n", "43 31ODACBENUFU5EOBS8HM1HBGRMNSQ1 ARLGZWN6W91WD Positive \n", "\n", " Input.text \n", "33 #LetRottenTomatoesRotSquad\\nI am a simple guy... \n", "9 A 'Triumph of the Will' for Nihilists\\n'Joker... \n", "36 A Breath of Fresh Cinema\\nBursting with emoti... \n", "30 A brilliant movie\\nThis movie is slow but nev... \n", "31 A clean masterpiece!\\nWhat I loved the most a... \n", ".. ... \n", "7 Overhyped and not everyone joker performance i... \n", "6 Ridiculous well acted Trash\\nSaw the movie Jok... \n", "17 The king has no clothes\\nRead the reviews- the... \n", "38 The mirror of society\\nActing 10/10\\nActors 10... \n", "43 Venice 76 review\\nI have just watched the Joke... \n", "\n", "[83 rows x 4 columns]" ] }, "execution_count": 195, "metadata": {}, "output_type": "execute_result" } ], "source": [ "merged_df2.sort_values(by='Input.text')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## And HERE is where everything went to hell in a handbasket. I'm leaving these failed attempts as monuments to my sweat and near-tears" ] }, { "cell_type": "code", "execution_count": 191, "metadata": {}, "outputs": [], "source": [ "# merged_df2['Input.text'].value_counts()\n", "# df = pd.DataFrame(merged_df2.groupby('HITId'))\n", "# df.set_index([turker1, turker2]).unstack(level=0)" ] }, { "cell_type": "code", "execution_count": 203, "metadata": {}, "outputs": [ { "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", "
HITIdWorkerIdAnswer.sentiment.label
037MQ8Z1JQEWA9HYZP3JANL1ES162YCARLGZWN6W91WDNegative
13I7SHAD35MWH116RCCCUPHVFU7E7M7ARLGZWN6W91WDNegative
23XUSYT70IT10FW0UEKSIRCYYDFG0DIARLGZWN6W91WDNegative
33SD15I2WD2UXBFKCNK2NN4MDZ5D63RARLGZWN6W91WDNegative
43P7QK0GJ3TLAE784LPLT1SAGYVA2Z3ARLGZWN6W91WDNegative
............
17839KV3A5D187KZWJWW98G1QULMWW7SJA3EZ0H07TSDAPWNeutral
17935F6NGNVM8JLEWWBL9D6BVQ7OFA7T8A3EZ0H07TSDAPWPositive
18031ODACBENUFU5EOBS8HM1HBGRMNSQ1A3EZ0H07TSDAPWPositive
1813PN6H8C9R4QWG9YC6MPBGIABM1SDAMA3EZ0H07TSDAPWNeutral
1823PUV2Q8SV441ZJ34C0P7BTUH4JDDBHA3EZ0H07TSDAPWNegative
\n", "

183 rows × 3 columns

\n", "
" ], "text/plain": [ " HITId WorkerId Answer.sentiment.label\n", "0 37MQ8Z1JQEWA9HYZP3JANL1ES162YC ARLGZWN6W91WD Negative\n", "1 3I7SHAD35MWH116RCCCUPHVFU7E7M7 ARLGZWN6W91WD Negative\n", "2 3XUSYT70IT10FW0UEKSIRCYYDFG0DI ARLGZWN6W91WD Negative\n", "3 3SD15I2WD2UXBFKCNK2NN4MDZ5D63R ARLGZWN6W91WD Negative\n", "4 3P7QK0GJ3TLAE784LPLT1SAGYVA2Z3 ARLGZWN6W91WD Negative\n", ".. ... ... ...\n", "178 39KV3A5D187KZWJWW98G1QULMWW7SJ A3EZ0H07TSDAPW Neutral\n", "179 35F6NGNVM8JLEWWBL9D6BVQ7OFA7T8 A3EZ0H07TSDAPW Positive\n", "180 31ODACBENUFU5EOBS8HM1HBGRMNSQ1 A3EZ0H07TSDAPW Positive\n", "181 3PN6H8C9R4QWG9YC6MPBGIABM1SDAM A3EZ0H07TSDAPW Neutral\n", "182 3PUV2Q8SV441ZJ34C0P7BTUH4JDDBH A3EZ0H07TSDAPW Negative\n", "\n", "[183 rows x 3 columns]" ] }, "execution_count": 203, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# grouped = turker_clean.groupby(['HITId','WorkerId'])\n", "# grouped.set_index(['HITId', 'WorkerId']).mean().unstack(level=0)\n", "df = merged_df.drop('Input.text', axis=1)\n", "df" ] }, { "cell_type": "code", "execution_count": 411, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " REVIEW1 REVIEW2 REVIEW3 REVIEW4 REVIEW5 REVIEW6 \\\n", "Turker \n", "A1T79J0XQXDDGC Positive Negative Positive Positive Negative Negative \n", "A2XFO0X6RCS98M Negative Negative Negative Negative Positive Negative \n", "A3EZ0H07TSDAPW Positive Neutral Positive Negative Negative Positive \n", "A681XM15AN28F Negative Positive Positive Positive Positive Negative \n", "ARLGZWN6W91WD Negative Negative Negative Negative Negative Negative \n", "\n", " REVIEW7 REVIEW8 REVIEW9 REVIEW10 ... REVIEW38 \\\n", "Turker ... \n", "A1T79J0XQXDDGC Negative Positive Negative Negative ... NaN \n", "A2XFO0X6RCS98M Negative Negative Negative Negative ... NaN \n", "A3EZ0H07TSDAPW Negative Positive Positive Negative ... NaN \n", "A681XM15AN28F Neutral Neutral Neutral Neutral ... NaN \n", "ARLGZWN6W91WD Negative Negative Negative Negative ... Positive \n", "\n", " REVIEW39 REVIEW40 REVIEW41 REVIEW42 REVIEW43 REVIEW44 \\\n", "Turker \n", "A1T79J0XQXDDGC NaN NaN NaN NaN NaN NaN \n", "A2XFO0X6RCS98M NaN NaN NaN NaN NaN NaN \n", "A3EZ0H07TSDAPW NaN NaN NaN NaN NaN NaN \n", "A681XM15AN28F NaN NaN NaN NaN NaN NaN \n", "ARLGZWN6W91WD Positive Positive Positive Negative Positive Positive \n", "\n", " REVIEW45 REVIEW46 \\\n", "Turker \n", "A1T79J0XQXDDGC NaN NaN \n", "A2XFO0X6RCS98M NaN NaN \n", "A3EZ0H07TSDAPW NaN NaN \n", "A681XM15AN28F NaN NaN \n", "ARLGZWN6W91WD Positive Positive \n", "\n", " SENTIMENT \n", "Turker \n", "A1T79J0XQXDDGC 302OLP89DZ7MBHSY6QU0WCST11GACJ32LAQ1JNT9PNC787... \n", "A2XFO0X6RCS98M 3I7SHAD35MWH116RCCCUPHVFU7E7M73XUSYT70IT10FW0U... \n", "A3EZ0H07TSDAPW 38O9DZ0A62N8QXOTJKOI4UHLTRD62G3I7SHAD35MWH116R... \n", "A681XM15AN28F 3SD15I2WD2UXBFKCNK2NN4MDZ5D63R302OLP89DZ7MBHSY... \n", "ARLGZWN6W91WD 37MQ8Z1JQEWA9HYZP3JANL1ES162YC3I7SHAD35MWH116R... \n", "\n", "[5 rows x 47 columns]\n" ] } ], "source": [ "df = pd.DataFrame({'Turker': merged_df['WorkerId'].tolist(),\n", " 'REVIEW': merged_df['Answer.sentiment.label'].tolist(),\n", " 'SENTIMENT': merged_df['HITId'].tolist() })\n", "\n", "grouped = df.groupby('Turker')\n", "values = grouped['SENTIMENT'].agg('sum')\n", "id_df = grouped['REVIEW'].apply(lambda x: pd.Series(x.values)).unstack()\n", "id_df = id_df.rename(columns={i: 'REVIEW{}'.format(i + 1) for i in range(id_df.shape[1])})\n", "result = pd.concat([id_df, values], axis=1)\n", "result_df = pd.DataFrame(result)\n", "print(result_df[:5])" ] }, { "cell_type": "code", "execution_count": 412, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Turker A1T79J0XQXDDGC A2XFO0X6RCS98M A3EZ0H07TSDAPW A681XM15AN28F \\\n", "SENTIMENT1 Positive Negative Positive Negative \n", "SENTIMENT2 Negative Negative Neutral Positive \n", "SENTIMENT3 Positive Negative Positive Positive \n", "SENTIMENT4 Positive Negative Negative Positive \n", "SENTIMENT5 Negative Positive Negative Positive \n", "\n", "Turker ARLGZWN6W91WD \n", "SENTIMENT1 Negative \n", "SENTIMENT2 Negative \n", "SENTIMENT3 Negative \n", "SENTIMENT4 Negative \n", "SENTIMENT5 Negative \n" ] } ], "source": [ "df = pd.DataFrame({'Turker': merged_df['WorkerId'].tolist(),\n", " 'SENTIMENT': merged_df['Answer.sentiment.label'].tolist(),\n", " 'REVIEW': merged_df['HITId'].tolist() })\n", "\n", "grouped = df.groupby('Turker')\n", "values = grouped['REVIEW'].agg('sum')\n", "id_df = grouped['SENTIMENT'].apply(lambda x: pd.Series(x.values)).unstack()\n", "id_df = id_df.rename(columns={i: 'SENTIMENT{}'.format(i + 1) for i in range(id_df.shape[1])})\n", "result = pd.concat([id_df, values], axis=1)\n", "result_df = pd.DataFrame(result)\n", "print(result_df.T[:5])" ] }, { "cell_type": "code", "execution_count": 413, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "47" ] }, "execution_count": 413, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t1 = result_df.T['A3EZ0H07TSDAPW'].tolist()\n", "len(t1)" ] }, { "cell_type": "code", "execution_count": 414, "metadata": {}, "outputs": [], "source": [ "t2 = result_df.T['A2XFO0X6RCS98M'].tolist()\n", "len(t2)\n", "t3 = result_df.T['A681XM15AN28F'].tolist()\n", "len(t3)\n", "t4 = result_df.T['ARLGZWN6W91WD'].tolist()" ] }, { "cell_type": "code", "execution_count": 416, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Positive', 'Neutral', 'Positive', 'Negative', 'Negative']" ] }, "execution_count": 416, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t1[:-1][:5]" ] }, { "cell_type": "code", "execution_count": 417, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Negative', 'Negative', 'Negative', 'Negative', 'Positive']" ] }, "execution_count": 417, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t2[:-1][:5]" ] }, { "cell_type": "code", "execution_count": 418, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Negative', 'Positive', 'Positive', 'Positive', 'Positive']" ] }, "execution_count": 418, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t3[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OK after all that work, we can finally calculate the kappa score between our first and second \"most prolific\" turkers" ] }, { "cell_type": "code", "execution_count": 419, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.43974358974358974" ] }, "execution_count": 419, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import cohen_kappa_score\n", "y1 = t1[:-1]\n", "y2 = t2[:-1]\n", "cohen_kappa_score(y1,y2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "annnnnd just to make sure, let's calculate the same score between third and fourth \"most prolific\" turkers" ] }, { "cell_type": "code", "execution_count": 421, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.07585335018963324" ] }, "execution_count": 421, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y3 = t3[:-1]\n", "y4 = t4[:-1]\n", "cohen_kappa_score(y3,y4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pretty sure a negative number isn't what we want... oh well. Can't worry about that because that's when the existential dread sinks in... like, why am I doing this right now? Why do I care so much? Why am I trying to calculate inter-rater reliability THIS way when this won't even be a measure I will use if/when I use turkers in the future? In the future, I will use the sample size itself to determine \"reliability\" -- e.g. If all N turkers agree on X, then it goes into the \"good\" pile, if not, then it goes back into the AMT pile until we have N turkers agreeing...Because the way AMT is set up right now, we won't be able to reliable calculate kappa when the number of HITS per turker is so varried. In order to get something truely accurate, I'd have to remove all the data that was only completed by M or fewer turkers and hope that the prolific turkers worked on the same ones and then compare those (which is exactly what I did below but seriously WHY WHY WHY.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Another failed test" ] }, { "cell_type": "code", "execution_count": 272, "metadata": {}, "outputs": [], "source": [ "turker_clean_test = turker_clean.copy()\n", "turker_clean_test.reset_index(inplace=True)\n", "\n", "id_dict = {}\n", "id_num = 1\n", "def return_new_id(old_id,):\n", " if old_id in id_dict.keys():\n", " return id_dict[old_id]\n", " else:\n", " id_num = id_num + 1\n", " id_dict.update({ old_id: id_num })\n", " return num\n", "\n", "# turker_clean_test['ReviewID'] = turker_clean_test.apply(lambda x: return_new_id(x['HITId']), axis=1)\n", "# turker_clean_test\n", "turker_clean_test\n", "\n", "new_ids = pd.factorize(turker_clean_test['HITId'].tolist())\n", "new_ids[0]\n", "turker_clean_test['ReviewID'] = new_ids[0]" ] }, { "cell_type": "code", "execution_count": 273, "metadata": {}, "outputs": [ { "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", "
indexHITIdWorkerIdAnswer.sentiment.labelInput.textReviewID
00338GLSUI43BXEPY2ES6SPI72KKESF7AH5A86OLRZWCSNegativeEveryone praised an overrated movie.\\nOverrat...0
11338GLSUI43BXEPY2ES6SPI72KKESF7A2HGRSPR50ENHLNegativeEveryone praised an overrated movie.\\nOverrat...0
22338GLSUI43BXEPY2ES6SPI72KKESF7AKSJ3C5O3V9RBNegativeEveryone praised an overrated movie.\\nOverrat...0
3337MQ8Z1JQEWA9HYZP3JANL1ES162YCARLGZWN6W91WDNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...1
4437MQ8Z1JQEWA9HYZP3JANL1ES162YCAKSJ3C5O3V9RBNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...1
.....................
2892893PUV2Q8SV441ZJ34C0P7BTUH4JDDBHA3EZ0H07TSDAPWNegativeOscar for Phoenix\\nI will stop watching movie...96
2902903PUV2Q8SV441ZJ34C0P7BTUH4JDDBHA38DC3BG1ZCVZ2PositiveOscar for Phoenix\\nI will stop watching movie...96
2912913FO95NVK5C0UHF3B5N6M67LLN8PSR2A194R45ACMQEORPositiveJoker > Endgame\\nNeed I say more? Everything ...97
2922923FO95NVK5C0UHF3B5N6M67LLN8PSR2A1L8RL58MYU4NCPositiveJoker > Endgame\\nNeed I say more? Everything ...97
2932933FO95NVK5C0UHF3B5N6M67LLN8PSR2A1T79J0XQXDDGCPositiveJoker > Endgame\\nNeed I say more? Everything ...97
\n", "

294 rows × 6 columns

\n", "
" ], "text/plain": [ " index HITId WorkerId \\\n", "0 0 338GLSUI43BXEPY2ES6SPI72KKESF7 AH5A86OLRZWCS \n", "1 1 338GLSUI43BXEPY2ES6SPI72KKESF7 A2HGRSPR50ENHL \n", "2 2 338GLSUI43BXEPY2ES6SPI72KKESF7 AKSJ3C5O3V9RB \n", "3 3 37MQ8Z1JQEWA9HYZP3JANL1ES162YC ARLGZWN6W91WD \n", "4 4 37MQ8Z1JQEWA9HYZP3JANL1ES162YC AKSJ3C5O3V9RB \n", ".. ... ... ... \n", "289 289 3PUV2Q8SV441ZJ34C0P7BTUH4JDDBH A3EZ0H07TSDAPW \n", "290 290 3PUV2Q8SV441ZJ34C0P7BTUH4JDDBH A38DC3BG1ZCVZ2 \n", "291 291 3FO95NVK5C0UHF3B5N6M67LLN8PSR2 A194R45ACMQEOR \n", "292 292 3FO95NVK5C0UHF3B5N6M67LLN8PSR2 A1L8RL58MYU4NC \n", "293 293 3FO95NVK5C0UHF3B5N6M67LLN8PSR2 A1T79J0XQXDDGC \n", "\n", " Answer.sentiment.label Input.text \\\n", "0 Negative Everyone praised an overrated movie.\\nOverrat... \n", "1 Negative Everyone praised an overrated movie.\\nOverrat... \n", "2 Negative Everyone praised an overrated movie.\\nOverrat... \n", "3 Negative What idiotic FIlm\\nI can say that Phoenix is ... \n", "4 Negative What idiotic FIlm\\nI can say that Phoenix is ... \n", ".. ... ... \n", "289 Negative Oscar for Phoenix\\nI will stop watching movie... \n", "290 Positive Oscar for Phoenix\\nI will stop watching movie... \n", "291 Positive Joker > Endgame\\nNeed I say more? Everything ... \n", "292 Positive Joker > Endgame\\nNeed I say more? Everything ... \n", "293 Positive Joker > Endgame\\nNeed I say more? Everything ... \n", "\n", " ReviewID \n", "0 0 \n", "1 0 \n", "2 0 \n", "3 1 \n", "4 1 \n", ".. ... \n", "289 96 \n", "290 96 \n", "291 97 \n", "292 97 \n", "293 97 \n", "\n", "[294 rows x 6 columns]" ] }, "execution_count": 273, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turker_clean_test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Attempt 4:\n", "##### Maybe if I convert these huge opressive strings into smaller numbers, this won't feel as awful?" ] }, { "cell_type": "code", "execution_count": 274, "metadata": {}, "outputs": [], "source": [ "new_turker_ids = pd.factorize(turker_clean_test['WorkerId'].tolist())" ] }, { "cell_type": "code", "execution_count": 276, "metadata": {}, "outputs": [], "source": [ "t_ids = ['T_' + str(id) for id in new_turker_ids[0]]" ] }, { "cell_type": "code", "execution_count": 422, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['T_0', 'T_1', 'T_2', 'T_3', 'T_2']" ] }, "execution_count": 422, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t_ids[:5]" ] }, { "cell_type": "code", "execution_count": 423, "metadata": {}, "outputs": [ { "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", "
indexHITIdWorkerIdAnswer.sentiment.labelInput.textReviewIDT_IDsentiment
00338GLSUI43BXEPY2ES6SPI72KKESF7AH5A86OLRZWCSNegativeEveryone praised an overrated movie.\\nOverrat...0T_0N
11338GLSUI43BXEPY2ES6SPI72KKESF7A2HGRSPR50ENHLNegativeEveryone praised an overrated movie.\\nOverrat...0T_1N
22338GLSUI43BXEPY2ES6SPI72KKESF7AKSJ3C5O3V9RBNegativeEveryone praised an overrated movie.\\nOverrat...0T_2N
3337MQ8Z1JQEWA9HYZP3JANL1ES162YCARLGZWN6W91WDNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...1T_3N
4437MQ8Z1JQEWA9HYZP3JANL1ES162YCAKSJ3C5O3V9RBNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...1T_2N
\n", "
" ], "text/plain": [ " index HITId WorkerId \\\n", "0 0 338GLSUI43BXEPY2ES6SPI72KKESF7 AH5A86OLRZWCS \n", "1 1 338GLSUI43BXEPY2ES6SPI72KKESF7 A2HGRSPR50ENHL \n", "2 2 338GLSUI43BXEPY2ES6SPI72KKESF7 AKSJ3C5O3V9RB \n", "3 3 37MQ8Z1JQEWA9HYZP3JANL1ES162YC ARLGZWN6W91WD \n", "4 4 37MQ8Z1JQEWA9HYZP3JANL1ES162YC AKSJ3C5O3V9RB \n", "\n", " Answer.sentiment.label Input.text \\\n", "0 Negative Everyone praised an overrated movie.\\nOverrat... \n", "1 Negative Everyone praised an overrated movie.\\nOverrat... \n", "2 Negative Everyone praised an overrated movie.\\nOverrat... \n", "3 Negative What idiotic FIlm\\nI can say that Phoenix is ... \n", "4 Negative What idiotic FIlm\\nI can say that Phoenix is ... \n", "\n", " ReviewID T_ID sentiment \n", "0 0 T_0 N \n", "1 0 T_1 N \n", "2 0 T_2 N \n", "3 1 T_3 N \n", "4 1 T_2 N " ] }, "execution_count": 423, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turker_clean_test['T_ID'] = t_ids\n", "turker_clean_test[:5]" ] }, { "cell_type": "code", "execution_count": 281, "metadata": {}, "outputs": [], "source": [ "turker_clean_test['sentiment'] = turker_clean_test.apply(lambda x: x['Answer.sentiment.label'][0], axis=1)" ] }, { "cell_type": "code", "execution_count": 424, "metadata": {}, "outputs": [ { "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", "
indexHITIdWorkerIdAnswer.sentiment.labelInput.textReviewIDT_IDsentiment
00338GLSUI43BXEPY2ES6SPI72KKESF7AH5A86OLRZWCSNegativeEveryone praised an overrated movie.\\nOverrat...0T_0N
11338GLSUI43BXEPY2ES6SPI72KKESF7A2HGRSPR50ENHLNegativeEveryone praised an overrated movie.\\nOverrat...0T_1N
22338GLSUI43BXEPY2ES6SPI72KKESF7AKSJ3C5O3V9RBNegativeEveryone praised an overrated movie.\\nOverrat...0T_2N
3337MQ8Z1JQEWA9HYZP3JANL1ES162YCARLGZWN6W91WDNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...1T_3N
4437MQ8Z1JQEWA9HYZP3JANL1ES162YCAKSJ3C5O3V9RBNegativeWhat idiotic FIlm\\nI can say that Phoenix is ...1T_2N
\n", "
" ], "text/plain": [ " index HITId WorkerId \\\n", "0 0 338GLSUI43BXEPY2ES6SPI72KKESF7 AH5A86OLRZWCS \n", "1 1 338GLSUI43BXEPY2ES6SPI72KKESF7 A2HGRSPR50ENHL \n", "2 2 338GLSUI43BXEPY2ES6SPI72KKESF7 AKSJ3C5O3V9RB \n", "3 3 37MQ8Z1JQEWA9HYZP3JANL1ES162YC ARLGZWN6W91WD \n", "4 4 37MQ8Z1JQEWA9HYZP3JANL1ES162YC AKSJ3C5O3V9RB \n", "\n", " Answer.sentiment.label Input.text \\\n", "0 Negative Everyone praised an overrated movie.\\nOverrat... \n", "1 Negative Everyone praised an overrated movie.\\nOverrat... \n", "2 Negative Everyone praised an overrated movie.\\nOverrat... \n", "3 Negative What idiotic FIlm\\nI can say that Phoenix is ... \n", "4 Negative What idiotic FIlm\\nI can say that Phoenix is ... \n", "\n", " ReviewID T_ID sentiment \n", "0 0 T_0 N \n", "1 0 T_1 N \n", "2 0 T_2 N \n", "3 1 T_3 N \n", "4 1 T_2 N " ] }, "execution_count": 424, "metadata": {}, "output_type": "execute_result" } ], "source": [ "turker_clean_test[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Annnnd here we are... small and clean. This DID actually help my brain a bit... Noted for next time." ] }, { "cell_type": "code", "execution_count": 431, "metadata": {}, "outputs": [], "source": [ "even_cleaner_df = turker_clean_test[['ReviewID', 'T_ID', 'sentiment']]" ] }, { "cell_type": "code", "execution_count": 432, "metadata": {}, "outputs": [ { "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", "
ReviewIDT_IDsentiment
00T_0N
10T_1N
20T_2N
31T_3N
41T_2N
\n", "
" ], "text/plain": [ " ReviewID T_ID sentiment\n", "0 0 T_0 N\n", "1 0 T_1 N\n", "2 0 T_2 N\n", "3 1 T_3 N\n", "4 1 T_2 N" ] }, "execution_count": 432, "metadata": {}, "output_type": "execute_result" } ], "source": [ "even_cleaner_df[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Attempt 5:\n", "#### Let's make our very own DIY sparse matrix!!" ] }, { "cell_type": "code", "execution_count": 433, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Turker T_0 T_1 T_10 T_11 T_12 T_13 T_14 T_15 T_16 T_17 T_2 T_3 T_4 T_5 T_6 \\\n", "REVIEW1 N N P N N N N N N P N N N P N \n", "REVIEW2 N NaN N N N N P N P NaN N N N N N \n", "REVIEW3 N NaN P P N N NaN NaN P NaN N N N P P \n", "REVIEW4 N NaN P P N P NaN NaN P NaN N N N N P \n", "REVIEW5 NaN NaN N N P P NaN NaN NaN NaN N N N N P \n", "\n", "Turker T_7 T_8 T_9 \n", "REVIEW1 N N N \n", "REVIEW2 N N P \n", "REVIEW3 N N P \n", "REVIEW4 N N P \n", "REVIEW5 N P P \n" ] } ], "source": [ "df = pd.DataFrame({'Turker': even_cleaner_df['T_ID'].tolist(),\n", " 'SENTIMENT': even_cleaner_df['sentiment'].tolist(),\n", " 'REVIEW': even_cleaner_df['ReviewID'].tolist() })\n", "\n", "grouped = df.groupby('Turker')\n", "values = grouped['REVIEW'].agg('sum')\n", "id_df = grouped['SENTIMENT'].apply(lambda x: pd.Series(x.values)).unstack()\n", "id_df = id_df.rename(columns={i: 'REVIEW{}'.format(i + 1) for i in range(id_df.shape[1])})\n", "result = pd.concat([id_df, values], axis=1)\n", "result_df = pd.DataFrame(result)\n", "print(result_df.T[:5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And turn it into a data frame cuz why not?!" ] }, { "cell_type": "code", "execution_count": 434, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(result_df.T)" ] }, { "cell_type": "code", "execution_count": 435, "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TurkerT_0T_1T_10T_11T_12T_13T_14T_15T_16T_17T_2T_3T_4T_5T_6T_7T_8T_9
REVIEW1NNPNNNNNNPNNNPNNNN
REVIEW2NNaNNNNNPNPNaNNNNNNNNP
REVIEW3NNaNPPNNNaNNaNPNaNNNNPPNNP
REVIEW4NNaNPPNPNaNNaNPNaNNNNNPNNP
REVIEW5NaNNaNNNPPNaNNaNNaNNaNNNNNPNPP
REVIEW6NaNNaNNNaNPNaNNaNNaNNaNNaNNNNPPNNN
REVIEW7NaNNaNNNaNNaNNaNNaNNaNNaNNaNNNNNPNNN
REVIEW8NaNNaNPNaNNaNNaNNaNNaNNaNNaNNNPPPPNN
REVIEW9NaNNaNNNaNNaNNaNNaNNaNNaNNaNNNNPPPNN
REVIEW10NaNNaNNNaNNaNNaNNaNNaNNaNNaNNNNNPPNN
REVIEW11NaNNaNNNaNNaNNaNNaNNaNNaNNaNNNNNNaNPNP
REVIEW12NaNNaNNNaNNaNNaNNaNNaNNaNNaNNNNNNaNPNP
REVIEW13NaNNaNNNaNNaNNaNNaNNaNNaNNaNPNNNNaNPNN
REVIEW14NaNNaNNNaNNaNNaNNaNNaNNaNNaNPNNNNaNPNP
REVIEW15NaNNaNPNaNNaNNaNNaNNaNNaNNaNPNNNNaNPPN
REVIEW16NaNNaNPNaNNaNNaNNaNNaNNaNNaNPNPPNaNPNN
REVIEW17NaNNaNPNaNNaNNaNNaNNaNNaNNaNPNPNNaNPNN
REVIEW18NaNNaNPNaNNaNNaNNaNNaNNaNNaNPNPNNaNPPN
REVIEW19NaNNaNPNaNNaNNaNNaNNaNNaNNaNNNPNNaNPPP
REVIEW20NaNNaNPNaNNaNNaNNaNNaNNaNNaNPNPNNaNPPN
REVIEW21NaNNaNPNaNNaNNaNNaNNaNNaNNaNPNPNNaNPPN
REVIEW22NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNNPPNaNPPP
REVIEW23NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPPPNaNNaNPN
REVIEW24NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPPNNaNNaNPN
REVIEW25NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPPPNaNNaNPN
REVIEW26NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPPPNaNNaNPN
REVIEW27NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPPPNaNNaNPN
REVIEW28NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPPPNaNNaNPP
REVIEW29NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPNaNNNaNNaNPN
REVIEW30NaNNaNNNaNNaNNaNNaNNaNNaNNaNNaNPNaNPNaNNaNPN
REVIEW31NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPNaNPNaNNaNPP
REVIEW32NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPNaNNNaNNaNPN
REVIEW33NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPNaNNNaNNaNPP
REVIEW34NaNNaNPNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNP
REVIEW35NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNN
REVIEW36NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNN
REVIEW37NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNP
REVIEW38NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW39NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW40NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW41NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW42NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNNaNNaNNaNNaNNaNNaN
REVIEW43NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW44NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW45NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW46NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNPNaNNaNNaNNaNNaNNaN
REVIEW990179730425425510412126156954217713421458597133916051536
\n", "
" ], "text/plain": [ "Turker T_0 T_1 T_10 T_11 T_12 T_13 T_14 T_15 T_16 T_17 T_2 T_3 T_4 \\\n", "REVIEW1 N N P N N N N N N P N N N \n", "REVIEW2 N NaN N N N N P N P NaN N N N \n", "REVIEW3 N NaN P P N N NaN NaN P NaN N N N \n", "REVIEW4 N NaN P P N P NaN NaN P NaN N N N \n", "REVIEW5 NaN NaN N N P P NaN NaN NaN NaN N N N \n", "REVIEW6 NaN NaN N NaN P NaN NaN NaN NaN NaN N N N \n", "REVIEW7 NaN NaN N NaN NaN NaN NaN NaN NaN NaN N N N \n", "REVIEW8 NaN NaN P NaN NaN NaN NaN NaN NaN NaN N N P \n", "REVIEW9 NaN NaN N NaN NaN NaN NaN NaN NaN NaN N N N \n", "REVIEW10 NaN NaN N NaN NaN NaN NaN NaN NaN NaN N N N \n", "REVIEW11 NaN NaN N NaN NaN NaN NaN NaN NaN NaN N N N \n", "REVIEW12 NaN NaN N NaN NaN NaN NaN NaN NaN NaN N N N \n", "REVIEW13 NaN NaN N NaN NaN NaN NaN NaN NaN NaN P N N \n", "REVIEW14 NaN NaN N NaN NaN NaN NaN NaN NaN NaN P N N \n", "REVIEW15 NaN NaN P NaN NaN NaN NaN NaN NaN NaN P N N \n", "REVIEW16 NaN NaN P NaN NaN NaN NaN NaN NaN NaN P N P \n", "REVIEW17 NaN NaN P NaN NaN NaN NaN NaN NaN NaN P N P \n", "REVIEW18 NaN NaN P NaN NaN NaN NaN NaN NaN NaN P N P \n", "REVIEW19 NaN NaN P NaN NaN NaN NaN NaN NaN NaN N N P \n", "REVIEW20 NaN NaN P NaN NaN NaN NaN NaN NaN NaN P N P \n", "REVIEW21 NaN NaN P NaN NaN NaN NaN NaN NaN NaN P N P \n", "REVIEW22 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN N P \n", "REVIEW23 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P P \n", "REVIEW24 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P P \n", "REVIEW25 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P P \n", "REVIEW26 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P P \n", "REVIEW27 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P P \n", "REVIEW28 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P P \n", "REVIEW29 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW30 NaN NaN N NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW31 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW32 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW33 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW34 NaN NaN P NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW35 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW36 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW37 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW38 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW39 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW40 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW41 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N NaN \n", "REVIEW43 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW44 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW45 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW46 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN P NaN \n", "REVIEW 99 0 1797 304 254 255 104 121 261 56 954 2177 1342 \n", "\n", "Turker T_5 T_6 T_7 T_8 T_9 \n", "REVIEW1 P N N N N \n", "REVIEW2 N N N N P \n", "REVIEW3 P P N N P \n", "REVIEW4 N P N N P \n", "REVIEW5 N P N P P \n", "REVIEW6 P P N N N \n", "REVIEW7 N P N N N \n", "REVIEW8 P P P N N \n", "REVIEW9 P P P N N \n", "REVIEW10 N P P N N \n", "REVIEW11 N NaN P N P \n", "REVIEW12 N NaN P N P \n", "REVIEW13 N NaN P N N \n", "REVIEW14 N NaN P N P \n", "REVIEW15 N NaN P P N \n", "REVIEW16 P NaN P N N \n", "REVIEW17 N NaN P N N \n", "REVIEW18 N NaN P P N \n", "REVIEW19 N NaN P P P \n", "REVIEW20 N NaN P P N \n", "REVIEW21 N NaN P P N \n", "REVIEW22 P NaN P P P \n", "REVIEW23 P NaN NaN P N \n", "REVIEW24 N NaN NaN P N \n", "REVIEW25 P NaN NaN P N \n", "REVIEW26 P NaN NaN P N \n", "REVIEW27 P NaN NaN P N \n", "REVIEW28 P NaN NaN P P \n", "REVIEW29 N NaN NaN P N \n", "REVIEW30 P NaN NaN P N \n", "REVIEW31 P NaN NaN P P \n", "REVIEW32 N NaN NaN P N \n", "REVIEW33 N NaN NaN P P \n", "REVIEW34 NaN NaN NaN NaN P \n", "REVIEW35 NaN NaN NaN NaN N \n", "REVIEW36 NaN NaN NaN NaN N \n", "REVIEW37 NaN NaN NaN NaN P \n", "REVIEW38 NaN NaN NaN NaN NaN \n", "REVIEW39 NaN NaN NaN NaN NaN \n", "REVIEW40 NaN NaN NaN NaN NaN \n", "REVIEW41 NaN NaN NaN NaN NaN \n", "REVIEW42 NaN NaN NaN NaN NaN \n", "REVIEW43 NaN NaN NaN NaN NaN \n", "REVIEW44 NaN NaN NaN NaN NaN \n", "REVIEW45 NaN NaN NaN NaN NaN \n", "REVIEW46 NaN NaN NaN NaN NaN \n", "REVIEW 1458 597 1339 1605 1536 " ] }, "execution_count": 435, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## That is obviously wrong because only THREE people commented on Review1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### ATTEMPT FUCKING 6:\n", "##### I ***clap emoji*** hate ***clap emoji*** everything ***clap emoji***" ] }, { "cell_type": "code", "execution_count": 436, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Turker T_0 T_1 T_10 T_11 T_12 T_13 T_14 T_15 T_16 T_17 T_2 T_3 T_4 T_5 T_6 \\\n", "REVIEW1 0 0 6 11 13 15 28 29 39 56 0 1 1 2 2 \n", "REVIEW2 11 NaN 8 47 25 19 76 92 58 NaN 1 3 7 3 31 \n", "REVIEW3 42 NaN 14 55 29 44 NaN NaN 70 NaN 8 4 9 4 50 \n", "REVIEW4 46 NaN 15 95 57 80 NaN NaN 94 NaN 10 5 12 5 51 \n", "REVIEW5 NaN NaN 18 96 59 97 NaN NaN NaN NaN 16 7 17 12 62 \n", "\n", "Turker T_7 T_8 T_9 \n", "REVIEW1 2 3 5 \n", "REVIEW2 8 4 6 \n", "REVIEW3 9 6 7 \n", "REVIEW4 24 12 9 \n", "REVIEW5 34 15 10 \n" ] } ], "source": [ "df = pd.DataFrame({'Turker': even_cleaner_df['T_ID'].tolist(),\n", " 'SENTIMENT': even_cleaner_df['ReviewID'].tolist(),\n", " 'REVIEW': even_cleaner_df['sentiment'].tolist() })\n", "\n", "grouped = df.groupby('Turker')\n", "values = grouped['REVIEW'].agg('sum')\n", "id_df = grouped['SENTIMENT'].apply(lambda x: pd.Series(x.values)).unstack()\n", "id_df = id_df.rename(columns={i: 'REVIEW{}'.format(i + 1) for i in range(id_df.shape[1])})\n", "result = pd.concat([id_df, values], axis=1)\n", "result_df = pd.DataFrame(result)\n", "print(result_df.T[:5])" ] }, { "cell_type": "code", "execution_count": 312, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(result_df.T)" ] }, { "cell_type": "code", "execution_count": 437, "metadata": {}, "outputs": [ { "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", "
TurkerSENTIMENTREVIEW
0T_00N
1T_10N
2T_20N
3T_31N
4T_21N
\n", "
" ], "text/plain": [ " Turker SENTIMENT REVIEW\n", "0 T_0 0 N\n", "1 T_1 0 N\n", "2 T_2 0 N\n", "3 T_3 1 N\n", "4 T_2 1 N" ] }, "execution_count": 437, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I want every review on the left side and I want all 46 turkers on the top" ] }, { "cell_type": "code", "execution_count": 319, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame({ 'review': even_cleaner_df['ReviewID']})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Attempt 7: After eating some food and having a calm down" ] }, { "cell_type": "code", "execution_count": 359, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 11, 42, 46]\n", "[0]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[11, 47, 55, 95, 96]\n", "[0, 11, 42, 46]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[13, 25, 29, 57, 59, 71]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[15, 19, 44, 80, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[15, 19, 44, 80, 97]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[13, 25, 29, 57, 59, 71]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[28, 76]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[29, 92]\n", "[13, 25, 29, 57, 59, 71]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[39, 58, 70, 94]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[0, 11, 42, 46]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[15, 19, 44, 80, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[0, 11, 42, 46]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[11, 47, 55, 95, 96]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[11, 47, 55, 95, 96]\n", "[56]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[13, 25, 29, 57, 59, 71]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[39, 58, 70, 94]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[13, 25, 29, 57, 59, 71]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[39, 58, 70, 94]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[13, 25, 29, 57, 59, 71]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[28, 76]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[15, 19, 44, 80, 97]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[5, 6, 7, 9, 10, 11, 13, 16, 17, 18, 21, 23, 25, 30, 32, 33, 35, 37, 38, 41, 44, 49, 52, 53, 54, 57, 65, 66, 67, 68, 69, 70, 71, 76, 81, 83, 84]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[2, 31, 50, 51, 62, 63, 74, 84, 89, 91]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[29, 92]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[0, 1, 8, 10, 16, 21, 27, 32, 36, 37, 45, 47, 50, 64, 66, 72, 75, 83, 85, 86, 93]\n", "[3, 4, 6, 12, 15, 18, 20, 24, 25, 27, 31, 32, 34, 37, 38, 40, 43, 59, 61, 62, 66, 67, 68, 72, 73, 76, 78, 79, 80, 81, 89, 92, 93]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[39, 58, 70, 94]\n", "[1, 3, 4, 5, 7, 10, 14, 16, 17, 19, 22, 23, 26, 28, 30, 34, 35, 36, 38, 40, 44, 46, 48, 49, 54, 55, 57, 58, 60, 61, 63, 64, 65, 70, 71, 73, 74, 75, 77, 79, 82, 85, 86, 88, 90, 95]\n", "[11, 47, 55, 95, 96]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[11, 47, 55, 95, 96]\n", "[2, 3, 4, 5, 12, 13, 14, 20, 22, 24, 26, 28, 31, 36, 39, 43, 45, 46, 48, 49, 52, 53, 54, 56, 58, 72, 75, 78, 85, 87, 88, 94, 96]\n", "[2, 8, 9, 24, 34, 39, 43, 51, 56, 60, 63, 64, 82, 83, 84, 86, 88, 89, 91, 92, 95, 96]\n", "[15, 19, 44, 80, 97]\n", "[1, 7, 9, 12, 17, 19, 27, 29, 30, 33, 40, 41, 42, 45, 47, 48, 50, 55, 61, 65, 69, 73, 77, 78, 87, 90, 93, 97]\n", "[6, 8, 14, 15, 18, 20, 21, 22, 23, 26, 33, 35, 41, 42, 51, 52, 53, 59, 60, 62, 67, 68, 69, 74, 77, 79, 80, 81, 82, 87, 90, 91, 94, 97]\n" ] } ], "source": [ "def get_array_of_reviews(turker, df):\n", " a = ['nan']*98\n", " df = even_cleaner_df[even_cleaner_df['T_ID'] == turker] \n", " t_reviews = df['ReviewID'].tolist()\n", " t_sentiment = df['sentiment'].tolist()\n", " for index,review in enumerate(t_reviews):\n", " a[review] = t_sentiment[index]\n", " print(t_reviews)\n", "\n", " return a\n", "\n", "sparse_df = even_cleaner_df.copy()\n", "sparse_df['big_array'] = sparse_df.apply(lambda x: get_array_of_reviews(x['T_ID'], even_cleaner_df), axis=1)\n", "# t0 = even_cleaner_df[even_cleaner_df['T_ID'] == 'T_0']" ] }, { "cell_type": "code", "execution_count": 360, "metadata": {}, "outputs": [ { "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", "
ReviewIDT_IDsentimentbig_array
00T_0N[N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ...
3411T_0N[N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ...
12642T_0N[N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ...
14046T_0N[N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ...
\n", "
" ], "text/plain": [ " ReviewID T_ID sentiment \\\n", "0 0 T_0 N \n", "34 11 T_0 N \n", "126 42 T_0 N \n", "140 46 T_0 N \n", "\n", " big_array \n", "0 [N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ... \n", "34 [N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ... \n", "126 [N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ... \n", "140 [N, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, N, 0, 0, 0, ... " ] }, "execution_count": 360, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t0" ] }, { "cell_type": "code", "execution_count": 361, "metadata": {}, "outputs": [ { "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", "
ReviewIDT_IDsentimentbig_array
00T_0N[N, nan, nan, nan, nan, nan, nan, nan, nan, na...
10T_1N[N, nan, nan, nan, nan, nan, nan, nan, nan, na...
20T_2N[N, N, nan, nan, nan, nan, nan, nan, N, nan, N...
31T_3N[nan, N, nan, N, N, N, nan, N, nan, nan, N, na...
41T_2N[N, N, nan, nan, nan, nan, nan, nan, N, nan, N...
...............
28996T_5N[nan, nan, P, N, P, N, nan, nan, nan, nan, nan...
29096T_7P[nan, nan, N, nan, nan, nan, nan, nan, N, N, n...
29197T_13P[nan, nan, nan, nan, nan, nan, nan, nan, nan, ...
29297T_4P[nan, N, nan, nan, nan, nan, nan, N, nan, N, n...
29397T_10P[nan, nan, nan, nan, nan, nan, P, nan, N, nan,...
\n", "

294 rows × 4 columns

\n", "
" ], "text/plain": [ " ReviewID T_ID sentiment \\\n", "0 0 T_0 N \n", "1 0 T_1 N \n", "2 0 T_2 N \n", "3 1 T_3 N \n", "4 1 T_2 N \n", ".. ... ... ... \n", "289 96 T_5 N \n", "290 96 T_7 P \n", "291 97 T_13 P \n", "292 97 T_4 P \n", "293 97 T_10 P \n", "\n", " big_array \n", "0 [N, nan, nan, nan, nan, nan, nan, nan, nan, na... \n", "1 [N, nan, nan, nan, nan, nan, nan, nan, nan, na... \n", "2 [N, N, nan, nan, nan, nan, nan, nan, N, nan, N... \n", "3 [nan, N, nan, N, N, N, nan, N, nan, nan, N, na... \n", "4 [N, N, nan, nan, nan, nan, nan, nan, N, nan, N... \n", ".. ... \n", "289 [nan, nan, P, N, P, N, nan, nan, nan, nan, nan... \n", "290 [nan, nan, N, nan, nan, nan, nan, nan, N, N, n... \n", "291 [nan, nan, nan, nan, nan, nan, nan, nan, nan, ... \n", "292 [nan, N, nan, nan, nan, nan, nan, N, nan, N, n... \n", "293 [nan, nan, nan, nan, nan, nan, P, nan, N, nan,... \n", "\n", "[294 rows x 4 columns]" ] }, "execution_count": 361, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sparse_df" ] }, { "cell_type": "code", "execution_count": 362, "metadata": {}, "outputs": [], "source": [ "t0 = sparse_df[sparse_df['T_ID'] == 'T_0']" ] }, { "cell_type": "code", "execution_count": 363, "metadata": {}, "outputs": [ { "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", "
ReviewIDT_IDsentimentbig_array
00T_0N[N, nan, nan, nan, nan, nan, nan, nan, nan, na...
3411T_0N[N, nan, nan, nan, nan, nan, nan, nan, nan, na...
12642T_0N[N, nan, nan, nan, nan, nan, nan, nan, nan, na...
14046T_0N[N, nan, nan, nan, nan, nan, nan, nan, nan, na...
\n", "
" ], "text/plain": [ " ReviewID T_ID sentiment \\\n", "0 0 T_0 N \n", "34 11 T_0 N \n", "126 42 T_0 N \n", "140 46 T_0 N \n", "\n", " big_array \n", "0 [N, nan, nan, nan, nan, nan, nan, nan, nan, na... \n", "34 [N, nan, nan, nan, nan, nan, nan, nan, nan, na... \n", "126 [N, nan, nan, nan, nan, nan, nan, nan, nan, na... \n", "140 [N, nan, nan, nan, nan, nan, nan, nan, nan, na... " ] }, "execution_count": 363, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t0" ] }, { "cell_type": "code", "execution_count": 365, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['T_0', 'T_1', 'T_2', 'T_3', 'T_4', 'T_5', 'T_6', 'T_7', 'T_8',\n", " 'T_9', 'T_10', 'T_11', 'T_12', 'T_13', 'T_14', 'T_15', 'T_16',\n", " 'T_17'], dtype=object)" ] }, "execution_count": 365, "metadata": {}, "output_type": "execute_result" } ], "source": [ "even_cleaner_df['T_ID'].unique()" ] }, { "cell_type": "code", "execution_count": 439, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['N', 'N', 'nan', 'nan', 'nan']" ] }, "execution_count": 439, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sparse_df['big_array'][sparse_df['T_ID'] == 'T_2'].tolist()[0][:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Finally Calculate the Kappa" ] }, { "cell_type": "code", "execution_count": 440, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.39004149377593356" ] }, "execution_count": 440, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y1 = sparse_df['big_array'][sparse_df['T_ID'] == 'T_0'].tolist()[0]\n", "y2 = sparse_df['big_array'][sparse_df['T_ID'] == 'T_1'].tolist()[0]\n", "cohen_kappa_score(y1,y2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### And calculate kappas for other combinations (but not all combinations)" ] }, { "cell_type": "code", "execution_count": 441, "metadata": {}, "outputs": [], "source": [ "def calculate_kappa(num):\n", " y1 = sparse_df['big_array'][sparse_df['T_ID'] == 'T_'+str(num)].tolist()[0]\n", " y2 = sparse_df['big_array'][sparse_df['T_ID'] == 'T_'+str(num + 1)].tolist()[0]\n", " return cohen_kappa_score(y1,y2)\n", "\n", "kappas = [calculate_kappa(num) for num in range(16)]" ] }, { "cell_type": "code", "execution_count": 442, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.39004149377593356,\n", " 0.07634307257304429,\n", " 0.023255813953488413,\n", " 0.11578947368421055,\n", " -0.10975609756097549,\n", " -0.04981253347616499,\n", " 0.29547088425593093,\n", " -0.02821170435999054,\n", " -0.01071003570011908,\n", " 0.005658536585365748,\n", " -0.06968933669185562,\n", " -0.04457364341085279,\n", " -0.04457364341085279,\n", " -0.02235469448584193,\n", " -0.015544041450777257,\n", " -0.01730103806228378]" ] }, "execution_count": 442, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kappas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Wonderful. More negative numbers. I love life. " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }