Skip to content
Snippets Groups Projects
Reconstruct_and_RoBERTa_baseline_train_dev_dataset.ipynb 332 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ella's avatar
    Ella committed
           "      <th>label</th>\n",
           "      <th>num_sentences_in_paragraph</th>\n",
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>0</th>\n",
           "      <td>4341</td>\n",
           "      <td>The scheme saw an estimated 150,000 children f...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
           "      <td>4136</td>\n",
           "      <td>Durban 's homeless communities reconciliation ...</td>\n",
           "      <td>1</td>\n",
           "      <td>1</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2</th>\n",
           "      <td>10352</td>\n",
           "      <td>The next immediate problem that cropped up was...</td>\n",
           "      <td>1</td>\n",
           "      <td>3</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>3</th>\n",
           "      <td>8279</td>\n",
           "      <td>Far more important than the implications for t...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>4</th>\n",
           "      <td>1164</td>\n",
           "      <td>To strengthen child-sensitive social protectio...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
    
    Emily Haw's avatar
    Emily Haw committed
          ],
    
    Ella's avatar
    Ella committed
          "text/plain": [
           "  par_id                                               text  label  \\\n",
           "0   4341  The scheme saw an estimated 150,000 children f...      1   \n",
           "1   4136  Durban 's homeless communities reconciliation ...      1   \n",
           "2  10352  The next immediate problem that cropped up was...      1   \n",
           "3   8279  Far more important than the implications for t...      1   \n",
           "4   1164  To strengthen child-sensitive social protectio...      1   \n",
           "\n",
           "   num_sentences_in_paragraph  \n",
           "0                           2  \n",
           "1                           1  \n",
           "2                           3  \n",
           "3                           2  \n",
           "4                           2  "
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 22,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "paragraphs = trdf1[\"text\"]\n",
        "\n",
        "trdf1[\"num_sentences_in_paragraph\"] = paragraphs.apply(lambda x: len(x.split(\".\")))\n",
        "\n",
        "trdf1.head()"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 23,
       "metadata": {},
       "outputs": [],
       "source": [
        "\n",
        "trdf1[\"readability_score\"] = trdf1[\"text\"].apply(lambda x: calculate_readability(x))"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 24,
       "metadata": {},
       "outputs": [],
       "source": [
        "def avg_sentence_length(para):\n",
        "    sentences = para.split(\".\")\n",
        "    s_len = [len(s.split(\" \")) for s in sentences]\n",
        "    return sum(s_len) / len(s_len)\n"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 25,
       "metadata": {},
       "outputs": [],
       "source": [
        "trdf1[\"avg_sentence_length\"] = paragraphs.apply(lambda x : avg_sentence_length(x))"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 26,
       "metadata": {},
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/plain": [
           "count    8375.000000\n",
           "mean        0.544217\n",
           "std         2.946594\n",
           "min         0.000000\n",
           "25%         0.000000\n",
           "50%         0.000000\n",
           "75%         0.000000\n",
           "max        67.778221\n",
           "Name: readability_score, dtype: float64"
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 26,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "trdf1[\"readability_score\"].describe()"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 27,
       "metadata": {},
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/html": [
           "<div>\n",
           "<style scoped>\n",
           "    .dataframe tbody tr th:only-of-type {\n",
           "        vertical-align: middle;\n",
           "    }\n",
           "\n",
           "    .dataframe tbody tr th {\n",
           "        vertical-align: top;\n",
           "    }\n",
           "\n",
           "    .dataframe thead th {\n",
           "        text-align: right;\n",
           "    }\n",
           "</style>\n",
           "<table border=\"1\" class=\"dataframe\">\n",
           "  <thead>\n",
           "    <tr style=\"text-align: right;\">\n",
           "      <th></th>\n",
           "      <th>par_id</th>\n",
           "      <th>text</th>\n",
           "      <th>label</th>\n",
           "      <th>num_sentences_in_paragraph</th>\n",
           "      <th>readability_score</th>\n",
           "      <th>avg_sentence_length</th>\n",
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>0</th>\n",
           "      <td>4341</td>\n",
           "      <td>The scheme saw an estimated 150,000 children f...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>18.500000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
           "      <td>4136</td>\n",
           "      <td>Durban 's homeless communities reconciliation ...</td>\n",
           "      <td>1</td>\n",
           "      <td>1</td>\n",
           "      <td>0.0</td>\n",
           "      <td>6.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2</th>\n",
           "      <td>10352</td>\n",
           "      <td>The next immediate problem that cropped up was...</td>\n",
           "      <td>1</td>\n",
           "      <td>3</td>\n",
           "      <td>0.0</td>\n",
           "      <td>24.666667</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>3</th>\n",
           "      <td>8279</td>\n",
           "      <td>Far more important than the implications for t...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>23.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>4</th>\n",
           "      <td>1164</td>\n",
           "      <td>To strengthen child-sensitive social protectio...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>25.000000</td>\n",
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
    
    Emily Haw's avatar
    Emily Haw committed
          ],
    
    Ella's avatar
    Ella committed
          "text/plain": [
           "  par_id                                               text  label  \\\n",
           "0   4341  The scheme saw an estimated 150,000 children f...      1   \n",
           "1   4136  Durban 's homeless communities reconciliation ...      1   \n",
           "2  10352  The next immediate problem that cropped up was...      1   \n",
           "3   8279  Far more important than the implications for t...      1   \n",
           "4   1164  To strengthen child-sensitive social protectio...      1   \n",
           "\n",
           "   num_sentences_in_paragraph  readability_score  avg_sentence_length  \n",
           "0                           2                0.0            18.500000  \n",
           "1                           1                0.0             6.000000  \n",
           "2                           3                0.0            24.666667  \n",
           "3                           2                0.0            23.000000  \n",
           "4                           2                0.0            25.000000  "
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 27,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "pat_sent = trdf1.loc[trdf1['label'] == 1]\n",
        "non_pat_sent = trdf1.loc[trdf1['label'] == 0]\n",
        "\n",
        "pat_sent.head()"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 28,
       "metadata": {},
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "INFO:matplotlib.font_manager:generated new fontManager\n"
         ]
        }
       ],
       "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 29,
       "metadata": {},
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "image/png": "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",
          "text/plain": [
           "<Figure size 720x576 with 2 Axes>"
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "fig, (ax1, ax2) = plt.subplots(nrows=2)\n",
        "ax1.hist(pat_sent[\"num_sentences_in_paragraph\"], bins=np.linspace(1, 21))\n",
        "ax1.xaxis.set_major_locator(plt.MultipleLocator(1))\n",
        "ax1.set_title(\"Number of sentences in patronising paragraph\")\n",
        "ax2.hist(non_pat_sent[\"num_sentences_in_paragraph\"], bins=np.linspace(1, 21))\n",
        "ax2.xaxis.set_major_locator(plt.MultipleLocator(1))\n",
        "ax2.set_title(\"Number of sentences in non-patronising paragraph\")\n",
        "fig.set_figwidth(10)\n",
        "fig.set_figheight(8)\n",
        "fig.tight_layout()\n",
        "plt.show()\n",
        "# ax.xaxis.set_major_locator()\n",
        "# pat_sent.hist(grid=False,column=\"num_sentences_in_paragraph\", bins=21, figsize=(10, 8), xticks=pat_sent[\"num_sentences_in_paragraph\"], ax=ax)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 30,
       "metadata": {},
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/html": [
           "<div>\n",
           "<style scoped>\n",
           "    .dataframe tbody tr th:only-of-type {\n",
           "        vertical-align: middle;\n",
           "    }\n",
           "\n",
           "    .dataframe tbody tr th {\n",
           "        vertical-align: top;\n",
           "    }\n",
           "\n",
           "    .dataframe thead th {\n",
           "        text-align: right;\n",
           "    }\n",
           "</style>\n",
           "<table border=\"1\" class=\"dataframe\">\n",
           "  <thead>\n",
           "    <tr style=\"text-align: right;\">\n",
           "      <th></th>\n",
           "      <th>par_id</th>\n",
           "      <th>text</th>\n",
           "      <th>label</th>\n",
           "      <th>num_sentences_in_paragraph</th>\n",
           "      <th>readability_score</th>\n",
           "      <th>avg_sentence_length</th>\n",
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>7590</th>\n",
           "      <td>7525</td>\n",
           "      <td>The Trawler : targets anyone with a Muslim con...</td>\n",
           "      <td>0</td>\n",
           "      <td>1</td>\n",
           "      <td>50.294912</td>\n",
           "      <td>133.0</td>\n",
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
    
    Emily Haw's avatar
    Emily Haw committed
          ],
    
    Ella's avatar
    Ella committed
          "text/plain": [
           "     par_id                                               text  label  \\\n",
           "7590   7525  The Trawler : targets anyone with a Muslim con...      0   \n",
           "\n",
           "      num_sentences_in_paragraph  readability_score  avg_sentence_length  \n",
           "7590                           1          50.294912                133.0  "
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 30,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "trdf1[trdf1[\"avg_sentence_length\"] == 133]"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 31,
       "metadata": {},
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "image/png": "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",
          "text/plain": [
           "<Figure size 1080x576 with 2 Axes>"
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "fig, (ax1, ax2) = plt.subplots(nrows=2)\n",
        "ax1.hist(pat_sent[\"avg_sentence_length\"], bins=np.arange(1, 60))\n",
        "ax1.xaxis.set_major_locator(plt.MultipleLocator(5))\n",
        "ax1.set_title(\"Number of sentences in patronising paragraph\")\n",
        "ax2.hist(non_pat_sent[\"avg_sentence_length\"], bins=np.arange(1, 60))\n",
        "ax2.xaxis.set_major_locator(plt.MultipleLocator(5))\n",
        "# ax2.set_title(\"Number of sentences in non-patronising paragraph\")\n",
        "fig.set_figwidth(15)\n",
        "fig.set_figheight(8)\n",
        "fig.tight_layout()\n",
        "plt.show()"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "### Synonym replacement"
       ]
      },
      {
       "cell_type": "code",
       "metadata": {
        "pycharm": {
         "name": "#%%\n"
        }
       },
       "source": [
        "!pip install nltk\n",
        "import nltk\n",
        "nltk.download('wordnet')"
       ],
       "execution_count": null,
       "outputs": []
      },
      {
       "cell_type": "code",
       "execution_count": 33,
       "metadata": {},
       "outputs": [],
       "source": [
        "from nltk.corpus import wordnet\n",
        "\n",
        "def get_synonyms(word):\n",
        "    synonyms = set()\n",
        "    for syn in wordnet.synsets(word): \n",
        "        for l in syn.lemmas(): \n",
        "            synonym = l.name().replace(\"_\", \" \").replace(\"-\", \" \").lower()\n",
        "            synonym = \"\".join([char for char in synonym if char in ' qwertyuiopasdfghjklzxcvbnm'])\n",
        "            synonyms.add(synonym) \n",
        "    \n",
        "    if word in synonyms:\n",
        "        synonyms.remove(word)\n",
        "    \n",
        "    return list(synonyms)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 59,
       "metadata": {},
       "outputs": [],
       "source": [
        "import random\n",
        "\n",
        "def synonym_replacement(text):\n",
        "    sentences = text.split(\".\")\n",
        "    new_sentences = []\n",
        "    for sent in sentences:\n",
        "        words = sent.split(' ')\n",
        "        synonyms = list(map(lambda w: get_synonyms(w), words))\n",
        "        non_empty_synonyms_indices = [i for i, arr in enumerate(synonyms) if len(arr) != 0]\n",
        "        indices = random.sample(non_empty_synonyms_indices, random.randint(0, len(non_empty_synonyms_indices)))\n",
        "        for i in indices:\n",
        "            words[i] = random.choice(synonyms[i])\n",
        "        new_sentences.append(' '.join(words))\n",
        "    return '.'.join(new_sentences)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 62,
       "metadata": {},
       "outputs": [],
       "source": [
        "trdf1_synonym = trdf1.copy()\n",
        "for _ in range(9):\n",
        "    pat_sent_synonym = trdf1.loc[trdf1['label'] == 1].copy()\n",
        "    pat_sent_synonym['text'] = pat_sent_synonym['text'].apply(lambda x: synonym_replacement(x))\n",
        "    trdf1_synonym = pd.concat([trdf1_synonym, pat_sent_synonym], ignore_index=True)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 65,
       "metadata": {},
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/plain": [
           "1    7940\n",
           "0    7581\n",
           "Name: label, dtype: int64"
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 65,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "trdf1_synonym['label'].value_counts()"
       ]
      },
      {
       "cell_type": "markdown",
       "source": [
        "## Translation"
       ],
       "metadata": {
        "collapsed": false
       }
      },
      {
       "cell_type": "code",
       "execution_count": 64,
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "es\n",
          "it\n",
          "ta\n",
          "eo\n",
          "ga\n",
          "sv\n",
          "eo\n",
          "I will keep my anger as long as I can, but I will pour out my wrath on you like a thousand waves! Stay out, you bastard! Leave me alone! Start a car? This car is a finished car! Abduction of the gods! God now! I am free, and my anger knows no bounds!\n"
         ]
        }
       ],
       "source": [
        "# import googletrans\n",
        "import random\n",
        "# import translate\n",
        "import deep_translator\n",
        "\n",
        "def translate(source_text):\n",
        "    language_opts = ['fr', 'es', 'da', 'eo', 'ht', 'ga', 'it', 'no', 'ru', 'sv', 'tr', 'ts', 'ta', 'sq', 'be', 'bg', 'nl'] # change to restrict language choices\n",
        "    # print(language_opts)\n",
        "    from_lang = 'en'\n",
        "    to_lang = random.choice(list(language_opts))\n",
        "    # to_lang='ta'\n",
        "    print(to_lang)\n",
        "    translator_to = deep_translator.GoogleTranslator(source=from_lang, target=to_lang)\n",
        "    translator_from = deep_translator.GoogleTranslator(source=to_lang, target=from_lang)\n",
        "    translated_sent = translator_to.translate(source_text)\n",
        "    retranslated_sent = translator_from.translate(translated_sent)\n",
        "    return retranslated_sent\n",
        "\n",
        "sent = \"This is a simple, yet powerful command line translator with google translate behind it. You can also use it as a Python module in your code. \"\n",
        "\n",
        "for _ in range(7):\n",
        "    sent = translate(sent)\n",
        "print(sent)"
       ],
       "metadata": {
        "collapsed": false,
        "pycharm": {
         "name": "#%%\n"
        }
       }
      },
      {
       "cell_type": "markdown",
       "source": [],
       "metadata": {
        "collapsed": false
       }
      },
      {
       "cell_type": "markdown",
       "source": [],
       "metadata": {
        "collapsed": false
       }
      },
      {
       "cell_type": "markdown",
       "metadata": {
        "id": "O1KGYmpnxDjt"
       },
       "source": [
        "# Rebuild test set (Task 1)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 66,
       "metadata": {
        "id": "T6FLgB6KxGI2"
       },
       "outputs": [],
       "source": [
        "rows = [] # will contain par_id, label and text\n",
        "for idx in range(len(teids)):  \n",
        "  parid = teids.par_id[idx]\n",
        "  #print(parid)\n",
        "  # select row from original dataset\n",
        "  text = dpm.train_task1_df.loc[dpm.train_task1_df.par_id == parid].text.values[0]\n",
        "  label = dpm.train_task1_df.loc[dpm.train_task1_df.par_id == parid].label.values[0]\n",
        "  rows.append({\n",
        "      'par_id':parid,\n",
        "      'text':text,\n",
        "      'label':label\n",
        "  })\n",
        "  "
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 67,
       "metadata": {
        "colab": {
         "base_uri": "https://localhost:8080/"
    
    Emily Haw's avatar
    Emily Haw committed
        },
    
    Ella's avatar
    Ella committed
        "id": "YbB9GdzJxRAH",
        "outputId": "c78e311e-9502-4644-b6f7-0c64f64aa66f"
       },
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/plain": [
           "2094"
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 67,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "len(rows)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 68,
       "metadata": {
        "id": "vhBhTRIyxSaQ"
       },
       "outputs": [],
       "source": [
        "tedf1 = pd.DataFrame(rows)"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {
        "id": "xK6FY70KZ6TY"
       },
       "source": [
        "# RoBERTa Baseline for Task 1"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 69,
       "metadata": {
        "colab": {
         "base_uri": "https://localhost:8080/"
    
    Emily Haw's avatar
    Emily Haw committed
        },
    
    Ella's avatar
    Ella committed
        "id": "Z-pvjbu_8h1n",
        "outputId": "0a9da7ae-181c-40a5-a438-220f5ab960b5"
       },
       "outputs": [],
       "source": [
        "# downsample negative instances\n",
        "pcldf = trdf1[trdf1.label==1]\n",
        "npos = len(pcldf)\n",
        "\n",
        "training_set1 = pd.concat([pcldf,trdf1[trdf1.label==0][:npos*2]])"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 70,
       "metadata": {
        "colab": {
         "base_uri": "https://localhost:8080/",
         "height": 422
    
    Emily Haw's avatar
    Emily Haw committed
        },
    
    Ella's avatar
    Ella committed
        "id": "mpSqMp3d8iYu",
        "outputId": "037d4f45-eab5-4f04-e9a5-1aa64c46323d"
       },
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/html": [
           "<div>\n",
           "<style scoped>\n",
           "    .dataframe tbody tr th:only-of-type {\n",
           "        vertical-align: middle;\n",
           "    }\n",
           "\n",
           "    .dataframe tbody tr th {\n",
           "        vertical-align: top;\n",
           "    }\n",
           "\n",
           "    .dataframe thead th {\n",
           "        text-align: right;\n",
           "    }\n",
           "</style>\n",
           "<table border=\"1\" class=\"dataframe\">\n",
           "  <thead>\n",
           "    <tr style=\"text-align: right;\">\n",
           "      <th></th>\n",
           "      <th>par_id</th>\n",
           "      <th>text</th>\n",
           "      <th>label</th>\n",
           "      <th>num_sentences_in_paragraph</th>\n",
           "      <th>readability_score</th>\n",
           "      <th>avg_sentence_length</th>\n",
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>0</th>\n",
           "      <td>4341</td>\n",
           "      <td>The scheme saw an estimated 150,000 children f...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>18.500000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
           "      <td>4136</td>\n",
           "      <td>Durban 's homeless communities reconciliation ...</td>\n",
           "      <td>1</td>\n",
           "      <td>1</td>\n",
           "      <td>0.0</td>\n",
           "      <td>6.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2</th>\n",
           "      <td>10352</td>\n",
           "      <td>The next immediate problem that cropped up was...</td>\n",
           "      <td>1</td>\n",
           "      <td>3</td>\n",
           "      <td>0.0</td>\n",
           "      <td>24.666667</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>3</th>\n",
           "      <td>8279</td>\n",
           "      <td>Far more important than the implications for t...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>23.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>4</th>\n",
           "      <td>1164</td>\n",
           "      <td>To strengthen child-sensitive social protectio...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>25.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>...</th>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2377</th>\n",
           "      <td>1775</td>\n",
           "      <td>Last but not the least element of culpability ...</td>\n",
           "      <td>0</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>12.500000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2378</th>\n",
           "      <td>1776</td>\n",
           "      <td>Then , taking the art of counter-intuitive non...</td>\n",
           "      <td>0</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>23.500000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2379</th>\n",
           "      <td>1777</td>\n",
           "      <td>Kagunga village was reported to lack necessary...</td>\n",
           "      <td>0</td>\n",
           "      <td>3</td>\n",
           "      <td>0.0</td>\n",
           "      <td>13.333333</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2380</th>\n",
           "      <td>1778</td>\n",
           "      <td>\"After her parents high-profile divorce after ...</td>\n",
           "      <td>0</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>38.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2381</th>\n",
           "      <td>1779</td>\n",
           "      <td>\"Last night One News reported on leaked Minist...</td>\n",
           "      <td>0</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>20.500000</td>\n",
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "<p>2382 rows × 6 columns</p>\n",
           "</div>"
    
    Emily Haw's avatar
    Emily Haw committed
          ],
    
    Ella's avatar
    Ella committed
          "text/plain": [
           "     par_id                                               text  label  \\\n",
           "0      4341  The scheme saw an estimated 150,000 children f...      1   \n",
           "1      4136  Durban 's homeless communities reconciliation ...      1   \n",
           "2     10352  The next immediate problem that cropped up was...      1   \n",
           "3      8279  Far more important than the implications for t...      1   \n",
           "4      1164  To strengthen child-sensitive social protectio...      1   \n",
           "...     ...                                                ...    ...   \n",
           "2377   1775  Last but not the least element of culpability ...      0   \n",
           "2378   1776  Then , taking the art of counter-intuitive non...      0   \n",
           "2379   1777  Kagunga village was reported to lack necessary...      0   \n",
           "2380   1778  \"After her parents high-profile divorce after ...      0   \n",
           "2381   1779  \"Last night One News reported on leaked Minist...      0   \n",
           "\n",
           "      num_sentences_in_paragraph  readability_score  avg_sentence_length  \n",
           "0                              2                0.0            18.500000  \n",
           "1                              1                0.0             6.000000  \n",
           "2                              3                0.0            24.666667  \n",
           "3                              2                0.0            23.000000  \n",
           "4                              2                0.0            25.000000  \n",
           "...                          ...                ...                  ...  \n",
           "2377                           2                0.0            12.500000  \n",
           "2378                           2                0.0            23.500000  \n",
           "2379                           3                0.0            13.333333  \n",
           "2380                           2                0.0            38.000000  \n",
           "2381                           2                0.0            20.500000  \n",
           "\n",
           "[2382 rows x 6 columns]"
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 70,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "training_set1"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": [
        "## Normal training\n",
        "task1_model_args = ClassificationArgs(num_train_epochs=1, \n",
        "                                      no_save=True, \n",
        "                                      no_cache=True, \n",
        "                                      overwrite_output_dir=True)\n",
        "task1_model = ClassificationModel(\"roberta\", \n",
        "                                  'roberta-base', \n",
        "                                  args = task1_model_args, \n",
        "                                  num_labels=2, \n",
        "                                  use_cuda=cuda_available)\n",
        "# train model\n",
        "task1_model.train_model(training_set1[['text', 'label']])\n",
        "# run predictions\n",
        "preds_task1, _ = task1_model.predict(tedf1.text.tolist())"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": null,
       "metadata": {
        "colab": {
         "base_uri": "https://localhost:8080/"
    
    Emily Haw's avatar
    Emily Haw committed
        },
    
    Ella's avatar
    Ella committed
        "id": "h5oxHt2R6t2I",
        "outputId": "27505e5d-896b-4d63-dc53-905cc34d7fd2"
       },
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/plain": [
           "Counter({0: 1651, 1: 443})"
    
    Emily Haw's avatar
    Emily Haw committed
          ]
    
    Ella's avatar
    Ella committed
         },
         "execution_count": 22,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "Counter(preds_task1)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": [
        "labels2file([[k] for k in preds_task1], 'task1.txt')"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "### Train with synonym replacement"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 72,
       "metadata": {},
       "outputs": [
    
    Emily Haw's avatar
    Emily Haw committed
        {
    
    Ella's avatar
    Ella committed
         "data": {
          "text/html": [
           "<div>\n",
           "<style scoped>\n",
           "    .dataframe tbody tr th:only-of-type {\n",
           "        vertical-align: middle;\n",
           "    }\n",
           "\n",
           "    .dataframe tbody tr th {\n",
           "        vertical-align: top;\n",
           "    }\n",
           "\n",
           "    .dataframe thead th {\n",
           "        text-align: right;\n",
           "    }\n",
           "</style>\n",
           "<table border=\"1\" class=\"dataframe\">\n",
           "  <thead>\n",
           "    <tr style=\"text-align: right;\">\n",
           "      <th></th>\n",
           "      <th>par_id</th>\n",
           "      <th>text</th>\n",
           "      <th>label</th>\n",
           "      <th>num_sentences_in_paragraph</th>\n",
           "      <th>readability_score</th>\n",
           "      <th>avg_sentence_length</th>\n",
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>0</th>\n",
           "      <td>4341</td>\n",
           "      <td>The scheme saw an estimated 150,000 children f...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>18.500000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>1</th>\n",
           "      <td>4136</td>\n",
           "      <td>Durban 's homeless communities reconciliation ...</td>\n",
           "      <td>1</td>\n",
           "      <td>1</td>\n",
           "      <td>0.0</td>\n",
           "      <td>6.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>2</th>\n",
           "      <td>10352</td>\n",
           "      <td>The next immediate problem that cropped up was...</td>\n",
           "      <td>1</td>\n",
           "      <td>3</td>\n",
           "      <td>0.0</td>\n",
           "      <td>24.666667</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>3</th>\n",
           "      <td>8279</td>\n",
           "      <td>Far more important than the implications for t...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>23.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>4</th>\n",
           "      <td>1164</td>\n",
           "      <td>To strengthen child-sensitive social protectio...</td>\n",
           "      <td>1</td>\n",
           "      <td>2</td>\n",
           "      <td>0.0</td>\n",
           "      <td>25.000000</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>...</th>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",
           "      <td>...</td>\n",