{ "cells": [ { "cell_type": "code", "execution_count": 2, "id": "a940b50d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python Platform: macOS-13.4-arm64-arm-64bit\n", "Tensor Flow Version: 2.12.0\n", "Keras Version: 2.12.0\n", "\n", "Python 3.10.9 (main, Mar 1 2023, 12:20:14) [Clang 14.0.6 ]\n", "Pandas 2.0.3\n", "Scikit-Learn 1.3.0\n", "SciPy 1.11.1\n", "GPU is available\n" ] } ], "source": [ "import sys\n", "import tensorflow.keras\n", "import pandas as pd\n", "import sklearn as sk\n", "import scipy as sp\n", "import tensorflow as tf\n", "import platform\n", "print(f\"Python Platform: {platform.platform()}\")\n", "print(f\"Tensor Flow Version: {tf.__version__}\")\n", "print(f\"Keras Version: {tensorflow.keras.__version__}\")\n", "print()\n", "print(f\"Python {sys.version}\")\n", "print(f\"Pandas {pd.__version__}\")\n", "print(f\"Scikit-Learn {sk.__version__}\")\n", "print(f\"SciPy {sp.__version__}\")\n", "gpu = len(tf.config.list_physical_devices('GPU'))>0\n", "print(\"GPU is\", \"available\" if gpu else \"NOT AVAILABLE\")" ] }, { "cell_type": "markdown", "id": "ca1dbcff", "metadata": {}, "source": [ "**Based on the paper** :https://arxiv.org/pdf/1612.05251.pdf:\n", " *2017 paper PubMed 200k RCT: a Dataset for Sequenctial Sentence Classification in Medical Abstracts.*" ] }, { "cell_type": "code", "execution_count": 5, "id": "865602b3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fatal: destination path 'pubmed-rct' already exists and is not an empty directory.\n", "\u001b[34mPubMed_200k_RCT\u001b[m\u001b[m\n", "\u001b[34mPubMed_200k_RCT_numbers_replaced_with_at_sign\u001b[m\u001b[m\n", "\u001b[34mPubMed_20k_RCT\u001b[m\u001b[m\n", "\u001b[34mPubMed_20k_RCT_numbers_replaced_with_at_sign\u001b[m\u001b[m\n", "README.md\n", "helper_functions.py\n" ] } ], "source": [ "!git clone https://github.com/Franck-Dernoncourt/pubmed-rct.git\n", "!ls pubmed-rct" ] }, { "cell_type": "code", "execution_count": 6, "id": "49999d88", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dev.txt test.txt train.txt train.zip\r\n" ] } ], "source": [ "!ls pubmed-rct/PubMed_200k_RCT_numbers_replaced_with_at_sign/" ] }, { "cell_type": "code", "execution_count": 8, "id": "0eb48880", "metadata": {}, "outputs": [], "source": [ "data_dir=\"pubmed-rct/PubMed_20k_RCT_numbers_replaced_with_at_sign/\"" ] }, { "cell_type": "code", "execution_count": 9, "id": "0ea6b9e4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['pubmed-rct/PubMed_20k_RCT_numbers_replaced_with_at_sign/dev.txt',\n", " 'pubmed-rct/PubMed_20k_RCT_numbers_replaced_with_at_sign/train.txt',\n", " 'pubmed-rct/PubMed_20k_RCT_numbers_replaced_with_at_sign/test.txt']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "filenames= [data_dir+ filename for filename in os.listdir(data_dir)]\n", "filenames" ] }, { "cell_type": "code", "execution_count": 10, "id": "4e578219", "metadata": {}, "outputs": [], "source": [ "def get_lines(filename):\n", " with open(filename) as f:\n", " return f.readlines()" ] }, { "cell_type": "code", "execution_count": 11, "id": "2a709290", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['###24293578\\n',\n", " 'OBJECTIVE\\tTo investigate the efficacy of @ weeks of daily low-dose oral prednisolone in improving pain , mobility , and systemic low-grade inflammation in the short term and whether the effect would be sustained at @ weeks in older adults with moderate to severe knee osteoarthritis ( OA ) .\\n',\n", " 'METHODS\\tA total of @ patients with primary knee OA were randomized @:@ ; @ received @ mg/day of prednisolone and @ received placebo for @ weeks .\\n',\n", " 'METHODS\\tOutcome measures included pain reduction and improvement in function scores and systemic inflammation markers .\\n',\n", " 'METHODS\\tPain was assessed using the visual analog pain scale ( @-@ mm ) .\\n',\n", " 'METHODS\\tSecondary outcome measures included the Western Ontario and McMaster Universities Osteoarthritis Index scores , patient global assessment ( PGA ) of the severity of knee OA , and @-min walk distance ( @MWD ) .\\n',\n", " 'METHODS\\tSerum levels of interleukin @ ( IL-@ ) , IL-@ , tumor necrosis factor ( TNF ) - , and high-sensitivity C-reactive protein ( hsCRP ) were measured .\\n',\n", " 'RESULTS\\tThere was a clinically relevant reduction in the intervention group compared to the placebo group for knee pain , physical function , PGA , and @MWD at @ weeks .\\n',\n", " 'RESULTS\\tThe mean difference between treatment arms ( @ % CI ) was @ ( @-@ @ ) , p < @ ; @ ( @-@ @ ) , p < @ ; @ ( @-@ @ ) , p < @ ; and @ ( @-@ @ ) , p < @ , respectively .\\n',\n", " 'RESULTS\\tFurther , there was a clinically relevant reduction in the serum levels of IL-@ , IL-@ , TNF - , and hsCRP at @ weeks in the intervention group when compared to the placebo group .\\n',\n", " 'RESULTS\\tThese differences remained significant at @ weeks .\\n',\n", " 'RESULTS\\tThe Outcome Measures in Rheumatology Clinical Trials-Osteoarthritis Research Society International responder rate was @ % in the intervention group and @ % in the placebo group ( p < @ ) .\\n',\n", " 'CONCLUSIONS\\tLow-dose oral prednisolone had both a short-term and a longer sustained effect resulting in less knee pain , better physical function , and attenuation of systemic inflammation in older patients with knee OA ( ClinicalTrials.gov identifier NCT@ ) .\\n',\n", " '\\n',\n", " '###24854809\\n',\n", " 'BACKGROUND\\tEmotional eating is associated with overeating and the development of obesity .\\n',\n", " 'BACKGROUND\\tYet , empirical evidence for individual ( trait ) differences in emotional eating and cognitive mechanisms that contribute to eating during sad mood remain equivocal .\\n',\n", " 'OBJECTIVE\\tThe aim of this study was to test if attention bias for food moderates the effect of self-reported emotional eating during sad mood ( vs neutral mood ) on actual food intake .\\n',\n", " 'OBJECTIVE\\tIt was expected that emotional eating is predictive of elevated attention for food and higher food intake after an experimentally induced sad mood and that attentional maintenance on food predicts food intake during a sad versus a neutral mood .\\n',\n", " 'METHODS\\tParticipants ( N = @ ) were randomly assigned to one of the two experimental mood induction conditions ( sad/neutral ) .\\n']" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_lines=get_lines(data_dir+'train.txt')\n", "train_lines[:20]" ] }, { "cell_type": "code", "execution_count": 12, "id": "c870e8a5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "210040" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(train_lines)" ] }, { "cell_type": "markdown", "id": "6828c4df", "metadata": {}, "source": [ "# Data Representation\n", "\n", "[{ line number:0\n", " text:\n", " target:Background\n", " total_lines:11\n", " }]" ] }, { "cell_type": "code", "execution_count": 13, "id": "fd07d2de", "metadata": {}, "outputs": [], "source": [ "def pre_processing_data(filename):\n", " input_lines=get_lines(filename)\n", " abstract_lines=\"\"\n", " abstract_samples=[]\n", " \n", " for line in input_lines:\n", " if line.startswith(\"###\"):\n", " abstract_id=line\n", " abstract_lines=\"\"\n", " elif line.isspace():\n", " abstract_line_split=abstract_lines.splitlines()\n", " for abstract_line_number,abstract_line in enumerate(abstract_line_split):\n", " line_data={}\n", " target_split=abstract_line.split(\"\\t\")\n", " line_data[\"target\"]=target_split[0]\n", " line_data[\"text\"]=target_split[1].lower()\n", " line_data[\"line_number\"]=abstract_line_number\n", " line_data[\"total_lines\"]=len(abstract_line_split)-1\n", " abstract_samples.append(line_data)\n", " else:\n", " abstract_lines+=line\n", " return abstract_samples" ] }, { "cell_type": "code", "execution_count": 14, "id": "076e7b10", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 301 ms, sys: 47.9 ms, total: 349 ms\n", "Wall time: 359 ms\n" ] } ], "source": [ "%%time\n", "train_samples= pre_processing_data(data_dir+\"train.txt\")\n", "val_samples=pre_processing_data(data_dir+\"dev.txt\")\n", "test_samples=pre_processing_data(data_dir+\"test.txt\")" ] }, { "cell_type": "code", "execution_count": 15, "id": "5c234a1e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'target': 'OBJECTIVE',\n", " 'text': 'to investigate the efficacy of @ weeks of daily low-dose oral prednisolone in improving pain , mobility , and systemic low-grade inflammation in the short term and whether the effect would be sustained at @ weeks in older adults with moderate to severe knee osteoarthritis ( oa ) .',\n", " 'line_number': 0,\n", " 'total_lines': 11},\n", " {'target': 'METHODS',\n", " 'text': 'a total of @ patients with primary knee oa were randomized @:@ ; @ received @ mg/day of prednisolone and @ received placebo for @ weeks .',\n", " 'line_number': 1,\n", " 'total_lines': 11},\n", " {'target': 'METHODS',\n", " 'text': 'outcome measures included pain reduction and improvement in function scores and systemic inflammation markers .',\n", " 'line_number': 2,\n", " 'total_lines': 11},\n", " {'target': 'METHODS',\n", " 'text': 'pain was assessed using the visual analog pain scale ( @-@ mm ) .',\n", " 'line_number': 3,\n", " 'total_lines': 11},\n", " {'target': 'METHODS',\n", " 'text': 'secondary outcome measures included the western ontario and mcmaster universities osteoarthritis index scores , patient global assessment ( pga ) of the severity of knee oa , and @-min walk distance ( @mwd ) .',\n", " 'line_number': 4,\n", " 'total_lines': 11},\n", " {'target': 'METHODS',\n", " 'text': 'serum levels of interleukin @ ( il-@ ) , il-@ , tumor necrosis factor ( tnf ) - , and high-sensitivity c-reactive protein ( hscrp ) were measured .',\n", " 'line_number': 5,\n", " 'total_lines': 11},\n", " {'target': 'RESULTS',\n", " 'text': 'there was a clinically relevant reduction in the intervention group compared to the placebo group for knee pain , physical function , pga , and @mwd at @ weeks .',\n", " 'line_number': 6,\n", " 'total_lines': 11},\n", " {'target': 'RESULTS',\n", " 'text': 'the mean difference between treatment arms ( @ % ci ) was @ ( @-@ @ ) , p < @ ; @ ( @-@ @ ) , p < @ ; @ ( @-@ @ ) , p < @ ; and @ ( @-@ @ ) , p < @ , respectively .',\n", " 'line_number': 7,\n", " 'total_lines': 11},\n", " {'target': 'RESULTS',\n", " 'text': 'further , there was a clinically relevant reduction in the serum levels of il-@ , il-@ , tnf - , and hscrp at @ weeks in the intervention group when compared to the placebo group .',\n", " 'line_number': 8,\n", " 'total_lines': 11},\n", " {'target': 'RESULTS',\n", " 'text': 'these differences remained significant at @ weeks .',\n", " 'line_number': 9,\n", " 'total_lines': 11},\n", " {'target': 'RESULTS',\n", " 'text': 'the outcome measures in rheumatology clinical trials-osteoarthritis research society international responder rate was @ % in the intervention group and @ % in the placebo group ( p < @ ) .',\n", " 'line_number': 10,\n", " 'total_lines': 11},\n", " {'target': 'CONCLUSIONS',\n", " 'text': 'low-dose oral prednisolone had both a short-term and a longer sustained effect resulting in less knee pain , better physical function , and attenuation of systemic inflammation in older patients with knee oa ( clinicaltrials.gov identifier nct@ ) .',\n", " 'line_number': 11,\n", " 'total_lines': 11},\n", " {'target': 'BACKGROUND',\n", " 'text': 'emotional eating is associated with overeating and the development of obesity .',\n", " 'line_number': 0,\n", " 'total_lines': 10},\n", " {'target': 'BACKGROUND',\n", " 'text': 'yet , empirical evidence for individual ( trait ) differences in emotional eating and cognitive mechanisms that contribute to eating during sad mood remain equivocal .',\n", " 'line_number': 1,\n", " 'total_lines': 10}]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_samples[:14]" ] }, { "cell_type": "code", "execution_count": 16, "id": "bffbe3ea", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "train_df=pd.DataFrame(train_samples)\n", "val_df=pd.DataFrame(val_samples)\n", "test_df=pd.DataFrame(test_samples)" ] }, { "cell_type": "code", "execution_count": 17, "id": "b9d2b25f", "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", "
targettextline_numbertotal_lines
0OBJECTIVEto investigate the efficacy of @ weeks of dail...011
1METHODSa total of @ patients with primary knee oa wer...111
2METHODSoutcome measures included pain reduction and i...211
3METHODSpain was assessed using the visual analog pain...311
4METHODSsecondary outcome measures included the wester...411
5METHODSserum levels of interleukin @ ( il-@ ) , il-@ ...511
6RESULTSthere was a clinically relevant reduction in t...611
7RESULTSthe mean difference between treatment arms ( @...711
8RESULTSfurther , there was a clinically relevant redu...811
9RESULTSthese differences remained significant at @ we...911
10RESULTSthe outcome measures in rheumatology clinical ...1011
11CONCLUSIONSlow-dose oral prednisolone had both a short-te...1111
12BACKGROUNDemotional eating is associated with overeating...010
13BACKGROUNDyet , empirical evidence for individual ( trai...110
\n", "
" ], "text/plain": [ " target text \\\n", "0 OBJECTIVE to investigate the efficacy of @ weeks of dail... \n", "1 METHODS a total of @ patients with primary knee oa wer... \n", "2 METHODS outcome measures included pain reduction and i... \n", "3 METHODS pain was assessed using the visual analog pain... \n", "4 METHODS secondary outcome measures included the wester... \n", "5 METHODS serum levels of interleukin @ ( il-@ ) , il-@ ... \n", "6 RESULTS there was a clinically relevant reduction in t... \n", "7 RESULTS the mean difference between treatment arms ( @... \n", "8 RESULTS further , there was a clinically relevant redu... \n", "9 RESULTS these differences remained significant at @ we... \n", "10 RESULTS the outcome measures in rheumatology clinical ... \n", "11 CONCLUSIONS low-dose oral prednisolone had both a short-te... \n", "12 BACKGROUND emotional eating is associated with overeating... \n", "13 BACKGROUND yet , empirical evidence for individual ( trai... \n", "\n", " line_number total_lines \n", "0 0 11 \n", "1 1 11 \n", "2 2 11 \n", "3 3 11 \n", "4 4 11 \n", "5 5 11 \n", "6 6 11 \n", "7 7 11 \n", "8 8 11 \n", "9 9 11 \n", "10 10 11 \n", "11 11 11 \n", "12 0 10 \n", "13 1 10 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head(14)" ] }, { "cell_type": "code", "execution_count": 18, "id": "c2a36602", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "target\n", "METHODS 59353\n", "RESULTS 57953\n", "CONCLUSIONS 27168\n", "BACKGROUND 21727\n", "OBJECTIVE 13839\n", "Name: count, dtype: int64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.target.value_counts()" ] }, { "cell_type": "code", "execution_count": 19, "id": "9cdfddf2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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6tChg5KTk3X+/HmvmoMHD+qOO+5Q69atFR0draVLl9brJTMzU3369FHr1q3Vr18//f3vf78+LxoAADQ7Pg1NZ8+e1W233abg4GBt3bpV/+///T+9+OKLuuGGG8yapUuX6pVXXlF6err27t2rtm3byuVy6eLFi2bNpEmTdOTIEW3fvl1btmzR7t279fjjj5vjHo9HI0eOVPfu3ZWfn68XXnhBixcv1quvvmrW7NmzR/fff7+Sk5P1/vvva+zYsRo7dqwOHz78/SwGAADwawGGYRi+evL58+frnXfe0T//+c8rjhuGoaioKD355JOaM2eOJKm8vFwRERHKyMjQxIkT9eGHHyo2NlbvvfeeBg8eLEnKzs7WmDFjdOrUKUVFRWn16tX69a9/LbfbLZvNZj735s2bdfToUUnShAkTVFFRoS1btpjPP2zYMA0cOFDp6enXfC0ej0cOh0Pl5eWy2+3faV3gOz3mZ/m6hQb79PlEX7cAAM1WQz6/fXql6c0339TgwYP1i1/8QuHh4frxj3+s3//+9+b4iRMn5Ha7lZCQYJ5zOByKj49XXl6eJCkvL08dOnQwA5MkJSQkKDAwUHv37jVr7rzzTjMwSZLL5VJhYaHOnj1r1lz+PHU1dc/zTZWVlfJ4PF4HAABouXwamj755BOtXr1avXr10rZt2zRt2jT98pe/1Nq1ayVJbrdbkhQREeH1cxEREeaY2+1WeHi413irVq0UFhbmVXOlOS5/jm+rqRv/piVLlsjhcJhHdHR0g18/AABoPnwammprazVo0CA999xz+vGPf6zHH39cjz32mKVfh/naggULVF5ebh4nT570dUsAAOA68mlo6tKli2JjY73O3XLLLSoqKpIkRUZGSpJKS0u9akpLS82xyMhInT592mv80qVL+vLLL71qrjTH5c/xbTV1498UEhIiu93udQAAgJbLp6HptttuU2Fhode5jz76SN27d5ckxcTEKDIyUjk5Oea4x+PR3r175XQ6JUlOp1NlZWXKz883a3bs2KHa2lrFx8ebNbt371Z1dbVZs337dvXu3dv8pp7T6fR6nrqauucBAAA/bD4NTbNnz9a7776r5557Th9//LHWrVunV199VSkpKZKkgIAAzZo1S88++6zefPNNHTp0SJMnT1ZUVJTGjh0r6esrU6NGjdJjjz2mffv26Z133tH06dM1ceJE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DzpsXr65noZhGElJScY999zjk36au9OnTxuSjNzcXMMwvn4vBgcHG5mZmWbNhx9+aEgy8vLyfNVms/DNtTQMw/iP//gPY+bMmb5rqpm74YYbjNdee80v3pdcacI1HTt2TFFRUbrxxhs1adIkFRUV+bqlZu/EiRNyu91KSEgwzzkcDsXHxysvL8+HnTVvu3btUnh4uHr37q1p06bpiy++8HVLzUJ5ebkkKSwsTJKUn5+v6upqr/dnnz591K1bN96f1/DNtazz+uuvq1OnTurbt68WLFigr776yhftNSs1NTVav369Kioq5HQ6/eJ9yY7guKr4+HhlZGSod+/eKikp0dNPP6077rhDhw8fVvv27X3dXrPldrslqd5u8xEREeYYGmbUqFEaN26cYmJidPz4cf3qV7/S6NGjlZeXp6CgIF+357dqa2s1a9Ys3Xbbberbt6+kr9+fNput3h8h5/15dVdaS0l64IEH1L17d0VFRengwYOaN2+eCgsL9cYbb/iwW/916NAhOZ1OXbx4Ue3atdOmTZsUGxurgoICn78vCU24qtGjR5v/7t+/v+Lj49W9e3dt3LhRycnJPuwM8DZx4kTz3/369VP//v110003adeuXRoxYoQPO/NvKSkpOnz4MPcqNoFvW8vHH3/c/He/fv3UpUsXjRgxQsePH9dNN930fbfp93r37q2CggKVl5frr3/9q5KSkpSbm+vrtiRxIzgaqEOHDrr55pv18ccf+7qVZi0yMlKS6n3ro7S01BzDd3PjjTeqU6dOvFevYvr06dqyZYt27typrl27mucjIyNVVVWlsrIyr3ren9/u29bySuLj4yWJ9+a3sNls6tmzp+Li4rRkyRINGDBAy5cv94v3JaEJDXL+/HkdP35cXbp08XUrzVpMTIwiIyOVk5NjnvN4PNq7d6+cTqcPO2s5Tp06pS+++IL36hUYhqHp06dr06ZN2rFjh2JiYrzG4+LiFBwc7PX+LCwsVFFREe/Pb7jWWl5JQUGBJPHetKi2tlaVlZV+8b7k13O4qjlz5ujuu+9W9+7dVVxcrEWLFikoKEj333+/r1vze+fPn/f6L8kTJ06ooKBAYWFh6tatm2bNmqVnn31WvXr1UkxMjH7zm98oKipKY8eO9V3Tfuxq6xkWFqann35a48ePV2RkpI4fP665c+eqZ8+ecrlcPuzaP6WkpGjdunX629/+pvbt25v3gzgcDoWGhsrhcCg5OVmpqakKCwuT3W7XjBkz5HQ6NWzYMB9371+utZbHjx/XunXrNGbMGHXs2FEHDx7U7Nmzdeedd6p///4+7t7/LFiwQKNHj1a3bt107tw5rVu3Trt27dK2bdv84335vXxHD83WhAkTjC5duhg2m8340Y9+ZEyYMMH4+OOPfd1Ws7Bz505DUr0jKSnJMIyvtx34zW9+Y0RERBghISHGiBEjjMLCQt827ceutp5fffWVMXLkSKNz585GcHCw0b17d+Oxxx4z3G63r9v2S1daR0nGmjVrzJoLFy4YTzzxhHHDDTcYbdq0Me69916jpKTEd037qWutZVFRkXHnnXcaYWFhRkhIiNGzZ0/jqaeeMsrLy33buJ965JFHjO7duxs2m83o3LmzMWLECOPtt982x339vgwwDMP4fuIZAABA88U9TQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABYQGgCAACw4P8DMVFzcjL+3EEAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train_df.total_lines.plot.hist()" ] }, { "cell_type": "code", "execution_count": 20, "id": "fe6844bc", "metadata": {}, "outputs": [], "source": [ "train_sentences=train_df['text'].tolist()\n", "val_sentences=val_df['text'].tolist()\n", "test_sentences=test_df['text'].tolist()" ] }, { "cell_type": "code", "execution_count": 21, "id": "65973451", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['to investigate the efficacy of @ weeks of daily low-dose oral prednisolone in improving pain , mobility , and systemic low-grade inflammation in the short term and whether the effect would be sustained at @ weeks in older adults with moderate to severe knee osteoarthritis ( oa ) .',\n", " 'a total of @ patients with primary knee oa were randomized @:@ ; @ received @ mg/day of prednisolone and @ received placebo for @ weeks .',\n", " 'outcome measures included pain reduction and improvement in function scores and systemic inflammation markers .',\n", " 'pain was assessed using the visual analog pain scale ( @-@ mm ) .',\n", " 'secondary outcome measures included the western ontario and mcmaster universities osteoarthritis index scores , patient global assessment ( pga ) of the severity of knee oa , and @-min walk distance ( @mwd ) .',\n", " 'serum levels of interleukin @ ( il-@ ) , il-@ , tumor necrosis factor ( tnf ) - , and high-sensitivity c-reactive protein ( hscrp ) were measured .',\n", " 'there was a clinically relevant reduction in the intervention group compared to the placebo group for knee pain , physical function , pga , and @mwd at @ weeks .',\n", " 'the mean difference between treatment arms ( @ % ci ) was @ ( @-@ @ ) , p < @ ; @ ( @-@ @ ) , p < @ ; @ ( @-@ @ ) , p < @ ; and @ ( @-@ @ ) , p < @ , respectively .',\n", " 'further , there was a clinically relevant reduction in the serum levels of il-@ , il-@ , tnf - , and hscrp at @ weeks in the intervention group when compared to the placebo group .',\n", " 'these differences remained significant at @ weeks .']" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_sentences[:10]" ] }, { "cell_type": "markdown", "id": "08bb7874", "metadata": {}, "source": [ "# Text to numbers " ] }, { "cell_type": "code", "execution_count": 22, "id": "ca820e30", "metadata": {}, "outputs": [], "source": [ "#one hot encode labels\n", "from sklearn.preprocessing import OneHotEncoder\n", "one_hot_encoder=OneHotEncoder(sparse_output=False)\n", "train_labels_one_hot=one_hot_encoder.fit_transform(train_df[\"target\"].to_numpy().reshape(-1,1))\n", "val_labels_one_hot=one_hot_encoder.transform(val_df[\"target\"].to_numpy().reshape(-1,1))\n", "test_label_one_hot=one_hot_encoder.transform(test_df[\"target\"].to_numpy().reshape(-1,1))\n" ] }, { "cell_type": "code", "execution_count": 23, "id": "fda6a6c1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tf.constant(train_labels_one_hot)" ] }, { "cell_type": "code", "execution_count": 44, "id": "45f80b74", "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import LabelEncoder\n", "labelencoder=LabelEncoder()\n", "train_labels_encoder=labelencoder.fit_transform(train_df[\"target\"].to_numpy())\n", "val_labels_encoder=labelencoder.transform(val_df[\"target\"].to_numpy())\n", "test_label_encoder=labelencoder.transform(test_df[\"target\"].to_numpy())\n" ] }, { "cell_type": "code", "execution_count": 24, "id": "7bd78a9b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([3, 2, 2, ..., 4, 1, 1])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_labels_encoder" ] }, { "cell_type": "code", "execution_count": 25, "id": "d0a80828", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['BACKGROUND', 'CONCLUSIONS', 'METHODS', 'OBJECTIVE', 'RESULTS'],\n", " dtype=object)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class_names=labelencoder.classes_\n", "class_names" ] }, { "cell_type": "markdown", "id": "49e9e8b8", "metadata": {}, "source": [ "# Model 0" ] }, { "cell_type": "code", "execution_count": 26, "id": "f55fb274", "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.naive_bayes import MultinomialNB\n", "from sklearn.pipeline import Pipeline\n", "\n", "model_0= Pipeline (\n", "[\n", " (\"Tdidf\", TfidfVectorizer()),\n", " (\"Naive-bayes(classification)\", MultinomialNB())\n", "])\n" ] }, { "cell_type": "code", "execution_count": 27, "id": "5289a2e2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Pipeline(steps=[('Tdidf', TfidfVectorizer()),\n",
       "                ('Naive-bayes(classification)', MultinomialNB())])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Pipeline(steps=[('Tdidf', TfidfVectorizer()),\n", " ('Naive-bayes(classification)', MultinomialNB())])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_0.fit(train_sentences,train_labels_encoder)" ] }, { "cell_type": "code", "execution_count": 28, "id": "91ce1c82", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7218323844829869" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_0.score(val_sentences,val_labels_encoder)" ] }, { "cell_type": "code", "execution_count": 29, "id": "004a4f8e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4, 1, 3, ..., 4, 4, 1])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "baseline_preds=model_0.predict(val_sentences)\n", "baseline_preds" ] }, { "cell_type": "code", "execution_count": 30, "id": "02c365fc", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import accuracy_score,precision_recall_fscore_support\n", "def calculate_results(y_true,y_pred):\n", " model_accuracy=accuracy_score(y_true,y_pred)*100\n", " model_precision,recall_score,f1_score, _ = precision_recall_fscore_support(y_true,y_pred,average=\"weighted\")\n", " #Compute precision, recall, F-measure and support for each class.\n", " results={ \"accuracy\":model_accuracy,\n", " \"precision\":model_precision*100,\n", " \"recall\":recall_score*100,\n", " \"F1-score\":f1_score*100}\n", " return results\n", "\n" ] }, { "cell_type": "code", "execution_count": 31, "id": "bfdd9abb", "metadata": {}, "outputs": [], "source": [ "model_0_reults=calculate_results(val_labels_encoder,baseline_preds)" ] }, { "cell_type": "code", "execution_count": 32, "id": "bed2ff0c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 72.1832384482987,\n", " 'precision': 71.86466952323352,\n", " 'recall': 72.1832384482987,\n", " 'F1-score': 69.89250353450294}" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_0_reults" ] }, { "cell_type": "markdown", "id": "266b14e1", "metadata": {}, "source": [ "# Model-1 Conv1D with token embeddings" ] }, { "cell_type": "code", "execution_count": 33, "id": "71f0e787", "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.layers.experimental.preprocessing import TextVectorization\n", "tokenize=TextVectorization(max_tokens=None,standardize='lower_and_strip_punctuation',\n", " ngrams=None,\n", " output_mode='int',\n", " output_sequence_length=None\n", ")" ] }, { "cell_type": "code", "execution_count": 34, "id": "b5d49a8b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['to',\n", " 'investigate',\n", " 'the',\n", " 'efficacy',\n", " 'of',\n", " '@',\n", " 'weeks',\n", " 'of',\n", " 'daily',\n", " 'low-dose',\n", " 'oral',\n", " 'prednisolone',\n", " 'in',\n", " 'improving',\n", " 'pain',\n", " ',',\n", " 'mobility',\n", " ',',\n", " 'and',\n", " 'systemic',\n", " 'low-grade',\n", " 'inflammation',\n", " 'in',\n", " 'the',\n", " 'short',\n", " 'term',\n", " 'and',\n", " 'whether',\n", " 'the',\n", " 'effect',\n", " 'would',\n", " 'be',\n", " 'sustained',\n", " 'at',\n", " '@',\n", " 'weeks',\n", " 'in',\n", " 'older',\n", " 'adults',\n", " 'with',\n", " 'moderate',\n", " 'to',\n", " 'severe',\n", " 'knee',\n", " 'osteoarthritis',\n", " '(',\n", " 'oa',\n", " ')',\n", " '.']" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_sentences[0].split()" ] }, { "cell_type": "code", "execution_count": 35, "id": "48a0aeb8", "metadata": {}, "outputs": [], "source": [ "a=0\n", "for i in train_sentences:\n", " a=a+(len(i.split()))\n", " " ] }, { "cell_type": "code", "execution_count": 36, "id": "8cd69f1d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "26" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "avg_no_words=round(a/len(train_sentences))\n", "avg_no_words" ] }, { "cell_type": "code", "execution_count": 37, "id": "7b904ee0", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 38, "id": "1adbb05f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(296, 26.338269273494777)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lenghts=[len(sentence.split()) for sentence in train_sentences]\n", "avg=np.mean(lenghts)\n", "max(lenghts),avg" ] }, { "cell_type": "code", "execution_count": 39, "id": "921c1c25", "metadata": {}, "outputs": [ { "data": { "image/png": "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KJDdbldcXJxZc2kfzTXNfdhsNsXHx/vVNDU1qbCw0KwBAAAIKOQ888wzKioq0rFjx7Rv3z59//vfV0hIiKZOnSqHw6HU1FSlp6frj3/8o0pKSjR9+nS5XC6NGTNGkjRu3DjFxcXpscce05/+9Cft2rVLixcvVlpamkJDQyVJs2bN0l/+8hctXLhQZWVlWrdunbZs2aL58+eb40hPT9cvf/lLbdy4UR9++KFmz56turo6TZ8+/QZODQAAaM8Ceibn008/1dSpU/X555+rR48euvfee/Xuu++qR48ekqSXX35ZwcHBSk5OVn19vdxut9atW2ceHxISotzcXM2ePVsul0udO3dWSkqKli1bZtbExsYqLy9P8+fP16pVq9SrVy+9+uqrcrvdZs3kyZN16tQpZWVlyev1avjw4crPz7/sYWQAAHD7CmidHKthnRx/rJMDAGgPWm2dHAAAgPaAkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACyJkAMAACypQ1sPwKr6ZuS19RAAALitcScHAABYEiEHAABYEiEHAABYEiEHAABY0nWFnOXLlysoKEjz5s0z950/f15paWnq1q2bunTpouTkZFVVVfkdV1lZqaSkJHXq1EmRkZFasGCBLl686FezZ88ejRgxQqGhoerXr59ycnIuO//atWvVt29fhYWFKSEhQfv377+eywEAABZyzSHnwIED+p//+R8NHTrUb//8+fO1Y8cObd26VUVFRTpx4oQmTZpktjc2NiopKUkNDQ3at2+fNm7cqJycHGVlZZk1FRUVSkpK0gMPPKDS0lLNmzdPTzzxhHbt2mXWbN68Wenp6VqyZIkOHTqkYcOGye12q7q6+lovCQAAWEiQYRhGoAedPXtWI0aM0Lp16/TCCy9o+PDhWrlypWpra9WjRw9t2rRJjzzyiCSprKxMgwYNksfj0ZgxY7Rz50499NBDOnHihKKioiRJGzZs0KJFi3Tq1CnZbDYtWrRIeXl5OnLkiHnOKVOmqKamRvn5+ZKkhIQEjRo1SmvWrJEkNTU1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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.hist(lenghts,bins=20);" ] }, { "cell_type": "code", "execution_count": 40, "id": "6b2085ab", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "55.0" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# what sentence length covers 95% of the samples\n", "percentile=np.percentile(lenghts,95)\n", "percentile" ] }, { "cell_type": "code", "execution_count": 41, "id": "959ae373", "metadata": {}, "outputs": [], "source": [ "# 55 sentence length is the highest\n", "max_vocab_words=64000\n", "max_length=55\n", "text_tokenize=TextVectorization(\n", " max_tokens=max_vocab_words,\n", " output_mode='int',\n", " output_sequence_length=max_length\n", " )" ] }, { "cell_type": "code", "execution_count": 42, "id": "eee5dbfc", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-06-13 17:41:34.825717: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n" ] } ], "source": [ "text_tokenize.adapt(train_sentences)" ] }, { "cell_type": "code", "execution_count": 43, "id": "118c5439", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original sentence use of a diclofenac sodium suppository ( @mg ) was allowed for all patients at any time after surgery , and the diclofenac sodium suppository usage was assessed .\n", "\n", "lengh of text 29\n", "\n", "Vectorized text [[ 87 4 8 2868 764 6735 68 10 2583 11 62 12 15 262\n", " 63 21 115 3 2 2868 764 6735 2637 10 113 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0]]\n" ] } ], "source": [ "import random\n", "random_sentence=random.choice(train_sentences)\n", "print(f\"Original sentence {random_sentence}\\n\")\n", "print(f\"lengh of text {len (random_sentence.split())}\\n\")\n", "print(f\"Vectorized text {text_tokenize([random_sentence])}\")" ] }, { "cell_type": "code", "execution_count": 44, "id": "4684e07b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of words in vocab 64000\n", "Top 5 most frquent words ['', '[UNK]', 'the', 'and', 'of']\n", "Top 5 least frquent words ['andbehavior', 'andat', 'andapplication', 'ancovamean', 'ancovaadjusted']\n" ] } ], "source": [ "text_vocab=text_tokenize.get_vocabulary()\n", "print(f\"Number of words in vocab { len(text_vocab)}\")\n", "print (f\"Top 5 most frquent words {text_vocab[:5]}\")\n", "print (f\"Top 5 least frquent words {text_vocab[-5:]}\")\n" ] }, { "cell_type": "code", "execution_count": 45, "id": "526ef3d8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'name': 'text_vectorization_1',\n", " 'trainable': True,\n", " 'dtype': 'string',\n", " 'batch_input_shape': (None,),\n", " 'max_tokens': 64000,\n", " 'standardize': 'lower_and_strip_punctuation',\n", " 'split': 'whitespace',\n", " 'ngrams': None,\n", " 'output_mode': 'int',\n", " 'output_sequence_length': 55,\n", " 'pad_to_max_tokens': False,\n", " 'sparse': False,\n", " 'ragged': False,\n", " 'vocabulary': None,\n", " 'idf_weights': None,\n", " 'encoding': 'utf-8',\n", " 'vocabulary_size': 64000}" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "text_tokenize.get_config()" ] }, { "cell_type": "code", "execution_count": 46, "id": "0871ad6c", "metadata": {}, "outputs": [], "source": [ "token_embedding=tf.keras.layers.Embedding(input_dim=len(text_vocab),\n", " output_dim=128,\n", " mask_zero=False\n", ")" ] }, { "cell_type": "code", "execution_count": 47, "id": "a31d9736", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original sentence use of a diclofenac sodium suppository ( @mg ) was allowed for all patients at any time after surgery , and the diclofenac sodium suppository usage was assessed .\n", "\n", "Vectorized sentence [[ 87 4 8 2868 764 6735 68 10 2583 11 62 12 15 262\n", " 63 21 115 3 2 2868 764 6735 2637 10 113 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0]]\n", "\n", "Embedded sentence [[[ 0.04358969 0.00608678 -0.02475305 ... 0.02248098 -0.00060068\n", " -0.02649772]\n", " [ 0.01575196 -0.01732622 -0.03623853 ... 0.04600047 0.02817501\n", " 0.01843751]\n", " [ 0.02404206 -0.04182126 0.01860196 ... -0.02644104 0.04451705\n", " 0.03283714]\n", " ...\n", " [ 0.02993966 -0.0383271 0.00891661 ... 0.04420439 -0.01741441\n", " -0.01684239]\n", " [ 0.02993966 -0.0383271 0.00891661 ... 0.04420439 -0.01741441\n", " -0.01684239]\n", " [ 0.02993966 -0.0383271 0.00891661 ... 0.04420439 -0.01741441\n", " -0.01684239]]]\n", "Embedded sentence shape: (1, 55, 128)\n" ] } ], "source": [ "print(f\"Original sentence {random_sentence}\\n\")\n", "print(f\"Vectorized sentence {text_tokenize([random_sentence])}\\n\")\n", "print(f\"Embedded sentence {token_embedding(text_tokenize([random_sentence]))}\")\n", "print(f\"Embedded sentence shape: {token_embedding(text_tokenize([random_sentence])).shape}\")\n" ] }, { "cell_type": "markdown", "id": "c2e466a4", "metadata": {}, "source": [ "The tf.data.Dataset.from_tensor_slices() function is a utility in TensorFlow that creates a tf.data.Dataset object from one or more input tensors. This function is particularly useful for creating an input pipeline for training or inference tasks. " ] }, { "cell_type": "code", "execution_count": 48, "id": "79270549", "metadata": {}, "outputs": [], "source": [ "train_dataset=tf.data.Dataset.from_tensor_slices((train_sentences,train_labels_one_hot))\n", "val_dataset=tf.data.Dataset.from_tensor_slices((val_sentences,val_labels_one_hot))\n", "test_dataset=tf.data.Dataset.from_tensor_slices((test_sentences,test_label_one_hot))" ] }, { "cell_type": "code", "execution_count": 49, "id": "2ee4c907", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<_TensorSliceDataset element_spec=(TensorSpec(shape=(), dtype=tf.string, name=None), TensorSpec(shape=(5,), dtype=tf.float64, name=None))>" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_dataset" ] }, { "cell_type": "code", "execution_count": 50, "id": "4cec70fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<_PrefetchDataset element_spec=(TensorSpec(shape=(None,), dtype=tf.string, name=None), TensorSpec(shape=(None, 5), dtype=tf.float64, name=None))>" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_dataset = train_dataset.batch(32).prefetch(tf.data.AUTOTUNE)\n", "val_dataset = val_dataset.batch(32).prefetch(tf.data.AUTOTUNE)\n", "test_dataset = test_dataset.batch(32).prefetch(tf.data.AUTOTUNE)\n", "\n", "train_dataset" ] }, { "cell_type": "code", "execution_count": 51, "id": "17e8f7a7", "metadata": {}, "outputs": [], "source": [ "inputs=tf.keras.layers.Input(shape=(1,), dtype=\"string\")\n", "text_vector=text_tokenize(inputs)\n", "text_embedding=token_embedding(text_vector)\n", "x=tf.keras.layers.Conv1D(64,kernel_size=5,padding=\"same\",activation=\"relu\")(text_embedding)\n", "x=tf.keras.layers.GlobalAveragePooling1D()(x)\n", "outputs=tf.keras.layers.Dense(len(class_names),activation=\"softmax\")(x)\n", "model_1=tf.keras.Model(inputs,outputs)" ] }, { "cell_type": "code", "execution_count": 52, "id": "69b5a4f4", "metadata": {}, "outputs": [], "source": [ "model_1.compile(loss=tf.keras.losses.categorical_crossentropy,\n", " optimizer=tf.keras.optimizers.legacy.Adam(),\n", " metrics=[\"accuracy\"])\n", " " ] }, { "cell_type": "code", "execution_count": 53, "id": "b31bba3f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " input_1 (InputLayer) [(None, 1)] 0 \n", " \n", " text_vectorization_1 (TextV (None, 55) 0 \n", " ectorization) \n", " \n", " embedding (Embedding) (None, 55, 128) 8192000 \n", " \n", " conv1d (Conv1D) (None, 55, 64) 41024 \n", " \n", " global_average_pooling1d (G (None, 64) 0 \n", " lobalAveragePooling1D) \n", " \n", " dense (Dense) (None, 5) 325 \n", " \n", "=================================================================\n", "Total params: 8,233,349\n", "Trainable params: 8,233,349\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model_1.summary()\n" ] }, { "cell_type": "code", "execution_count": 54, "id": "be4038e3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n", "562/562 [==============================] - 27s 47ms/step - loss: 0.9223 - accuracy: 0.6340 - val_loss: 0.6906 - val_accuracy: 0.7307\n", "Epoch 2/3\n", "562/562 [==============================] - 24s 44ms/step - loss: 0.6571 - accuracy: 0.7563 - val_loss: 0.6362 - val_accuracy: 0.7689\n", "Epoch 3/3\n", "562/562 [==============================] - 27s 48ms/step - loss: 0.6151 - accuracy: 0.7751 - val_loss: 0.5962 - val_accuracy: 0.7836\n" ] } ], "source": [ "model_1_history = model_1.fit(train_dataset,\n", " steps_per_epoch=int(0.1 * len(train_dataset)),\n", " epochs=3,\n", " validation_data=val_dataset,\n", " validation_steps=int(0.1 * len(val_dataset)))" ] }, { "cell_type": "code", "execution_count": 56, "id": "52cd33b1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "945/945 [==============================] - 2s 2ms/step\n" ] }, { "data": { "text/plain": [ "array([[4.7636923e-01, 1.2716618e-01, 5.3757947e-02, 3.2397968e-01,\n", " 1.8726962e-02],\n", " [3.8611493e-01, 3.2393026e-01, 1.3540406e-02, 2.6583520e-01,\n", " 1.0579119e-02],\n", " [1.3623297e-01, 6.9641406e-03, 1.8214269e-03, 8.5494816e-01,\n", " 3.3247936e-05],\n", " ...,\n", " [1.3169743e-05, 6.1650638e-04, 8.4461336e-04, 5.1141324e-06,\n", " 9.9852055e-01],\n", " [5.5400979e-02, 4.4984341e-01, 8.8301055e-02, 7.4640714e-02,\n", " 3.3181381e-01],\n", " [1.5156463e-01, 7.0157272e-01, 4.8869491e-02, 4.7299001e-02,\n", " 5.0694138e-02]], dtype=float32)" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_probs=model_1.predict(val_dataset)\n", "model_probs" ] }, { "cell_type": "code", "execution_count": 57, "id": "2af9cf78", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_1_pred=tf.argmax(model_probs,axis=1)\n", "model_1_pred" ] }, { "cell_type": "code", "execution_count": 58, "id": "5058b7a1", "metadata": {}, "outputs": [], "source": [ "model_1_results=calculate_results(val_labels_encoder,model_1_pred)" ] }, { "cell_type": "code", "execution_count": 59, "id": "8be33cf9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 78.7104461803257,\n", " 'precision': 78.3333456187092,\n", " 'recall': 78.7104461803257,\n", " 'F1-score': 78.41304194274046}" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_1_results" ] }, { "cell_type": "code", "execution_count": 60, "id": "c733c9fc", "metadata": {}, "outputs": [], "source": [ "# Model-2 Using Pretrained Model\n", "import tensorflow_hub as hub\n", "tf_hub_embedding_layer=hub.KerasLayer(\"https://tfhub.dev/google/universal-sentence-encoder/4\",\n", " trainable=False)" ] }, { "cell_type": "code", "execution_count": 36, "id": "61745f58", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Random training sentence:\n", "missing data were imputed using multiple imputation .\n", "\n" ] }, { "ename": "NameError", "evalue": "name 'tf_hub_embedding_layer' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[36], line 4\u001b[0m\n\u001b[1;32m 2\u001b[0m random_training_sentence \u001b[38;5;241m=\u001b[39m random\u001b[38;5;241m.\u001b[39mchoice(train_sentences)\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRandom training sentence:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mrandom_training_sentence\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m use_embedded_sentence \u001b[38;5;241m=\u001b[39m \u001b[43mtf_hub_embedding_layer\u001b[49m([random_training_sentence])\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSentence after embedding:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00muse_embedded_sentence[\u001b[38;5;241m0\u001b[39m][:\u001b[38;5;241m30\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLength of sentence embedding:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(use_embedded_sentence[\u001b[38;5;241m0\u001b[39m])\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", "\u001b[0;31mNameError\u001b[0m: name 'tf_hub_embedding_layer' is not defined" ] } ], "source": [ "import random\n", "random_training_sentence = random.choice(train_sentences)\n", "print(f\"Random training sentence:\\n{random_training_sentence}\\n\")\n", "use_embedded_sentence = tf_hub_embedding_layer([random_training_sentence])\n", "print(f\"Sentence after embedding:\\n{use_embedded_sentence[0][:30]}\\n\")\n", "print(f\"Length of sentence embedding:\\n{len(use_embedded_sentence[0])}\")\n", " " ] }, { "cell_type": "code", "execution_count": 62, "id": "583d8417", "metadata": {}, "outputs": [], "source": [ "inputs = tf.keras.layers.Input(shape=[], dtype=tf.string)\n", "pre_trained_embedding=tf_hub_embedding_layer(inputs)\n", "x=tf.keras.layers.Dense(128,activation=\"relu\")(pre_trained_embedding)\n", "outputs=tf.keras.layers.Dense(len(class_names),activation=\"softmax\")(x)\n", "model_2=tf.keras.Model(inputs,outputs)" ] }, { "cell_type": "code", "execution_count": 63, "id": "fa1a7665", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model_1\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " input_2 (InputLayer) [(None,)] 0 \n", " \n", " keras_layer (KerasLayer) (None, 512) 256797824 \n", " \n", " dense_1 (Dense) (None, 128) 65664 \n", " \n", " dense_2 (Dense) (None, 5) 645 \n", " \n", "=================================================================\n", "Total params: 256,864,133\n", "Trainable params: 66,309\n", "Non-trainable params: 256,797,824\n", "_________________________________________________________________\n" ] } ], "source": [ "model_2.summary()\n" ] }, { "cell_type": "code", "execution_count": 64, "id": "6653f2a6", "metadata": {}, "outputs": [], "source": [ "model_2.compile(loss=\"categorical_crossentropy\",\n", " optimizer=tf.keras.optimizers.legacy.Adam(),\n", " metrics=[\"accuracy\"])" ] }, { "cell_type": "code", "execution_count": 65, "id": "106a4b02", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n", "562/562 [==============================] - 49s 86ms/step - loss: 0.9129 - accuracy: 0.6509 - val_loss: 0.7937 - val_accuracy: 0.6912\n", "Epoch 2/3\n", "562/562 [==============================] - 45s 80ms/step - loss: 0.7674 - accuracy: 0.7020 - val_loss: 0.7538 - val_accuracy: 0.7061\n", "Epoch 3/3\n", "562/562 [==============================] - 61s 109ms/step - loss: 0.7503 - accuracy: 0.7122 - val_loss: 0.7382 - val_accuracy: 0.7131\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fit feature extractor model for 3 epochs\n", "model_2.fit(train_dataset,\n", " steps_per_epoch=int(0.1 * len(train_dataset)),\n", " epochs=3,\n", " validation_data=val_dataset,\n", " validation_steps=int(0.1 * len(val_dataset)))" ] }, { "cell_type": "code", "execution_count": 66, "id": "7dd2f572", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "945/945 [==============================] - 82s 86ms/step\n" ] }, { "data": { "text/plain": [ "array([[4.4031423e-01, 3.4722412e-01, 2.5081097e-03, 1.9981924e-01,\n", " 1.0134370e-02],\n", " [3.3964318e-01, 4.9833187e-01, 3.6500413e-03, 1.5515944e-01,\n", " 3.2154536e-03],\n", " [2.6505971e-01, 1.5719941e-01, 1.9075207e-02, 5.1727098e-01,\n", " 4.1394755e-02],\n", " ...,\n", " [1.8576552e-03, 6.5741059e-03, 5.2557763e-02, 9.0209109e-04,\n", " 9.3810833e-01],\n", " [4.2318460e-03, 4.7142524e-02, 1.9696368e-01, 1.3423875e-03,\n", " 7.5031954e-01],\n", " [1.6839372e-01, 2.3914343e-01, 5.2446765e-01, 5.4206112e-03,\n", " 6.2574625e-02]], dtype=float32)" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_2_pred_probs = model_2.predict(val_dataset)\n", "model_2_pred_probs" ] }, { "cell_type": "code", "execution_count": 68, "id": "8b855f9b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_2_preds = tf.argmax(model_2_pred_probs, axis=1)\n", "model_2_preds" ] }, { "cell_type": "code", "execution_count": 69, "id": "98ac4f0e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 71.39216205481266,\n", " 'precision': 71.42823673632186,\n", " 'recall': 71.39216205481266,\n", " 'F1-score': 71.10159521803406}" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_2_results = calculate_results(val_labels_encoder,\n", " model_2_preds)\n", "model_2_results\n", " " ] }, { "cell_type": "markdown", "id": "a70d9099", "metadata": {}, "source": [ "# model 3-conv 1D using character embeddings\n" ] }, { "cell_type": "code", "execution_count": 70, "id": "dfea44d8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['to investigate the efficacy of @ weeks of daily low-dose oral prednisolone in improving pain , mobility , and systemic low-grade inflammation in the short term and whether the effect would be sustained at @ weeks in older adults with moderate to severe knee osteoarthritis ( oa ) .',\n", " 'a total of @ patients with primary knee oa were randomized @:@ ; @ received @ mg/day of prednisolone and @ received placebo for @ weeks .',\n", " 'outcome measures included pain reduction and improvement in function scores and systemic inflammation markers .',\n", " 'pain was assessed using the visual analog pain scale ( @-@ mm ) .',\n", " 'secondary outcome measures included the western ontario and mcmaster universities osteoarthritis index scores , patient global assessment ( pga ) of the severity of knee oa , and @-min walk distance ( @mwd ) .']" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_sentences[:5]" ] }, { "cell_type": "code", "execution_count": 35, "id": "6938a248", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'random_training_sentence' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[35], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msplit_to_char\u001b[39m(text):\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m.\u001b[39mjoin(\u001b[38;5;28mlist\u001b[39m(text))\n\u001b[0;32m----> 4\u001b[0m split_to_char(\u001b[43mrandom_training_sentence\u001b[49m)\n", "\u001b[0;31mNameError\u001b[0m: name 'random_training_sentence' is not defined" ] } ], "source": [ "def split_to_char(text):\n", " return \" \" .join(list(text))\n", "\n", "split_to_char(random_training_sentence)" ] }, { "cell_type": "code", "execution_count": 72, "id": "2a52b468", "metadata": {}, "outputs": [], "source": [ "train_chars=[split_to_char(sentence) for sentence in train_sentences]\n", "val_chars=[split_to_char(sentence) for sentence in val_sentences]\n", "test_chars=[split_to_char(sentence) for sentence in test_sentences]" ] }, { "cell_type": "code", "execution_count": 73, "id": "0e2a6583", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['t o i n v e s t i g a t e t h e e f f i c a c y o f @ w e e k s o f d a i l y l o w - d o s e o r a l p r e d n i s o l o n e i n i m p r o v i n g p a i n , m o b i l i t y , a n d s y s t e m i c l o w - g r a d e i n f l a m m a t i o n i n t h e s h o r t t e r m a n d w h e t h e r t h e e f f e c t w o u l d b e s u s t a i n e d a t @ w e e k s i n o l d e r a d u l t s w i t h m o d e r a t e t o s e v e r e k n e e o s t e o a r t h r i t i s ( o a ) .',\n", " 'a t o t a l o f @ p a t i e n t s w i t h p r i m a r y k n e e o a w e r e r a n d o m i z e d @ : @ ; @ r e c e i v e d @ m g / d a y o f p r e d n i s o l o n e a n d @ r e c e i v e d p l a c e b o f o r @ w e e k s .',\n", " 'o u t c o m e m e a s u r e s i n c l u d e d p a i n r e d u c t i o n a n d i m p r o v e m e n t i n f u n c t i o n s c o r e s a n d s y s t e m i c i n f l a m m a t i o n m a r k e r s .',\n", " 'p a i n w a s a s s e s s e d u s i n g t h e v i s u a l a n a l o g p a i n s c a l e ( @ - @ m m ) .',\n", " 's e c o n d a r y o u t c o m e m e a s u r e s i n c l u d e d t h e w e s t e r n o n t a r i o a n d m c m a s t e r u n i v e r s i t i e s o s t e o a r t h r i t i s i n d e x s c o r e s , p a t i e n t g l o b a l a s s e s s m e n t ( p g a ) o f t h e s e v e r i t y o f k n e e o a , a n d @ - m i n w a l k d i s t a n c e ( @ m w d ) .']" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_chars[:5]" ] }, { "cell_type": "code", "execution_count": 74, "id": "4795ada4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(149.3662574983337,)" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "char_length=[len(sentence) for sentence in train_sentences]\n", "mean_length=np.mean(char_length)\n", "mean_length," ] }, { "cell_type": "code", "execution_count": 75, "id": "92d8585d", "metadata": {}, "outputs": [], "source": [ "char_percentile =np.percentile(char_length,95)" ] }, { "cell_type": "code", "execution_count": 76, "id": "8c709205", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "290.0" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "char_percentile # most characters are 290 or less" ] }, { "cell_type": "code", "execution_count": 77, "id": "c6390ae9", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(char_length,bins=7);" ] }, { "cell_type": "code", "execution_count": 78, "id": "3d6fc1d4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'abcdefghijklmnopqrstuvwxyz0123456789!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import string\n", "alphabet= string.ascii_lowercase+string.digits+string.punctuation\n", "alphabet" ] }, { "cell_type": "code", "execution_count": 79, "id": "f64d31f8", "metadata": {}, "outputs": [], "source": [ "max_length_tokens=len(alphabet)+2\n", "char_vectorization=TextVectorization( \n", " max_tokens=max_length_tokens,\n", " output_mode='int',\n", " output_sequence_length=int(char_percentile)\n", " )" ] }, { "cell_type": "code", "execution_count": 80, "id": "988b1891", "metadata": {}, "outputs": [], "source": [ "char_vectorization.adapt(train_chars)" ] }, { "cell_type": "code", "execution_count": 81, "id": "21c2c1c7", "metadata": {}, "outputs": [], "source": [ "char_vocab=char_vectorization.get_vocabulary()" ] }, { "cell_type": "code", "execution_count": 82, "id": "38fb5281", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['', '[UNK]', 'e', 't', 'i', 'a', 'n', 'o', 'r', 's']" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "char_vocab[:10]" ] }, { "cell_type": "code", "execution_count": 83, "id": "1920ef57", "metadata": {}, "outputs": [], "source": [ "char_embedding=tf.keras.layers.Embedding(input_dim=max_length_tokens,\n", " output_dim=25,\n", " mask_zero=None\n", ")" ] }, { "cell_type": "code", "execution_count": 85, "id": "dc372178", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original text: \n", " p a r e c o x i b s o d i u m a n a l g e s i a r e d u c e s t h e r a t e o f p o d a n d p o c d i n e l d e r l y p a t i e n t s w i t h n e u r o p r o t e c t i v e e f f e c t s .\n", "\n", "Vectorized Text [[14 5 8 2 11 7 24 4 22 9 7 10 4 16 15 5 6 5 12 18 2 9 4 5\n", " 8 2 10 16 11 2 9 3 13 2 8 5 3 2 7 17 14 7 10 5 6 10 14 7\n", " 11 10 4 6 2 12 10 2 8 12 19 14 5 3 4 2 6 3 9 20 4 3 13 6\n", " 2 16 8 7 14 8 7 3 2 11 3 4 21 2 2 17 17 2 11 3 9 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0]]\n", "\n", "Embedded Text [[[ 0.04685961 0.03016916 0.0077801 ... -0.04590077 0.01184995\n", " -0.04785159]\n", " [ 0.00771859 0.00036714 -0.01702696 ... 0.02873543 -0.03228469\n", " -0.04450686]\n", " [ 0.02558073 0.00907476 0.02239788 ... 0.01857281 -0.01394367\n", " 0.00124573]\n", " ...\n", " [ 0.04484713 0.03263881 -0.00276654 ... -0.00651003 0.0304917\n", " -0.02310417]\n", " [ 0.04484713 0.03263881 -0.00276654 ... -0.00651003 0.0304917\n", " -0.02310417]\n", " [ 0.04484713 0.03263881 -0.00276654 ... -0.00651003 0.0304917\n", " -0.02310417]]]\n", "(1, 290, 25)\n" ] } ], "source": [ "random_char=random.choice(train_chars)\n", "print(f\"Original text: \\n {random_char}\\n\")\n", "print(f\"Vectorized Text {char_vectorization([random_char])}\\n\")\n", "char_embed=char_embedding(char_vectorization([random_char]))\n", "print(f\"Embedded Text {char_embed}\")\n", "print(char_embed.shape)" ] }, { "cell_type": "code", "execution_count": 86, "id": "c967a2ad", "metadata": {}, "outputs": [], "source": [ "inputs=tf.keras.layers.Input(shape=(1,), dtype=\"string\")\n", "char_vector=char_vectorization(inputs)\n", "embedding=char_embedding(char_vector)\n", "x=tf.keras.layers.Conv1D(64,5,padding=\"same\",activation=\"relu\") (embedding)\n", "x=tf.keras.layers.GlobalMaxPool1D()(x)\n", "outputs=tf.keras.layers.Dense(len(class_names),activation=\"softmax\")(x)\n", "model_3=tf.keras.Model(inputs,outputs)" ] }, { "cell_type": "code", "execution_count": 87, "id": "fd688358", "metadata": {}, "outputs": [], "source": [ "model_3.compile(loss=\"categorical_crossentropy\",\n", " optimizer=tf.keras.optimizers.legacy.Adam(),\n", " metrics=[\"accuracy\"])" ] }, { "cell_type": "code", "execution_count": 88, "id": "cea8bb5d", "metadata": {}, "outputs": [], "source": [ "train_char_dataset=tf.data.Dataset.from_tensor_slices((train_chars,train_labels_one_hot)).batch(32).prefetch(tf.data.AUTOTUNE)\n", "val_char_dataset=tf.data.Dataset.from_tensor_slices((val_chars,val_labels_one_hot)).batch(32).prefetch(tf.data.AUTOTUNE)\n", "test_char_dataset=tf.data.Dataset.from_tensor_slices((test_chars,test_label_one_hot)).batch(32).prefetch(tf.data.AUTOTUNE)" ] }, { "cell_type": "code", "execution_count": 89, "id": "bc952f28", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<_PrefetchDataset element_spec=(TensorSpec(shape=(None,), dtype=tf.string, name=None), TensorSpec(shape=(None, 5), dtype=tf.float64, name=None))>" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_char_dataset" ] }, { "cell_type": "code", "execution_count": 90, "id": "6cd72c25", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n", "562/562 [==============================] - 15s 25ms/step - loss: 1.2866 - accuracy: 0.4727 - val_loss: 1.0617 - val_accuracy: 0.5904\n", "Epoch 2/3\n", "562/562 [==============================] - 14s 25ms/step - loss: 1.0089 - accuracy: 0.5985 - val_loss: 0.9363 - val_accuracy: 0.6307\n", "Epoch 3/3\n", "562/562 [==============================] - 16s 28ms/step - loss: 0.9260 - accuracy: 0.6371 - val_loss: 0.8641 - val_accuracy: 0.6636\n" ] } ], "source": [ "model_3_history=model_3.fit(train_char_dataset,epochs=3,steps_per_epoch=(int(0.1*(len(train_char_dataset)))),\n", " validation_data=val_char_dataset,validation_steps=(int(0.1*len(val_char_dataset))))\n", " " ] }, { "cell_type": "code", "execution_count": 91, "id": "b48b0136", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "945/945 [==============================] - 4s 4ms/step\n" ] } ], "source": [ "model_3_probs=model_3.predict(val_char_dataset)" ] }, { "cell_type": "code", "execution_count": 92, "id": "0bc4c4d0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_3_pred=tf.argmax(model_3_probs,axis=1)\n", "model_3_pred" ] }, { "cell_type": "code", "execution_count": 93, "id": "6112d216", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 65.76194889447902,\n", " 'precision': 65.44382499645309,\n", " 'recall': 65.76194889447902,\n", " 'F1-score': 64.57778080685951}" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_3_results=calculate_results(val_labels_encoder,model_3_pred)\n", "model_3_results" ] }, { "cell_type": "markdown", "id": "1119a3ad", "metadata": {}, "source": [ "# Model_4 (mixing model_1 and model_3)" ] }, { "cell_type": "markdown", "id": "2cf1085f", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": 94, "id": "6545be9f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tf_hub_embedding_layer" ] }, { "cell_type": "code", "execution_count": 95, "id": "e2c516cf", "metadata": {}, "outputs": [], "source": [ "#model_1\n", "inputs=tf.keras.layers.Input(shape=[],dtype=tf.string)\n", "embedding=tf_hub_embedding_layer(inputs)\n", "output=tf.keras.layers.Dense(128,activation=\"relu\")(embedding)\n", "pre_trained_model=tf.keras.Model(inputs,output)" ] }, { "cell_type": "code", "execution_count": 96, "id": "6a6d4427", "metadata": {}, "outputs": [], "source": [ "#model_3\n", "char_input=tf.keras.layers.Input(shape=(1,), dtype=\"string\")\n", "char_vectors=char_vectorization(char_input)\n", "char_embed=char_embedding(char_vectors)\n", "char_bi_lstm=tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(25))(char_embed)\n", "char_model=tf.keras.Model(char_input,char_bi_lstm)" ] }, { "cell_type": "code", "execution_count": 97, "id": "380fc7b9", "metadata": {}, "outputs": [], "source": [ "concatenated_model=tf.keras.layers.Concatenate(name=\"concatenated_layers\")([pre_trained_model.output,char_model.output])" ] }, { "cell_type": "code", "execution_count": 98, "id": "b2e591a8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "concatenated_model" ] }, { "cell_type": "markdown", "id": "29da904d", "metadata": {}, "source": [ "**According to paper**\n", "\n", "For regularization, dropout\n", "with a rate of 0.5 is applied to the characterenhanced token embeddings and before the label\n", "prediction layer." ] }, { "cell_type": "code", "execution_count": 99, "id": "2f73f124", "metadata": {}, "outputs": [], "source": [ "dropout=tf.keras.layers.Dropout(0.5)(concatenated_model)\n", "concatenated_output=tf.keras.layers.Dense(128,activation=\"relu\")(concatenated_model)\n", "final_dropout=tf.keras.layers.Dropout(0.5)(concatenated_output)\n", "output_layer = tf.keras.layers.Dense(len(class_names), activation=\"softmax\")(final_dropout)" ] }, { "cell_type": "code", "execution_count": 100, "id": "2c7a3582", "metadata": {}, "outputs": [], "source": [ "model_4=tf.keras.Model(inputs=[pre_trained_model.input,char_model.input],\n", " outputs=output_layer,\n", " )" ] }, { "cell_type": "code", "execution_count": 101, "id": "dab9fa40", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model_5\"\n", "__________________________________________________________________________________________________\n", " Layer (type) Output Shape Param # Connected to \n", "==================================================================================================\n", " input_5 (InputLayer) [(None, 1)] 0 [] \n", " \n", " input_4 (InputLayer) [(None,)] 0 [] \n", " \n", " text_vectorization_2 (TextVect (None, 290) 0 ['input_5[0][0]'] \n", " orization) \n", " \n", " keras_layer (KerasLayer) (None, 512) 256797824 ['input_4[0][0]'] \n", " \n", " embedding_1 (Embedding) (None, 290, 25) 1750 ['text_vectorization_2[1][0]'] \n", " \n", " dense_4 (Dense) (None, 128) 65664 ['keras_layer[1][0]'] \n", " \n", " bidirectional (Bidirectional) (None, 50) 10200 ['embedding_1[1][0]'] \n", " \n", " concatenated_layers (Concatena (None, 178) 0 ['dense_4[0][0]', \n", " te) 'bidirectional[0][0]'] \n", " \n", " dense_5 (Dense) (None, 128) 22912 ['concatenated_layers[0][0]'] \n", " \n", " dropout_1 (Dropout) (None, 128) 0 ['dense_5[0][0]'] \n", " \n", " dense_6 (Dense) (None, 5) 645 ['dropout_1[0][0]'] \n", " \n", "==================================================================================================\n", "Total params: 256,898,995\n", "Trainable params: 101,171\n", "Non-trainable params: 256,797,824\n", "__________________________________________________________________________________________________\n" ] } ], "source": [ "model_4.summary()" ] }, { "cell_type": "code", "execution_count": 102, "id": "31a93688", "metadata": {}, "outputs": [ { "data": { "image/png": "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2bLUMq6urpV6a2hgYKDN66iFI49biftf9W8p+cjIyECTJk3KTEwAoGHDhmWO2CEiehAxOVGp27dvm/VTIes4w3HLzMxEfHw82rVrh6NHj2LTpk2ODomISFWYnKiMXq9HYmIidu3ahZs3b2LhwoX461//iuDg4Cpv++zZsxg/fnyFy40dOxaxsbFVLq8m2fO42UN2djY8PT2xbNky1KtXz9HhEBGpCvuc2MDZn9GLiNmw1LLodDpotdpqKbOm+5yQ9Zy9PRPRA4t9TmoTjUZj8WVgREREasL3nBAREZGqMDkhIiIiVWFyQkRERKrC5ISIiIhUhckJERERqQqTEyIiIlIVJidERESkKkxOiIiISFWYnBAREZGqMDkhIiIiVWFyQkRERKrC5ISIiIhUhT/8Z6P9+/crv+ZKFcvNzQUAHjMV2r9/P7p16+boMIiISmFyYoPu3bs7OgSnExwcjMjISJvWOXbsGACgTZs29giJ/r9u3bqxTRORKmlERBwdBNG9RowYAQBITU11cCREROQAaexzQkRERKrC5ISIiIhUhckJERERqQqTEyIiIlIVJidERESkKkxOiIiISFWYnBAREZGqMDkhIiIiVWFyQkRERKrC5ISIiIhUhckJERERqQqTEyIiIlIVJidERESkKkxOiIiISFWYnBAREZGqMDkhIiIiVWFyQkRERKrC5ISIiIhUhckJERERqQqTEyIiIlIVJidERESkKkxOiIiISFWYnBAREZGqMDkhIiIiVWFyQkRERKrC5ISIiIhUhckJERERqQqTEyIiIlIVJidERESkKkxOiIiISFWYnBAREZGqMDkhIiIiVWFyQkRERKqic3QAVLslJyfjo48+gslkUqYdP34cANCrVy9lmouLCyZOnIiYmJiaDpGIiGqYRkTE0UFQ7XX48GF06tTJqmUPHTqEP/3pT3aOiIiIHCyNj3XIof70pz+hdevWFS7XokULJiZERLUEkxNyuNjYWLi6upY539XVFePHj6/BiIiIyJH4WIcc7tSpU2jRogXKa4rZ2dlo0aJFDUZFREQOwsc65HjNmjVD586dodFoSs3TaDR47LHHmJgQEdUiTE5IFeLi4qDVaktN12q1iIuLc0BERETkKHysQ6pw+fJlBAYGmg0pBoqHEJ87dw4BAQEOioyIiGoYH+uQOjz00EN48sknze6eaLVaPPXU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JSsrS9auXSvt27cXADJz5kz5/fffK11ORESE2NjYSIsWLeTTTz+VhQsXio2Njbz++usiIpKVlSUtWrQQZ2dn+eyzz0REJC8vTyIjI41tOjk5Ge9KMLcuSy9XROTy5cvi4+MjAMTd3V1GjRol4eHh0rBhQ5k8ebLk5ORU+rlcvHhRJk6cKADE09NTNmzYYNZ6ut+sWbPkvffeKzW8ovrXrVsnHh4eAkCCg4Pl6NGjIiJy69YtcXR0lG7dusmHH34osbGxEh0dLUVFRZW+lxLV6Z8l1q1bJ127dhVHR0cZMGCAvPLKK/LSSy9JbGysyW3G7K9V76/m4N06ViVJI1LG8TQihSQlJSE0NLTMw7yVuXjxInJzc+Hp6Vnm00zz8/Nx8uRJPPHEEyaHlC25nNzcXDRp0sQ4/Pr163B2djaO1+l00Ov1pS6MvHr1Ki5cuIAnnnii0osmy1JTyz179iyKi4vRqVMnnD9/Hi4uLnBycqpyfVWtt4S/vz++/PLLMseZU//95P/uCikuLkZmZibc3d2r/BCvh+mfJfLy8vDTTz/h8ccfr/ACT/ZXyy635GFuycnJVa6Xal0ywwmpiiU2/lQ37Nu3DwkJCap6lDn7p/ViOLEqybyVmIhU4+DBg5gxYwa6dOmC48ePIyUlRemSiEgBDCdEVCXZ2dmIjo6udLpx48YhIiKiyu1nZmbC0dERH3zwARo3blydEonIyjGcEFGVtGnTBps2bap0uur8InHv3r3x+++/V6csIqpDGE6IqEo0Gk2lD84iInoYfM4JERERqQrDCREREakKwwkRERGpCsMJERERqQrDCREREakKwwkRERGpCsMJERERqQrDCREREakKwwkRERGpCsMJERERqQrDCREREakKwwkRERGpCn/4j1QpKSlJ6RKISvnhhx8AsH9ao5ycHLRp00bpMshMDCekSqGhoUqXQFQu9k/rFBQUpHQJZCaNiIjSRRARVYdGo0FiYiJCQkKULoWILCeZ15wQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqMJwQERGRqjCcEBERkaownBAREZGqaJUugIjIHGvWrMHt27dLDd+2bRtu3LhhMmz06NFo3rx5bZVGRBamERFRuggiosqMGzcOCQkJsLOzMw4zGAzQaDTQaDQAgOLiYjRo0AC5ublwcHBQqlQiejjJPK1DRFYhLCwMAKDT6Yz/iouLodfrja9tbW0RHBzMYEJk5RhOiMgqDB48GE2bNq1wGp1OhzFjxtRSRURUUxhOiMgqaLVahIWFmZzWeZCLiwsGDhxYe0URUY1gOCEiqxEWFgadTlfmOHt7e0RERMDW1raWqyIiS2M4ISKr0bdvX7Rq1arMcUVFRcbrUojIujGcEJHV0Gg0iIyMLPPUTtu2bdGrVy8FqiIiS2M4ISKrUtapHTs7O0RFRRlvKSYi68ZwQkRWpXv37vDw8DAZptPpEBoaqlBFRGRpDCdEZHUiIiJMTu14enqiS5cuClZERJbEcEJEVicsLAx6vR7AvVM648aNU7giIrIkhhMisjodOnTAU089BY1GA71ez1M6RHUMwwkRWaXIyEiICHr37o3HHntM6XKIyIL4w39EKsS7TsjSEhMTERISonQZROZI1ipdARGVbdq0afD29la6DFV76623MGnSJDRu3LjUuPfffx8AMH369NouS3V42ousDcMJkUp5e3vzm24lvLy80KlTpzLHJScnAwDXIRhOyPrwmhMislrlBRMism4MJ0RERKQqDCdERESkKgwnREREpCoMJ0RERKQqDCdERESkKgwnREREpCoMJ0RERKQqDCdERESkKgwnREREpCoMJ0RERKQqDCdERESkKgwnREREpCoMJ0RERKQqWqULICLL+/XXX7Fs2TKsWrUK58+fV7qcKjt9+jQOHjxofG1jY4PQ0FDY2trW2DL37t2Lc+fOmQzTarVo3LgxmjZtim7duqF+/fo1tnwi+i+GE6I6KCsrC2lpacjJyVG6lGqJiYnBzp07ja/9/PwwZsyYGl1m3759cefOHYwYMQKNGzfGq6++ivbt2yMrKws//vgjvvvuO/j6+uK9995D586da7QWokcdwwlRHeTr64t+/frhwIEDSpdSZbt27UK3bt3wwQcfGIe1bt26xper0Wgw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\n", "text/plain": [ "" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tensorflow.keras.utils import plot_model\n", "plot_model(model_4)" ] }, { "cell_type": "code", "execution_count": 103, "id": "1e746b48", "metadata": {}, "outputs": [], "source": [ "model_4.compile(loss=\"categorical_crossentropy\",\n", " optimizer=tf.keras.optimizers.legacy.Adam(), \n", " metrics=[\"accuracy\"])\n", " " ] }, { "cell_type": "code", "execution_count": 106, "id": "914ca68b", "metadata": {}, "outputs": [], "source": [ "# Dataset\n", "train_char_token=tf.data.Dataset.from_tensor_slices((train_sentences,train_chars))\n", "train_char_labels=tf.data.Dataset.from_tensor_slices(train_labels_one_hot)\n", "combined_train_dataset=tf.data.Dataset.zip((train_char_token,train_char_labels))\n", "\n", "combined_train_dataset=combined_train_dataset.batch(32).prefetch(tf.data.AUTOTUNE)\n", "\n", "val_char_token=tf.data.Dataset.from_tensor_slices((val_sentences,val_chars))\n", "val_char_labels=tf.data.Dataset.from_tensor_slices(val_labels_one_hot)\n", "combined_val_dataset=tf.data.Dataset.zip((val_char_token,val_char_labels))\n", "\n", "combined_val_dataset=combined_val_dataset.batch(32).prefetch(tf.data.AUTOTUNE)\n", "\n" ] }, { "cell_type": "code", "execution_count": 107, "id": "9dcca50a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(<_PrefetchDataset element_spec=((TensorSpec(shape=(None,), dtype=tf.string, name=None), TensorSpec(shape=(None,), dtype=tf.string, name=None)), TensorSpec(shape=(None, 5), dtype=tf.float64, name=None))>,\n", " <_PrefetchDataset element_spec=((TensorSpec(shape=(None,), dtype=tf.string, name=None), TensorSpec(shape=(None,), dtype=tf.string, name=None)), TensorSpec(shape=(None, 5), dtype=tf.float64, name=None))>)" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "combined_train_dataset,combined_val_dataset" ] }, { "cell_type": "code", "execution_count": 108, "id": "a3c13e34", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n", "562/562 [==============================] - 145s 249ms/step - loss: 0.9091 - accuracy: 0.6467 - val_loss: 0.7813 - val_accuracy: 0.6981\n", "Epoch 2/3\n", "562/562 [==============================] - 111s 198ms/step - loss: 0.7352 - accuracy: 0.7166 - val_loss: 0.6956 - val_accuracy: 0.7350\n", "Epoch 3/3\n", "562/562 [==============================] - 109s 194ms/step - loss: 0.7026 - accuracy: 0.7276 - val_loss: 0.6708 - val_accuracy: 0.7500\n" ] } ], "source": [ "model_4_history = model_4.fit(combined_train_dataset, \n", " steps_per_epoch=int(0.1 * len(combined_train_dataset)),\n", " epochs=3,\n", " validation_data=combined_val_dataset,\n", " validation_steps=int(0.1 * len(combined_val_dataset)))" ] }, { "cell_type": "code", "execution_count": 109, "id": "23709bb3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "945/945 [==============================] - 135s 141ms/step\n" ] } ], "source": [ "model_4_prob=model_4.predict(combined_val_dataset)" ] }, { "cell_type": "code", "execution_count": 110, "id": "ecb21881", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_4_pred=tf.argmax(model_4_prob,axis=1)\n", "model_4_pred" ] }, { "cell_type": "code", "execution_count": 111, "id": "f6af1add", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 74.31815172779028,\n", " 'precision': 74.56791634210045,\n", " 'recall': 74.31815172779028,\n", " 'F1-score': 74.33453044400244}" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_4_results=calculate_results(val_labels_encoder,model_4_pred)\n", "model_4_results" ] }, { "cell_type": "markdown", "id": "4aeab3be", "metadata": {}, "source": [ "# Model_5 (Model_4 +Postional Embeddings: where the sentence appears in an abstract. )" ] }, { "cell_type": "code", "execution_count": 112, "id": "2b81f8f2", "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", "
targettextline_numbertotal_lines
0OBJECTIVEto investigate the efficacy of @ weeks of dail...011
1METHODSa total of @ patients with primary knee oa wer...111
2METHODSoutcome measures included pain reduction and i...211
3METHODSpain was assessed using the visual analog pain...311
4METHODSsecondary outcome measures included the wester...411
...............
180035RESULTSfor the absolute change in percent atheroma vo...711
180036RESULTSfor pav , a significantly greater percentage o...811
180037RESULTSboth strategies had acceptable side effect pro...911
180038CONCLUSIONScompared with standard statin monotherapy , th...1011
180039CONCLUSIONS( plaque regression with cholesterol absorptio...1111
\n", "

180040 rows × 4 columns

\n", "
" ], "text/plain": [ " target text \\\n", "0 OBJECTIVE to investigate the efficacy of @ weeks of dail... \n", "1 METHODS a total of @ patients with primary knee oa wer... \n", "2 METHODS outcome measures included pain reduction and i... \n", "3 METHODS pain was assessed using the visual analog pain... \n", "4 METHODS secondary outcome measures included the wester... \n", "... ... ... \n", "180035 RESULTS for the absolute change in percent atheroma vo... \n", "180036 RESULTS for pav , a significantly greater percentage o... \n", "180037 RESULTS both strategies had acceptable side effect pro... \n", "180038 CONCLUSIONS compared with standard statin monotherapy , th... \n", "180039 CONCLUSIONS ( plaque regression with cholesterol absorptio... \n", "\n", " line_number total_lines \n", "0 0 11 \n", "1 1 11 \n", "2 2 11 \n", "3 3 11 \n", "4 4 11 \n", "... ... ... \n", "180035 7 11 \n", "180036 8 11 \n", "180037 9 11 \n", "180038 10 11 \n", "180039 11 11 \n", "\n", "[180040 rows x 4 columns]" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df" ] }, { "cell_type": "code", "execution_count": 113, "id": "8c657ce9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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+2cmTJigqqoqLViwQB6PR4MGDdLWrVubXRwOAACuXbbfp6m14D5NsAv3aQKA4F1V92kCAAC4GlCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADFCaAAAADNhaml588UUNGDBATqdTTqdTLpdLW7Zs8a+vra1VTk6OOnfurI4dO2r8+PGqrKwM2EZ5ebkyMzPVvn17xcXF6YknntCFCxcCZnbt2qXBgwcrKipKvXr1Un5+frMsq1atUnJystq2bav09HTt3bv3irxnAABwdbK1NHXv3l2LFy9WSUmJ9u3bp9tuu0133XWXDh8+LEmaNWuW3n77bW3cuFFFRUWqqKjQuHHj/D/f2NiozMxM1dfX67333tMrr7yi/Px8LViwwD9z/PhxZWZmasSIESotLdXMmTP18MMPa9u2bf6ZDRs2KDc3VwsXLtT+/fs1cOBAud1unT59+sfbGQAAIKSFWZZl2R3iYrGxsVq6dKnuuecede3aVevWrdM999wjSTpy5IhuvPFGFRcXa/jw4dqyZYvuuOMOVVRUKD4+XpK0Zs0azZ07V1VVVXI4HJo7d64KCgp06NAh/2tMnDhRZ8+e1datWyVJ6enpGjp0qFauXClJ8vl8SkpK0vTp0zVv3jyj3F6vVzExMaqurpbT6WzJXSJJSp5X0OLbROvw6eJMuyMAwFXrcn5/h8w1TY2NjVq/fr1qamrkcrlUUlKihoYGZWRk+Gf69u2rHj16qLi4WJJUXFys/v37+wuTJLndbnm9Xv/ZquLi4oBtNM00baO+vl4lJSUBM+Hh4crIyPDPAAAARNod4ODBg3K5XKqtrVXHjh21adMmpaamqrS0VA6HQ506dQqYj4+Pl8fjkSR5PJ6AwtS0vmndd814vV599dVXOnPmjBobGy85c+TIkW/NXVdXp7q6Ov9zr9d7eW8cAABcVWwvTX369FFpaamqq6v1hz/8QVlZWSoqKrI71vfKy8vTokWL7I4BXJUf3fKRIoCrke0fzzkcDvXq1UtpaWnKy8vTwIEDtWLFCiUkJKi+vl5nz54NmK+srFRCQoIkKSEhodm36Zqef9+M0+lUu3bt1KVLF0VERFxypmkblzJ//nxVV1f7HydOnAjq/QMAgKuD7aXpm3w+n+rq6pSWlqY2bdqosLDQv66srEzl5eVyuVySJJfLpYMHDwZ8y2379u1yOp1KTU31z1y8jaaZpm04HA6lpaUFzPh8PhUWFvpnLiUqKsp/q4SmBwAAaL1s/Xhu/vz5uv3229WjRw+dO3dO69at065du7Rt2zbFxMQoOztbubm5io2NldPp1PTp0+VyuTR8+HBJ0qhRo5SamqoHHnhAS5Yskcfj0ZNPPqmcnBxFRUVJkqZOnaqVK1dqzpw5euihh7Rjxw698cYbKij4x0caubm5ysrK0pAhQzRs2DAtX75cNTU1mjJlii37BQAAhB5bS9Pp06c1efJknTp1SjExMRowYIC2bdumn//855Kk559/XuHh4Ro/frzq6urkdru1evVq/89HRERo8+bNeuyxx+RyudShQwdlZWXp6aef9s+kpKSooKBAs2bN0ooVK9S9e3e99NJLcrvd/pkJEyaoqqpKCxYskMfj0aBBg7R169ZmF4cDAIBrV8jdp+lqxX2aAHNcCA4gVFyV92kCAAAIZZQmAAAAA5QmAAAAA5QmAAAAA5QmAAAAA5QmAAAAA5QmAAAAA5QmAAAAA5QmAAAAA5QmAAAAA5QmAAAAA0GVpr/+9a8tnQMAACCkBVWaevXqpREjRug///M/VVtb29KZAAAAQk5QpWn//v0aMGCAcnNzlZCQoH/913/V3r17WzobAABAyAiqNA0aNEgrVqxQRUWFXn75ZZ06dUo333yz+vXrp2XLlqmqqqqlcwIAANjqB10IHhkZqXHjxmnjxo169tln9cknn2j27NlKSkrS5MmTderUqZbKCQAAYKsfVJr27dunX/ziF+rWrZuWLVum2bNn69ixY9q+fbsqKip01113tVROAAAAW0UG80PLli3T2rVrVVZWpjFjxujVV1/VmDFjFB7+dQdLSUlRfn6+kpOTWzIrAACAbYIqTS+++KIeeughPfjgg+rWrdslZ+Li4vT73//+B4UDAAAIFUGVpqNHj37vjMPhUFZWVjCbBwAACDlBXdO0du1abdy4sdnyjRs36pVXXvnBoQAAAEJNUKUpLy9PXbp0abY8Li5Ov/nNb35wKAAAgFATVGkqLy9XSkpKs+U9e/ZUeXn5Dw4FAAAQaoIqTXFxcTpw4ECz5R999JE6d+78g0MBAACEmqBK07333qt/+7d/086dO9XY2KjGxkbt2LFDM2bM0MSJE1s6IwAAgO2C+vbcr3/9a3366acaOXKkIiO/3oTP59PkyZO5pgkAALRKQZUmh8OhDRs26Ne//rU++ugjtWvXTv3791fPnj1bOh8AAEBICKo0Nbnhhht0ww03tFQWAACAkBVUaWpsbFR+fr4KCwt1+vRp+Xy+gPU7duxokXAAAAChIqjSNGPGDOXn5yszM1P9+vVTWFhYS+cCAAAIKUGVpvXr1+uNN97QmDFjWjoPAABASArqlgMOh0O9evVq6SwAAAAhK6jS9Pjjj2vFihWyLKul8wAAAISkoD6ee/fdd7Vz505t2bJFP/3pT9WmTZuA9W+++WaLhAMAAAgVQZWmTp066e67727pLAAAACErqNK0du3als4BAAAQ0oK6pkmSLly4oD//+c/67W9/q3PnzkmSKioqdP78+RYLBwAAECqCOtP0t7/9TaNHj1Z5ebnq6ur085//XNHR0Xr22WdVV1enNWvWtHROAAAAWwV1pmnGjBkaMmSIzpw5o3bt2vmX33333SosLGyxcAAAAKEiqDNN//M//6P33ntPDocjYHlycrL+7//+r0WCAQAAhJKgzjT5fD41NjY2W37y5ElFR0f/4FAAAAChJqjSNGrUKC1fvtz/PCwsTOfPn9fChQv50yoAAKBVCurjueeee05ut1upqamqra3Vfffdp6NHj6pLly56/fXXWzojAACA7YIqTd27d9dHH32k9evX68CBAzp//ryys7M1adKkgAvDAQAAWougSpMkRUZG6v7772/JLAAAACErqNL06quvfuf6yZMnBxUGAAAgVAVVmmbMmBHwvKGhQV9++aUcDofat29PaQIAAK1OUN+eO3PmTMDj/PnzKisr080338yF4AAAoFUK+m/PfVPv3r21ePHiZmehAAAAWoMWK03S1xeHV1RUtOQmAQAAQkJQ1zT96U9/CnhuWZZOnTqllStX6qabbmqRYAAAAKEkqNI0duzYgOdhYWHq2rWrbrvtNj333HMtkQsAACCkBFWafD5fS+cAAAAIaS16TRMAAEBrFdSZptzcXOPZZcuWBfMSAAAAISWo0vThhx/qww8/VENDg/r06SNJ+vjjjxUREaHBgwf758LCwlomJQAAgM2CKk133nmnoqOj9corr+i6666T9PUNL6dMmaJbbrlFjz/+eIuGBAAAsFtQ1zQ999xzysvL8xcmSbruuuv0zDPP8O05AADQKgVVmrxer6qqqpotr6qq0rlz535wKAAAgFATVGm6++67NWXKFL355ps6efKkTp48qf/6r/9Sdna2xo0b19IZAQAAbBfUNU1r1qzR7Nmzdd9996mhoeHrDUVGKjs7W0uXLm3RgAAAAKEgqNLUvn17rV69WkuXLtWxY8ckSddff706dOjQouEAAABCxQ+6ueWpU6d06tQp9e7dWx06dJBlWS2VCwAAIKQEVZo+//xzjRw5UjfccIPGjBmjU6dOSZKys7O53QAAAGiVgipNs2bNUps2bVReXq727dv7l0+YMEFbt25tsXAAAAChIqhrmt555x1t27ZN3bt3D1jeu3dv/e1vf2uRYAAAAKEkqDNNNTU1AWeYmnzxxReKior6waEAAABCTVCl6ZZbbtGrr77qfx4WFiafz6clS5ZoxIgRLRYOAAAgVARVmpYsWaLf/e53uv3221VfX685c+aoX79+2r17t5599lnj7eTl5Wno0KGKjo5WXFycxo4dq7KysoCZ2tpa5eTkqHPnzurYsaPGjx+vysrKgJny8nJlZmaqffv2iouL0xNPPKELFy4EzOzatUuDBw9WVFSUevXqpfz8/GZ5Vq1apeTkZLVt21bp6enau3ev+U4BAACtWlClqV+/fvr44491880366677lJNTY3GjRunDz/8UNdff73xdoqKipSTk6P3339f27dvV0NDg0aNGqWamhr/zKxZs/T2229r48aNKioqUkVFRcBdxxsbG5WZman6+nq9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/FBjx47V2LFjdejQoSv35gEAwFUlzLIsy+4QkhQWFqZNmzZp7Nixkr4+y5SYmKjHH39cs2fPliRVV1crPj5e+fn5mjhxov7yl78oNTVVH3zwgYYMGSJJ2rp1q8aMGaOTJ08qMTFRL774ov793/9dHo9HDodDkjRv3jy99dZbOnLkiCRpwoQJqqmp0ebNm/15hg8frkGDBmnNmjVG+b1er2JiYlRdXS2n09lSu8UveV5Bi28TgLlPF2faHQHAFXA5v79D9pqm48ePy+PxKCMjw78sJiZG6enpKi4uliQVFxerU6dO/sIkSRkZGQoPD9eePXv8M7feequ/MEmS2+1WWVmZzpw545+5+HWaZppe51Lq6urk9XoDHgAAoPUK2dLk8XgkSfHx8QHL4+Pj/es8Ho/i4uIC1kdGRio2NjZg5lLbuPg1vm2maf2l5OXlKSYmxv9ISkq63LcIAACuIiFbmkLd/PnzVV1d7X+cOHHC7kgAAOAKCtnSlJCQIEmqrKwMWF5ZWelfl5CQoNOnTwesv3Dhgr744ouAmUtt4+LX+LaZpvWXEhUVJafTGfAAAACtV8iWppSUFCUkJKiwsNC/zOv1as+ePXK5XJIkl8uls2fPqqSkxD+zY8cO+Xw+paen+2d2796thoYG/8z27dvVp08fXXfddf6Zi1+naabpdQAAAGwtTefPn1dpaalKS0slfX3xd2lpqcrLyxUWFqaZM2fqmWee0Z/+9CcdPHhQkydPVmJiov8bdjfeeKNGjx6tRx55RHv37tX//u//atq0aZo4caISExMlSffdd58cDoeys7N1+PBhbdiwQStWrFBubq4/x4wZM7R161Y999xzOnLkiJ566int27dP06ZN+7F3CQAACFGRdr74vn37NGLECP/zpiKTlZWl/Px8zZkzRzU1NXr00Ud19uxZ3Xzzzdq6davatm3r/5nXXntN06ZN08iRIxUeHq7x48frhRde8K+PiYnRO++8o5ycHKWlpalLly5asGBBwL2c/vmf/1nr1q3Tk08+qV/+8pfq3bu33nrrLfXr1+9H2AsAAOBqEDL3abracZ8moHXjPk1A69Qq7tMEAAAQSihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABihNAAAABiLtDgAAV4PkeQV2R7hsny7OtDsC0KpwpgkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMAApQkAAMBApN0BAABXRvK8ArsjXLZPF2faHQH4VpxpAgAAMEBpAgAAMEBp+oZVq1YpOTlZbdu2VXp6uvbu3Wt3JAAAEAIoTRfZsGGDcnNztXDhQu3fv18DBw6U2+3W6dOn7Y4GAABsRmm6yLJly/TII49oypQpSk1N1Zo1a9S+fXu9/PLLdkcDAAA249tzf1dfX6+SkhLNnz/fvyw8PFwZGRkqLi5uNl9XV6e6ujr/8+rqakmS1+u9Ivl8dV9eke0CQCjpMWuj3REu26FFbrsj4Ado+r1tWdb3zlKa/u6zzz5TY2Oj4uPjA5bHx8fryJEjzebz8vK0aNGiZsuTkpKuWEYAQOiJWW53ArSEc+fOKSYm5jtnKE1Bmj9/vnJzc/3PfT6fvvjiC3Xu3FlhYWEt+lper1dJSUk6ceKEnE5ni267tWFfmWNfmWNfmWNfmWNfXZ4rtb8sy9K5c+eUmJj4vbOUpr/r0qWLIiIiVFlZGbC8srJSCQkJzeajoqIUFRUVsKxTp05XMqKcTif/YRliX5ljX5ljX5ljX5ljX12eK7G/vu8MUxMuBP87h8OhtLQ0FRYW+pf5fD4VFhbK5XLZmAwAAIQCzjRdJDc3V1lZWRoyZIiGDRum5cuXq6amRlOmTLE7GgAAsBml6SITJkxQVVWVFixYII/Ho0GDBmnr1q3NLg7/sUVFRWnhwoXNPg5Ec+wrc+wrc+wrc+wrc+yryxMK+yvMMvmOHQAAwDWOa5oAAAAMUJoAAAAMUJoAAAAMUJoAAAAMUJpC3KpVq5ScnKy2bdsqPT1de/futTtSSHrqqacUFhYW8Ojbt6/dsULC7t27deeddyoxMVFhYWF66623AtZblqUFCxaoW7duateunTIyMnT06FF7wtrs+/bVgw8+2Ow4Gz16tD1hbZaXl6ehQ4cqOjpacXFxGjt2rMrKygJmamtrlZOTo86dO6tjx44aP358sxsIXwtM9tXPfvazZsfW1KlTbUpsnxdffFEDBgzw38DS5XJpy5Yt/vV2H1OUphC2YcMG5ebmauHChdq/f78GDhwot9ut06dP2x0tJP30pz/VqVOn/I93333X7kghoaamRgMHDtSqVasuuX7JkiV64YUXtGbNGu3Zs0cdOnSQ2+1WbW3tj5zUft+3ryRp9OjRAcfZ66+//iMmDB1FRUXKycnR+++/r+3bt6uhoUGjRo1STU2Nf2bWrFl6++23tXHjRhUVFamiokLjxo2zMbU9TPaVJD3yyCMBx9aSJUtsSmyf7t27a/HixSopKdG+fft022236a677tLhw4clhcAxZSFkDRs2zMrJyfE/b2xstBITE628vDwbU4WmhQsXWgMHDrQ7RsiTZG3atMn/3OfzWQkJCdbSpUv9y86ePWtFRUVZr7/+ug0JQ8c395VlWVZWVpZ111132ZIn1J0+fdqSZBUVFVmW9fVx1KZNG2vjxo3+mb/85S+WJKu4uNiumCHhm/vKsizrX/7lX6wZM2bYFyqEXXfdddZLL70UEscUZ5pCVH19vUpKSpSRkeFfFh4eroyMDBUXF9uYLHQdPXpUiYmJ+slPfqJJkyapvLzc7kgh7/jx4/J4PAHHWUxMjNLT0znOvsWuXbsUFxenPn366LHHHtPnn39ud6SQUF1dLUmKjY2VJJWUlKihoSHg2Orbt6969OhxzR9b39xXTV577TV16dJF/fr10/z58/Xll1/aES9kNDY2av369aqpqZHL5QqJY4o7goeozz77TI2Njc3uRh4fH68jR47YlCp0paenKz8/X3369NGpU6e0aNEi3XLLLTp06JCio6PtjheyPB6PJF3yOGtah38YPXq0xo0bp5SUFB07dky//OUvdfvtt6u4uFgRERF2x7ONz+fTzJkzddNNN6lfv36Svj62HA5Hsz9kfq0fW5faV5J03333qWfPnkpMTNSBAwc0d+5clZWV6c0337QxrT0OHjwol8ul2tpadezYUZs2bVJqaqpKS0ttP6YoTWgVbr/9dv+/BwwYoPT0dPXs2VNvvPGGsrOzbUyG1mTixIn+f/fv318DBgzQ9ddfr127dmnkyJE2JrNXTk6ODh06xHWEBr5tXz366KP+f/fv31/dunXTyJEjdezYMV1//fU/dkxb9enTR6WlpaqurtYf/vAHZWVlqaioyO5YkrgQPGR16dJFERERzb4VUFlZqYSEBJtSXT06deqkG264QZ988ondUUJa07HEcRacn/zkJ+rSpcs1fZxNmzZNmzdv1s6dO9W9e3f/8oSEBNXX1+vs2bMB89fysfVt++pS0tPTJemaPLYcDod69eqltLQ05eXlaeDAgVqxYkVIHFOUphDlcDiUlpamwsJC/zKfz6fCwkK5XC4bk10dzp8/r2PHjqlbt252RwlpKSkpSkhICDjOvF6v9uzZw3Fm4OTJk/r888+vyePMsixNmzZNmzZt0o4dO5SSkhKwPi0tTW3atAk4tsrKylReXn7NHVvft68upbS0VJKuyWPrm3w+n+rq6kLimOLjuRCWm5urrKwsDRkyRMOGDdPy5ctVU1OjKVOm2B0t5MyePVt33nmnevbsqYqKCi1cuFARERG699577Y5mu/Pnzwf83+rx48dVWlqq2NhY9ejRQzNnztQzzzyj3r17KyUlRb/61a+UmJiosWPH2hfaJt+1r2JjY7Vo0SKNHz9eCQkJOnbsmObMmaNevXrJ7XbbmNoeOTk5Wrdunf74xz8qOjraf01JTEyM2rVrp5iYGGVnZys3N1exsbFyOp2aPn26XC6Xhg8fbnP6H9f37atjx45p3bp1GjNmjDp37qwDBw5o1qxZuvXWWzVgwACb0/+45s+fr9tvv109evTQuXPntG7dOu3atUvbtm0LjWPqR/mOHoL2H//xH1aPHj0sh8NhDRs2zHr//fftjhSSJkyYYHXr1s1yOBzWP/3TP1kTJkywPvnkE7tjhYSdO3dakpo9srKyLMv6+rYDv/rVr6z4+HgrKirKGjlypFVWVmZvaJt817768ssvrVGjRlldu3a12rRpY/Xs2dN65JFHLI/HY3dsW1xqP0my1q5d65/56quvrF/84hfWddddZ7Vv3966++67rVOnTtkX2ibft6/Ky8utW2+91YqNjbWioqKsXr16WU888YRVXV1tb3AbPPTQQ1bPnj0th8Nhde3a1Ro5cqT1zjvv+NfbfUyFWZZl/Tj1DAAA4OrFNU0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAGKE0AAAAG/h9OqcxjzMXKQgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train_df.line_number.plot.hist()" ] }, { "cell_type": "code", "execution_count": 114, "id": "99c45c9e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15.0" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.percentile(train_df.line_number,98)" ] }, { "cell_type": "code", "execution_count": 115, "id": "acac96ff", "metadata": {}, "outputs": [], "source": [ "train_line_number_one_hot=tf.one_hot(train_df[\"line_number\"].to_numpy(),depth=15)\n", "val_line_number_one_hot=tf.one_hot(val_df[\"line_number\"].to_numpy(),depth=15)\n", "test_line_number_one_hot=tf.one_hot(test_df[\"line_number\"].to_numpy(),depth=15)\n" ] }, { "cell_type": "code", "execution_count": 116, "id": "8982b552", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_line_number_one_hot[:10]" ] }, { "cell_type": "code", "execution_count": 117, "id": "2c05ba32", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "total_lines\n", "11 24468\n", "10 23639\n", "12 22113\n", "9 19400\n", "13 18438\n", "14 14610\n", "8 12285\n", "15 10768\n", "7 7464\n", "16 7429\n", "17 5202\n", "6 3353\n", "18 3344\n", "19 2480\n", "20 1281\n", "5 1146\n", "21 770\n", "22 759\n", "23 264\n", "4 215\n", "24 200\n", "25 182\n", "26 81\n", "28 58\n", "3 32\n", "30 31\n", "27 28\n", "Name: count, dtype: int64" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[\"total_lines\"].value_counts()" ] }, { "cell_type": "code", "execution_count": 118, "id": "87b40999", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20.0" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.percentile(train_df.total_lines,98)" ] }, { "cell_type": "code", "execution_count": 119, "id": "210c84b4", "metadata": {}, "outputs": [], "source": [ "train_total_lines=tf.one_hot(train_df[\"total_lines\"].to_numpy(),depth=20)\n", "valid_total_lines=tf.one_hot(val_df[\"total_lines\"].to_numpy(),depth=20)\n", "test_total_lines=tf.one_hot(test_df[\"total_lines\"].to_numpy(),depth=20)" ] }, { "cell_type": "code", "execution_count": 120, "id": "34d63477", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_total_lines[:5]" ] }, { "cell_type": "code", "execution_count": 121, "id": "2e75261c", "metadata": {}, "outputs": [], "source": [ "# Token_input\n", "token_inputs=tf.keras.layers.Input(shape=[],dtype=\"string\")\n", "embedding_layer=tf_hub_embedding_layer(token_inputs)\n", "token_outputs=tf.keras.layers.Dense(128,activation=\"relu\") (embedding_layer)\n", "first_model=tf.keras.Model(token_inputs,token_outputs)\n", "\n", "# Char_inputs\n", "\n", "char_inputs=tf.keras.layers.Input(shape=(1,),dtype=\"string\")\n", "char_tokens=char_vectorization(char_inputs)\n", "char_embedded=char_embedding(char_tokens)\n", "char_outputs=tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(32))(char_embedded)\n", "second_model=tf.keras.Model(char_inputs,char_outputs)\n", "\n", "# Line Number \n", "line_number=tf.keras.layers.Input(shape=(15,), dtype=tf.int32)\n", "x=tf.keras.layers.Dense(32,activation=\"relu\")(line_number)\n", "line_number_model=tf.keras.Model(line_number,x)\n", "\n", "#total lines\n", "total_lines_inputs = tf.keras.layers.Input(shape=(20,), dtype=tf.int32)\n", "y = tf.keras.layers.Dense(32, activation=\"relu\")(total_lines_inputs)\n", "total_line_model = tf.keras.Model(total_lines_inputs,y)\n", "\n", "combined_model=tf.keras.layers.Concatenate()([first_model.output,second_model.output])\n", "z = tf.keras.layers.Dense(256, activation=\"relu\")(combined_model)\n", "z = tf.keras.layers.Dropout(0.5)(z)\n", "\n", "z = tf.keras.layers.Concatenate()([line_number_model.output,total_line_model.output,z])\n", "output_layer = tf.keras.layers.Dense(5, activation=\"softmax\", name=\"output_layer\")(z)\n" ] }, { "cell_type": "code", "execution_count": 122, "id": "cb4d33bc", "metadata": {}, "outputs": [], "source": [ "model_5 = tf.keras.Model(inputs=[line_number_model.input,\n", " total_line_model.input,\n", " first_model.input, \n", " second_model.input],\n", " outputs=output_layer)\n", " " ] }, { "cell_type": "code", "execution_count": 123, "id": "f2b0c51f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model_10\"\n", "__________________________________________________________________________________________________\n", " Layer (type) Output Shape Param # Connected to \n", "==================================================================================================\n", " input_7 (InputLayer) [(None, 1)] 0 [] \n", " \n", " input_6 (InputLayer) [(None,)] 0 [] \n", " \n", " text_vectorization_2 (TextVect (None, 290) 0 ['input_7[0][0]'] \n", " orization) \n", " \n", " keras_layer (KerasLayer) (None, 512) 256797824 ['input_6[0][0]'] \n", " \n", " embedding_1 (Embedding) (None, 290, 25) 1750 ['text_vectorization_2[2][0]'] \n", " \n", " dense_7 (Dense) (None, 128) 65664 ['keras_layer[2][0]'] \n", " \n", " bidirectional_1 (Bidirectional (None, 64) 14848 ['embedding_1[2][0]'] \n", " ) \n", " \n", " concatenate (Concatenate) (None, 192) 0 ['dense_7[0][0]', \n", " 'bidirectional_1[0][0]'] \n", " \n", " input_8 (InputLayer) [(None, 15)] 0 [] \n", " \n", " input_9 (InputLayer) [(None, 20)] 0 [] \n", " \n", " dense_10 (Dense) (None, 256) 49408 ['concatenate[0][0]'] \n", " \n", " dense_8 (Dense) (None, 32) 512 ['input_8[0][0]'] \n", " \n", " dense_9 (Dense) (None, 32) 672 ['input_9[0][0]'] \n", " \n", " dropout_2 (Dropout) (None, 256) 0 ['dense_10[0][0]'] \n", " \n", " concatenate_1 (Concatenate) (None, 320) 0 ['dense_8[0][0]', \n", " 'dense_9[0][0]', \n", " 'dropout_2[0][0]'] \n", " \n", " output_layer (Dense) (None, 5) 1605 ['concatenate_1[0][0]'] \n", " \n", "==================================================================================================\n", "Total params: 256,932,283\n", "Trainable params: 134,459\n", "Non-trainable params: 256,797,824\n", "__________________________________________________________________________________________________\n" ] } ], "source": [ "model_5.summary()\n" ] }, { "cell_type": "code", "execution_count": 124, "id": "4da74e81", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABIYAAAO/CAYAAAC6Pc3rAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzde1hVVd4H8O8BuYnghRJRzAsmmpdATWXUSk0EGW8hMoII6pRYOho5pq+jdtE3rHHSLNQcE5soDwiKlzTQ8WVIcHrNzBQVJEbxmhcUA0Tg/N4/eM5+PXKAw+VwDvD9PI9Pnb332eu31157wf6x91oqEREQEREREREREVGzY2HqAIiIiIiIiIiIyDSYGCIiIiIiIiIiaqaYGCIiIiIiIiIiaqaYGCIiIiIiIiIiaqZamDoAc/K3v/0N6enppg6DiJooLy8vREREmDoMIiIiIiIiBZ8YekR6ejqOHTtm6jBIj507d+Ly5cumDsOsHTt2jO3XjB07doyJZyIiIiIiMjt8YugxQ4cORVxcnKnDoMeoVCq88cYbmDp1qqlDMVsBAQEAwPZrprTnh4iIiIiIyJzwiSEiIiIiIiIiomaKiSEiIiIiIiIiomaKiSEiIiIiIiIiomaKiSEiIiIiIiIiomaKiSEiIiIiIiIiomaKs5I1sLy8PAwbNgxvvfUWQkNDTR2OwfLy8rB//3696/r374/+/fs3cEQ111jr3pj27t0LtVqtfPbz88O0adN0tsnKysLu3bvh4uKiLBszZgycnZ11tisuLkZCQgLKysoAABYWFvDx8UG7du2MeAR1k5SUhJKSEvj5+SnLjhw5gpYtW2LIkCE62x4/fhzr1q1TPg8YMAARERENFisREREREZExMDHUwFq0aAEnJye0atXKZDEUFxfDxsamRt/ZvHkzli5dqnddXFxco0gMNda6N6aMjAwcPnwYp0+fBgDY2dnprE9ISMCRI0ewbt063L59G8uXL8dnn32GoUOH4n/+5390jsXGxga+vr5YsGABLly4ALVabbZJoUOHDuHDDz9EUlIS3n77bZ3E0MiRI7Ft2zYcOXIES5YsUZb3798f69evBwDMnDkTKSkpTAwREREREVGjx1fJGpiDgwNSU1Ph7+9vshiWLVsGjUZj8PYigsTERMTGxiIjIwM5OTnIycnB999/j1atWmHcuHFGjLb+NMa6bwgWFhZwcnKCk5MTWrZsqSw/deoUPvroI2zYsAGWlpZo3749Nm/eDHd3dxw7dgzh4eEV9tWmTRt4e3tj1KhRcHV1bcjDqJHhw4dj8+bNla6fOXMmzp8/j6SkJGWZtbW1Uk/W1tYNESYREREREZHRMTHUzPz888/YtGlTjb5z8eJFbNq0CQEBAejduze6du2Krl274scff4Sfn59OMoEqV5u6N5WysjL4+/sjODi4wjp7e3t4eXkhOjpa59UqLWtra5M+lWUIW1tbdOrUqcpt3nvvPYSHh6OgoKCBoiIiIiIiImp4TAw1sAcPHuAf//iHzpMIFy5cwF/+8hdoNBpkZWVh9erV2LJlC0pKSpRtsrOzlZvw7777DsuWLcP27duVp0/UajW+/vpr7Ny5U/nOzp078fXXX2P37t0AgKNHj+L3v/89CgoKsGPHDsTFxRkUc9euXfHss89WWB4XF4epU6fWvBJMxBzrvqCgAO+++y7Onz9v9OOvicTERFy5cgVBQUF61yckJMDV1RWLFi3CoUOHqt1fcXExkpKSsGzZMnz66afIzs7WWW/IeQCA/Px8bNmyBREREfjkk0/w22+/1foYLS0tq1zv6uoKBwcHrFixotZlEBERERERmTsmhhrQuXPnMG3aNMyYMQMnT54EAGzfvh3Dhw/H6tWrsX//fixZsgTp6el49dVX8d577wEAPvnkE3h4eOCDDz7AV199hddeew0fffQRwsLClMTMuHHj8Omnn2L27NlKecOGDcP777+PuXPnAih/JWzEiBEAgNatW6N169a1PpZbt27h+PHj8PX1rfU+GpK51n1aWhpWrlyJzz//vMHqwhCffPIJ3N3d4ejoqHd9hw4dsHv3blhbWyMwMLBCoudRDx48gI+PD/Ly8vDnP/8ZIgJPT08kJCQAMOw8AOWDYE+fPh1dunRBaGgoNm/eDA8PD9y9e7dWx6hSqXT+q8/vfvc7xMfH12r/REREREREjQETQw2oV69e+PTTT3WWhYaGKjNkiQji4+Oxb98+jBw5Upktat68efDz80N+fj5EBKdOnUJ2dja8vLwQHx+PpKQkODg4wNPTU2ffLi4uOjMrDR8+HD179gRQnszw9vau9bHs2rULPj4+FQYrNlfmWvejRo1CYmIi3nrrLaMde02JCNLT09GxY8cqtxs4cCC2bt2KO3fuYOLEibh//77e7WbPno1u3bohMDAQbdq0wbx58zB27FhMnz4dly9fNug8AMDrr7+OWbNmwdvbG88++yw+/PBDZGdn429/+1v9HfxjnJ2d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osbgX//6F9LT03WWnTt3DgCwZs0aneVeXl54/vnnGyw2IiIiIiIiotpSiYiYOggic3f48GG89NJLsLKygoWF/gftNBoNSkpKcOjQIYwePbqBIyQiIiIiIiKqOSaGiAyg0WjQoUMH3Lx5s8rtnnjiCVy/fh2WlpYNFBkRERERERFR7XGMISIDWFhYIDg4GNbW1pVuY21tjajEWkUAACAASURBVOnTpzMpRERERERERI0GE0NEBpo2bRoePnxY6fqHDx9i2rRpDRgRERERERERUd3wVTKiGujatSsuXryod13nzp1x8eJFqFSqBo6KiIiIiIiIqHb4xBBRDYSEhMDKyqrCcisrK4SFhTEpRERERERERI0KnxgiqoFz586hd+/eetedPn0affr0aeCIiIiIiIiIiGqPTwwR1UCvXr3Qp0+fCk8GPfPMM0wKERERERERUaPDxBBRDc2YMUNn5jErKyuEhoaaMCIiIiIiIiKi2uGrZEQ1lJubiy5dukB76ahUKvzyyy/o2rWraQMjIiIiIiIiqiE+MURUQ507d8aQIUNgYWEBCwsLDBkyhEkhIiIiIiIiapSYGCKqhZCQEKhUKlhYWCAkJMTU4RARERERERHVCl8lI6qFW7duoUOHDgCAq1evon379iaOiIiIiIiIiKjmTJYYenxWJyIiMo3G/vcB/jwhIkM19v6OiIjIGFqYsvCFCxfCy8vLlCEQVSk9PR3r1q2DWq2usO5f//oXVCoVRowYYYLIzEtgYCCv50ZI276bArY/81NV/0n/j/1nw2hK/R0REVF9M+kTQ2q1GlOnTjVF8UQGiY2NRWBgoN6/MN6/fx8A4ODg0NBhmR1ez41TVe27MWH7M09NpX0ZG9tvw2B7JCIiqpxJnxgiasyYECIiIiIiIqLGjrOSERERERERERE1U0wMERERERERERE1U0wMERERERERERE1U0wMERERERERERE1Uxx8uhnJy8vDsGHD8NZbbyE0NLTRl1OVixcvIiYmBr/++is8PDwQHBwMKysrk8QCmEedNHZZWVnYvXs3XFxclGVjxoyBs7OzznbFxcVISEhAWVkZAMDCwgI+Pj5o165dg8ZbE0lJSSgpKYGfn5+y7MiRI2jZsiWGDBliwshIq6lcw9euXcPhw4eRm5uLqVOnws3NzdQhVaup1H192bt3L9RqtfLZz88P06ZN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iIiIqP41qlnJrKysYGVlVWH5E088UacZgirbr6E6d+5c5frq4uvYsWOlU8xWFpudnV2FqWSNRfsYvVbbtm11Ptek/hoy7qbE2toaHh4ela5XqVTo16+f8lk7e8yj9J0nfduZm82bNyMsLAx+fn41nsJb33VXX22wsuva2dkZW7du1Rnfqi62bNmCqKgodO/evV72R6ZhrGu4JuU/88wztfpuY9ec+s+m0l+y3yMiImpYjWaMIaLmqLCwsMqxZ5qDzp07Y968eYiMjDR1KAbZuHEjfHx8qrwRNdSOHTtgZ2eHWbNm1UNkZAq8hk2nKde9iECj0UCj0egMXN8U+svK+j19x0tERET1o1E9MWRsubm5mDlzZrXbhYaGIiQkpAEiIq3mdm5KSkqwZcsWpKSk4P79+1i+fDnmzJkDV1dXU4dmEpMnT4aHhwfi4+OVQWPN1Zw5c2r8l3p9UlNT0bZtW6xevboeoqKGZsxruLn1hzXV1PtPNzc3DBw4EBMnTgQAvPzyyzrtoTH3l5X1e+np6Vi1apXyeciQIQ0WIxERUXOgEhP96UWlUkGtVmPq1KmmKF4vEdGZUrUyLVq00JnBg4zPVOcmNjYWgYGB/AtlNczxeqbqNZX23dzaX2P5WdVU2pexNbf2aypsj0RERJXjE0OPUKlUsLGxMXUYpAfPDRFROfaHRERERFSfOMYQEREREREREVEzxcQQEREREREREVEzxcQQEREREREREVEzZdIxhtLT001ZPFG1tG00NjbWxJGYP17PjU9TOmdN6ViaCvafhmP7NT7WMRERUeVMOisZERGZXmOfpYc/T4jIUI29vyMiIjIGk75KplarISL8x39m+0+tVgOAyeMw93+8nhvnP237bgrY/szvH/tPw/6x/TbMv6bU3xEREdU3jjFERERERERERNRMMTFERERERERERNRMMTFERERERERERNRMMTFERERERERERNRMMTFERERERERERNRMMTFERERERERERNRMtTB1APXpypUrOHLkSLXbtWvXDuPGjTNKDPv27cPdu3d1lvn6+sLJyUn5fOLECWRkZCifx4wZA2dnZ6PEU1N5eXkYNmwY3nrrLYSGhjb6csj8ZWVlYffu3XBxcVGW6bsmiouLkZCQgLKyMgCAhYUFfHx80K5duwaN1xAXL15ETEwMfv31V3h4eCA4OBhWVlY6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rVZLdHS0pKamGjz1d3Jycol/l/j4eLG3t5ekpCSjY6kpF0qV+XlS0eegMfTlXY2hQ4eWuE6kfD4Hi8P8aZjy6hgSqTl5tbS8xo4hIiKi8meRs5IV1aBBgzLPQmRra6szrfSTSptJzJA4mjZtWuI0tCXV7+DgoDPdbEXR3Fqv4eLiovXakGOkUZlxVyR9+6FSqdChQwfltWbGl6JKOm52dnbo1KlTuW+7uHIVZfPmzZg2bRqGDRtm9FTexZ0r5dVuSjoXXV1dsW3bNq1xg0yhUqng5eVl1HtKG2MjODgYGzduxDPPPFOmuMg4FXUOGkNf3gUKx9Bp0aJFses0yuNzsLwxf5qmpuRV5jUiIqLKVaPHGCKqabKzs5Vxmaq7Fi1aYP78+Vi9erW5QzHI559/jsGDB5d6QVnZdu/eDQcHB8yYMcPcoViM6nAOxsbGwsvLC6+//jqWLFmCNWvWmDukKqE6/O0MJSJQq9VQq9Vag47XhLxaUl4rbn+JiIiofLBjiKgayMvLw8aNGxEVFYUHDx7g/fffx/Xr180dVpmNGjUKEydOxL59+8wdil6vv/46unTpYu4wFNHR0XBxccHKlSvNHYpFqG7nYGJiIpKTk7F+/XrUqVPH3OGYVXX72+nTunVrvPDCC/jLX/6Cv/zlLwgJCdFaX53zakl57T//+Q9eeeUVvPLKK3j8+DFeeOGFyg6ViIioRrP4R8mIqgNbW1vMnTsXc+fONXco5a5Vq1bVYjpiYx/LqGiGThlN5aM6nYPdu3dHenq6ucOoMqrT384QY8eOxdixY0stU13zakl5rWfPnjhy5EhlhERERGSRqtaVDhERERERERERVRp2DBERERERERERWSh2DBERERERERERWSh2DBERERERERERWSiVmGneT5VKhR49eqB58+bmqJ7IINevX8fZs2f1DvRp6fbu3cvzuRrStO/qPv0zP0+qJuZPwzB/Vo6aku+IiIgqgtk6hsaNG2eOaonKzU8//QQA6NChg5kjISqbiIgIc4dQJvw8oScxP1NJqnu+IyIiqghm6xgiqu7Gjx8PAAgPDzdzJEREVBTzMxEREZHhOMYQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFYscQEREREREREZGFUomImDsIoqruiy++wEcffYSCggJl2Z07dwAADRo0UJZZW1tj8eLF8PPzq/QYiYgsEfMzERERUdmwY4jIAFevXkXbtm0NKpuQkAAPD48KjoiIiADmZyIiIqKy4qNkRAbw8PDA888/D5VKVWIZlUqF559/nhcdRESViPmZiIiIqGzYMURkID8/P1hbW5e43sbGBlOnTq3EiIiICGB+JiIiIioLPkpGZKC0tDS0aNECarW62PUqlQqpqalo1qxZJUdGRGTZmJ+JiIiITMc7hogM1LRpU/Tq1QtWVrqnjZWVFXr37s2LDiIiM2B+JiIiIjIdO4aIjDBlypRil6tUKs50Q0RkRszPRERERKbho2RERrh37x5cXV2Rl5entdzGxga3bt1C/fr1zRQZEZFlY34mIiIiMg3vGCIygouLC15++WWtQU6tra0xaNAgXnQQEZkR8zMRERGRadgxRGSkyZMnaw1wKiKYPHmyGSMiIiKA+ZmIiIjIFHyUjMhI2dnZqF+/Ph4/fgwAqFWrFu7cuQNHR0czR0ZEZNmYn4mIiIiMxzuGiIz01FNPYdSoUbC1tYWtrS1GjRrFiw4ioiqA+ZmIiIjIeOwYIjKBr68v8vLykJeXB19fX3OHQ0RE/x/zMxEREZFxbMwdgD7Xr19HTEyMucMg0lJQUICnnnoKIoL79+8jPDzc3CERaenVqxeaN29u7jBMwvOJyoL5mcrT+PHjzR0CERFRhavyYwyFh4djwoQJ5g6DiKha2bNnT7W9oFGpVOYOgYgIQOEA5kRE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3zRzJES6evXqZe4QTMacT2XF/ExERERkuCp/xxBRVaW5GyM8PNzMkRARUVHMz0RERESG4xhDREREREREREQWih1DREREREREREQWih1DREREREREREQWih1DREREREREREQWih1D9P/Yu/P4mM6+f+CfySoisTe2VtRW+/Kz5UFb1Bp1I5YisT19FKU0taWpouUudzdqlxZpmxLU7lah1K1C7bTVRiRBBBVKQkRMZr6/PzxznkxmJjOTzGQmmc/79fJ6mXOuc53rnHOd7znnyrnORUREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuig1DREREREREREQuysPRBSAqCe7cuYPMzEy9aVlZWQCA5ORkven+/v6oUqVKsZWNiMiVMT4TERERFY1KRMTRhSByduvWrcPYsWMtSrt27VqMGTPGziUiIiKA8ZmIiIioqNgwRGSBjIwMVK1aFWq1usB0np6eSE9PR/ny5YupZEREro3xmYiIiKho+I0hIguUL18effr0gYeH6d6XHh4eCA4O5kMHEVExYnwmIiIiKho2DBFZKDQ0FBqNxuR8rVaL0NDQYiwREREBjM9ERERERcGuZEQWevz4MapUqaJ81DS/smXL4s6dO/Dx8SnmkhERuTbGZyIiIqLC4xtDRBYqU6YMBg4cCE9PT4N5np6eGDRoEB86iIgcgPGZiIiIqPDYMERkheHDhxv9wKlarcbw4cMdUCIiIgIYn4mIiIgKi13JiKyQm5uLgIAA/P3333rTK1SogPT09AI/fkpERPbD+ExERERUOHxjiMgKHh4eGDZsmF53BU9PT4SGhvKhg4jIgRifiYiIiAqHDUNEVho2bJhedwW1Wo1hw4Y5sERERAQwPhMREREVBruSEVlJRPDss88iLS0NAFC9enWkpaVBpVI5uGRERK6N8ZmIiIjIenxjiMhKKpUKYWFh8PLygpeXF0aNGsWHDiIiJ8D4TERERGQ9vjFEVAgXLlxAixYtlP83a9bMwSUiIiKA8ZmIiIjIWgZfYzx27Bg+++wzR5SFqEQpV64cAOCDDz5wcEmInF94eDiCgoLskjevW5Qf4zMZY884REREVJIZdCVLTU3Fli1bHFEWIqexZcsWXL9+vcA0tWvXRmBgYPEUyAkdP34cx48fd3QxqATYsmULUlNT7ZY/r1u2YUncKynsFZ8Z90oue8chIiKikszk+K2bN28uznIQORWVSoW3334bQ4YMMZkmOTkZAPD8888XV7GcyuDBgwEwVpB5xfWNF9bForEk7pUU9orPjHslF781RUREZJrJhiEiKpirNggRETk7xmciIiIiy3FUMiIiIiIiIiIiF8WGISIiIiIiIiIiF8WGISIiIiIiIiIiF8WGISIiIiIiIiIiF1Xkj09fvHgRq1evRnx8PE6ePGky3b1799CxY0fMnDkTo0aNMprm6tWrWLNmDWJiYnDlyhWLl7MnR60/NzcXO3bswMqVK/Hqq69iypQphconLi4OarUawcHBJtMkJibi6NGjCA0Ntck6i5Ox7Tt06BDKli2L9u3bO7Bkjq+7zi4xMRHbt29H9erVlWndu3dHQECAXrqcnBxs3boVGo0GAODm5oZevXqhUqVKxVpeS1y9ehUxMTG4ffs2WrZsiREjRsDT01MvTXZ2NrZu3YozZ86gXr16GD58OMqXL2+Q19mzZ/H999/jueeew/Dhw1GuXDm7lQkALl26hBMnTii/3dzcMHToUPznP/9xivPJ3oxdf0qCe/fuYc+ePUbnNW/eHM2bNy/28jDumVYa4x5gOn64u7vrpSvonqSgWOUs13UiIqLSqshvDKWkpOCHH37AnTt3Ckzn4eGBypUrF/hwk5ycjJ9++gnXr1+3ajlbysnJ0ftd3OvXuX79Om7cuIEff/wRarXa6uUPHDiAnj17omfPnjh16pTJdFu3bsUXX3yBsLCwQq8z/z4rDgVtX5cuXXDx4kUsXLiw2MuVl6PqTl6OODaW0NW78PBw9OjRA0eOHEFYWBj69+9vUGZvb2/07t0b+/fvx8qVK/Hiiy865cPRxYsX0aRJE6xcuRIrVqzAmDFj0KFDBzx8+FBJc/fuXfTs2RN37tzBtGnTkJKSgnbt2uHq1at6ea1btw6RkZH4n//5H5QpUwYvv/yy2Rhb2DLpjBs3DmFhYcq/mJgYuLu7O835ZG/Grj8lwerVq/WOW95/ly5dKvbyMO6ZVhrjno6p+KFj7p7EXKxylThERETkMJJPbGysGJlcoNdee00CAwOtWsaU6dOni7u7u03yKox33nlHNBqNw9af1507dwSAfPzxx1Yvm52dLSkpKQJA5s6dazTN+fPnpVOnTkVepyP2mSXbN3r0aNm3b1+h8gcgsbGxRSmiU7DnsRk0aJAMGjTI6uWM1TsRkYYNGwoAGT16tNHlvv32W3nvvfesXl9xCQ8Pl2PHjomIyPXr12Xo0KECQGbNmqWkGTVqlLz88svKb41GI82bN5d+/fop037//Xfx8/OTGzduKNN69OghEyZMsEuZREQOHz4skyZNkrNnzyr/bt++rZfGmc+nwly3jHH09cdaWq1WOnToIJs2bZKLFy9KSkqKpKSkyIkTJ6RcuXKSlZVlVX6Me+Yx7hmyJH6Yu2ZbGqucOQ4RERGVZDb5xpCxbgnOkJe1fv31V6xatcph68/Pw6PwPf3KlCmDmjVrmpyv0WgQEhKCESNGFGmdjtpn5rYPAD788EOMHz8eWVlZxVQq5+Js9RkwXe8AwNfXF0FBQVi/fj0WL15sMN/Ly8uhbyEU5P79++jUqRM6dOgAAKhZsyYWLVoElUqFX375BQCQkZGBb7/9Fj179lSWc3Nzw5gxY7Bz506cP38eADBt2jTUr19fr6tJ165d8dVXXyE1NdWmZdL56KOP8O6776Jly5bKv6pVq+qlcYXzyZHXn8K4evUqVq1ahcGDB6NRo0YIDAxEYGAgzp49i+DgYJQtW9bRRSx2jHvFz5L4UdA125pY5QpxiIiIyBFs0jCkUqmgUqkAAD/88AMiIiKwadMmvTSPHz/GN998g7i4OL3parUamzZtQkREBPbt2wetVmt2uaSkJMyePRsajQa7d+/Gv/71L6XrU2ZmJqKiohAeHo5ly5YZdJnQ5Tdr1izs2LED2dnZAICjR4+ib9++yMrKwsaNG7F58+YCy52Tk4O4uDhERkZi+fLlSEpK0pt/+fJlvPfee9BqtUhMTMSCBQsQFRVl0EUrMTERS5Yswbx587B3716D/VoU+fv257Vjxw6kpaVh+PDhFq3z559/RmRkJFatWoU1a9YAML3Prly5gjlz5iA7OxtXrlzB3LlzsXLlSty/fx/A0+O3cOFCfPbZZ7h3755dtg8AatWqBT8/P7z//vuFXkdRGKs7ltSLpKQk5QFBt9+jo6OVcyM2NhYbNmzAli1blGW2bNmCDRs2YPv27QBMH5usrCx88MEHSEhIsPv2G2Oq3uls3boVtWrVwrRp03DgwAGz+dnqPDQXN8ypUKECBgwYoDetdu3aaNKkCerXrw/g6Tc4NBoNfHx89NI1atQIwNNvCgHAmTNn0KBBA700gYGBePLkCfbv32/TMgFP68oPP/yAF154ASEhISa/Fefo88kezF1/gILrhqX1y1j8tCR/cwIDA9GiRQuD6Zs3b8aQIUMszseWGPcMlda4B1gePwDT12xLYxVQOuMQERGRU8j/ClFhXskfOXKkBAYGyrvvvisdOnSQmjVrCgAJDQ0VEZE//vhD+vfvLwBk0aJFynL379+Xbt26ydy5c+Xu3bsSHR0tXl5eyqv8xpaLjo6WatWqCQBZv369tGrVSgDI0aNH5dKlS/Lqq6/Kvn375Ny5c9K0aVOpW7eu3Lt3T0RErly5Ip07d5aoqChJTU2Vbt26yfPPPy/Z2dly5MgRGTFihACQ3bt3y759+0yWOzs7W15++WXZuHGj3Lt3T5YuXSp+fn7y/fffi4jI+vXrJSAgQADIzp07ZeDAgRIcHCwAZPbs2Uo+kydPls6dO8udO3ckLi5OVCqVLFy4UJmfkZFR6K5kIk+7GQCQefPmGczr0qWLtGzZ0mC6sXXOmDFDYmJiJCsrSzZs2CDlypUTETG6zzZs2CC1atUSALJ582YJCwuTESNGiLu7uwwcOFAOHz4sr732mowYMUI8PDykT58+hdo2c9unM378eKldu7bVeaOIr5wbqzuW1IulS5dKuXLlpHr16hITEyPNmjUTHx8fASAhISEiIpKZmSkdO3YUf39/ZX03btyQZs2aSbVq1UTE+LEREYmLixMAMmPGjEJvm05hulSYqnciIq1btxYRkVOnTomPj49UqlRJLl++rMzftGmT3vlhq/PQXNwoLI1GI76+vkp5/vzzTwEgEydO1Et3+PBhpR6np6cLAHnzzTf10hw/flwAFLlLSf4yiYjs3LlTXnvtNWnSpImoVCrx8PAwGXMcdT6ZU5jrlrnrj0jBdcPS+mUqfprLv7DS09OlQoUK8ujRI6uXZdwzj3FPnzXxw5Jrto6xWKXjrHGIiIioJLNZw5Cfn5+cOHFCREQeP34sr7zyigCQuLg4ERFJS0szaGCZOHGi9O/fXy+vvn376t2YG1suMjJSaRgSefrApdVqpXv37rJt2zYl3d69e/Vuhrp37y7jxo1T5u/evVtUKpVs3bpVRETmzZsnAESr1Ra4/uHDh8uYMWP0yj1o0CDx8fGR1NRUEXn6MABAduzYoaTp0qWLNGjQQPldvnx5mT9/vvK7cePG0qFDB+W3vRqGtFqtlClTxmijTP51PnnyRCpXriwJCQlKmilTpij/N7bPdNPybvvEiRMFgHz99dfKtPfee08ASEZGhk23L685c+YIALl7965VedviBtJY3bGkXgwdOlR8fX3l22+/FZGnDz9BQUECQHnQmTRpkt4DkojI66+/rjwgiRg/Nrm5ubJjxw6r94cx1j4gFVTvRP7vAUlE5LvvvhMA0qRJE8nMzBQRwwckW52H5uJGYW3btk3at2+v7H+1Wi3PPfecVKhQQe/hSxdzV61aJQcPHhQA8v777+vllZSUJABk1KhRNi1Tfnv27JHKlSvrxe68HHk+FaQw1y1Lrj/m6oa5+mUuftqj7q1Zs0Zee+21Qi3LuGce455p5uKHNQ1DBcUqZ41DREREJZlNupIBQJUqVdC2bVsAT0fTGDduHAAor5Pn7yN/+/ZtREVFoUePHnrT8w+ta6xvva4rxrBhwwAADRs2xK1bt7B//37Ex8cjIiICERER2LNnD9q0aYNHjx7h8uXL2L9/P/r376/kExwcjFu3bhm8wlzQ+h89eoTNmzejVatWetMnTJiA7OxsrFu3DsDT7wYAQJ8+fZQ0TZs21RvxZs+ePZgwYQIA4MSJExARpWubPd28eROPHz9GjRo1zKb19PSEn58fXnnlFaWrW2RkZIHL6PbZiy++qEzTdXfo1KmTMu2FF14AAKSlpVm3AVZ45plnAADnzp2z2zpMMVZ3LakXvr6+8Pf3V75HUb16dXz00UcAoHQlcnMzPHWNTcvP3d0d/fr1c8joNtbUu2HDhmHWrFn4/fffERoaChHRm2+r8/DmzZsFxo3CUqvV+OijjxAdHa10z/Tw8EBUVBRyc3PRuHFjfPrpp5g7dy7mzZsHAGjSpImyncaGuAeAatWq2bRM+fXp0wdnz56Fv78/li5dajDfkeeTLVly/bGkbpirXwXFT3vVPUd2IwMY9/JzpbhnLn5YylysKi1xiIiIyJkU/uvGZvTo0QMeHh64ceMGAMObt/Pnz0OtVhs86OS/CTB202fsRiExMREAMGPGDFSpUsVg/q5duwAY3rTqbjBMyb/++Ph4qNVqg4805/2OiKly+/r6Ijc3V/ndsWNHbNu2DVu3bkXPnj0RGBho10YSnb/++gsA4O/vb1H6ZcuWISwsDH369FE+kpn/w5J56bY973Hy9vY2SOfl5QUABt89sCVdXUhISEDXrl3tth5jLH2IyV8vAMM6rmt0tebjw87G2nq3YMEC/Pbbb9i5cyfef/99vYd2W52H5uJGYU2dOhVz5sxBw4YN9ab36NEDv/76K/bu3Qtvb28MHDgQq1evRv369dGxY0elPPm/vaX70GrTpk1tXqb8nn32WfTv3x/Hjx83mOfI88mWLLn+WFI3LDmfTcVPe9S9u3fv4tSpU+jdu7dN8isMxj19rhT3gILjh6XMxarSEoeIiIicic3eGMqvfPny8PHxMfhwoM6DBw8APP3LlS3oGhnOnDljdF26t4z27dtnMD89Pd3i9Wg0GgBPb9Dy0t2o5P9obEFmzJiBtWvXIioqCqGhoUYbT+yhXr16UKlUuHv3rkXpg4ODcfnyZUydOhWnT59GmzZt8Mcff9i5lLahe6AOCAhwcEmKxsvLC97e3njuueccXZRCs7beubm5ISYmBo0aNcL8+fOVD8kCtjsPzcWNwliyZAnatm2r99f6vAIDAzFhwgSMHTsWP/30E/766y/Mnz8fKpUKgYGBqFSpkkFcvHr1KoCnbxXZo0z59erVy+hDWWk5nyy5/tiqbpiKn/aoe9u2bUPv3r1RpkyZQi3vbBj3Sk7cy8tU/LCEJbGqtMQhIiIiZ2K3hqFbt27hwYMHet2J8tJ1I8o/EhcAoyPDmNOwYUO4u7tjzpw5ePLkiTI9PT0dMTExaNy4Mdzc3LBr1y7l5gp4OhLKqVOn9PLKOz+/Vq1awdvbG0ePHtWbrmtc6ty5s0XlPX36ND7++GO8+eabejfx+V8dLwpdXvnz9PPzQ926dXH79m2zeWRlZSEqKgqVKlXC559/jp9++gkPHz7Ehg0b9NIVtM/sxdT25aV7Y61OnTrFUiZbefz4sd7v+Ph45OTkoF27dgCe/vU5JydHL42IGD0Ojjg2xlhT73T8/f2xc+dOVKxYUe8ByVbnobm4Ya21a9dCpVJh9OjRyjQRwZ9//mmQNiMjA4sWLcKKFSuUrj9eXl4YPnw4jhw5opf2woULqFq1Kho3bmzXMulcvHgRAwcONJheUs+n/Cy5/tiibhQUP21d94Cno3Q5shtZUTHuPVXS4l5+puKHuWu2pbGqtMQhIiIiZ2KzhqFHjx7p9U3/+OOPMXr0aOU1X90wqLq/9DRu3Bi9evXC7t27sX79egDAkydPcO7cOYgIUlNTkZuba7Ac8H9dj/L+Ba5ixYoYP348jh8/jpdeegnfffcd1q9fjxEjRmDYsGGoUaMGRo4ciQsXLmDw4ME4ePAgli9fjtmzZ6NXr14AoHSPOn36NI4cOYLHjx8brP+ZZ57B5MmTkZKSgkOHDinr3759OwYPHoyXXnoJAPD3338DgN43g3Jzc6FWq5GTk4OyZcsqy+Xm5uLAgQM4f/487t27h8TERKSkpBjddmvobviMLd+qVSujN6r516nVajFnzhzlhj0oKAj169dX9pUl+wz4v2OWf3/Ya/t0bty4gQoVKigPgsXJ2H4wVy90MjIycO3aNeX3Dz/8gDZt2iAkJATA06F8c3JysH//fogIYmNjER8fj4yMDGRkZECj0Rg9Nrdu3cKQIUMMAVPongAAIABJREFUHiyKi6l6Bzz91pSx71vUq1cPmzZt0hvq2Fbnobm4AQALFy7E8OHDlYcRU1atWoUvv/wS/v7+WL9+PdatW4elS5eib9++Bm8lpqeno0uXLnj99dcxfvx4vXkzZ85Ebm6u0jj08OFDrFmzBvPnz1feKrRVmbRaLaZPn45du3YpDSI//fQTkpOT9R7OdBx5PtmSJdcfPz8/s3XDXP0qKH5aUves8ffff+PUqVPK9cxRGPcMlda4Z238KOiabU38LC1xiIiIyKnk/xp1YUZ3OXr0qHTo0EEaNmwo8+bNkzFjxkh4eLgyXO61a9dkwoQJAkAaN24se/fuFRGRW7duSefOnQWANGjQQPr16yehoaFSrlw5mTRpkhw7dsxguS1btkjDhg0FgAwePFjOnz+vlCMrK0tGjhwpAASA+Pv76426kZGRIQMGDFDmBwYGysmTJ5X5ycnJEhAQIBUrVpQvv/zSZLk1Go2Eh4dL1apVZebMmTJq1CgZMmSIZGdni4jI9u3bJTAwUADIlClTJDk5WTZu3Ch16tQRADJ9+nT566+/JCwsTNzc3CQgIEBWrVol8+fPFzc3N5k2bZrcuHFDb93bt2+36pjEx8crI4HVq1dPli9fLmq1Wpn/3Xffibe3tzx8+FCZZmydmZmZ4uPjI82aNZMvvvhC5s6dK2PGjJEnT54Y3WdxcXHStGlTASDjx4+XhIQE+fe//y1t27YVABIaGioXLlyQgwcPSqdOnQSADBo0SC5evGjT7dMJCgqS8PBwq/IWKfroJcbqjqX1YuzYseLr6yv9+vWT5cuXy7hx46RTp06SkpKi5J+VlaXs54CAAImOjpZx48ZJxYoVZdq0aXLnzh2DYyMicuDAAQEgc+bMKfS26RRm2GZj9e7MmTPy+uuvK+f0/v37jS67ePFivdF5bHUemosbzz77rACQyMhIk9u1bt06Zfn8/+rUqaOMrPPLL7/IokWLpG/fvvLNN9+YzO+XX36Rbt26yb/+9S8ZPny4LF68WG++rcqk0WjkpZdeEgBSo0YN6d+/v3z00UeSm5trNE9HnU/mFOa6Ze76c/369QLrhiX1KykpqcD4aa7uWeOrr76S0NDQQi2rw7hnHuPe/7EmfhR0zbY0fuo4axwiIiIqyWzSMKRz8+ZNOXnypN7NjyUuX74sCQkJotVqJTk5udDDl+ukp6fL6dOnlYap/NLS0uTcuXPKzXleT548Mblcfo8ePZIzZ84oN2SFcfv2bb1y/P3334XOy1q9e/eWnTt3FphGq9VKVlaWZGZmyunTp+XBgwcGaazZZ8Xp4sWL4u3tLUlJSVYv68gbyLFjx0qNGjUkJydHzp49K8nJyUbTabVauXDhgmRlZYmIyKVLlwyOg7Fjc+nSJdFoNEUuZ2EekEQsq3empKenG0yzxXmoy9tY3Lh165YcPXpUb5jxwtBqtXLkyBFJTU01OVx8fsnJyUaPla3KpHPjxg25fv16gWmc+XwqynXLkuuPuWuKKZbEz6Lkn1dCQoLZY2gO4555jHuGLIkftuLMcYiIiKgks+moZNWqVSvUcMp169ZV/m+LPuNVqlQpcKSNGjVqmBw61tPT02CoaFN8fHwMho21Vv7RvSpWrFik/KyxevVqjB49GsHBwSaH/FWpVEq3t9atWxtNY80+K05RUVFYsWIFnn/+eUcXpVC8vLzQsmVLk/NVKhWaNWum/Db2oXdjx8bUB+GLiyX1zhRj57UtzkNd3sbyDwgIwFdffWW0a4Q1VCoVOnXqZNUypuKhrcqkU716dbNpSvr5ZIol1x9z1xRTLImfRck/L2sGPnBmjHuGnD3uWRI/bKW0xiEiIiJHs9vHp8n5Pfvss5g0aRIWLlzo6KLY3MaNG+Hj44OxY8c6uihWe/ToUaG/u1QSlLR6t3LlSvTq1avAh9XiVtxlKsnnE5UMjHvOxRnjHuMQERGR/dj0jSGyn9TUVIwZM8ZsulGjRiEsLMzifAcMGICWLVvi+++/Vz7w6Qi23L4jR46gYsWKWLBgga2KVyzUajWioqJw+PBhPHjwALNnz8Ybb7yBWrVqObpoNucs9c4Sb7zxhtV/4be34ixTST2fSjJ7xXtnxLjnnJwt7jEOERER2RcbhkqIWrVqYc+ePWbTeXhYf0jr1Knj8GFfbbl9lg7Z62w8PT0xceJETJw40dFFKRbOUO8s4UwPRzrFWaaSej6VZPaM986Gcc85OVvcYxwiIiKyr5J/V+kiVCqVMlR1aVTat4+IyFKMh0RERERUnJzrT0JERERERERERFRs2DBEREREREREROSi2DBEREREREREROSi2DBEREREREREROSiTH58WqVSFWc5iJzO0KFDMXToUEcXw+kxVpCzYF0sOsY9y7CuERERUWlismEoNja2OMtB5FSGDh2KqVOnIigoyNFFcVqff/45AODtt992cEnI2RVXQwOvW0XDuGce417JxQZPIiIi00w2DA0ZMqQ4y0HkVIYOHYqgoCCeBwXYvHkzAMYKMq+4HshYF4uGcc88xr2Siw1DREREpvEbQ0RERERERERELooNQ0RERERERERELooNQ0RERERERERELooNQ0RERERERERELooNQ0RERERERERELsrkqGS28vPPP+PKlSt609zc3FCpUiVUq1YNjRs3hpeXl978e/fuoWPHjpg5cyZGjRplNN+rV69izZo1iImJUfK3ZDl7ctT6c3NzsWPHDqxcuRKvvvoqpkyZYpAmMTERR48eRePGjXHp0iW9eR4eHnjttddM5p+Tk4Po6GicP38eNWvWRKdOndCuXTvs378fr776KtLS0nDo0CGz5axU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8+YCQABI79695dKlSybTW9MwtGHDBgEgERERyrysrCxp3ry55OTkmG0YmjNnjgCQu3fvWrQtlrL2BtKS4zxp0iS9hxgRkddff115iBExXq+GDh0qvr6+8u2334rI04efoKAgAaA86BQ279zcXNmxY0eh9p+jGobM1W1d3RIR+e677wSANGnSRDIzM0XE8EHLVueouZhiqQYNGkiNGjUkNjZWHjx4IDt37hQfHx9p0aKFqNVqEXn6nZvw8HBlmYIahux1jlijNDYMff311wJAunfvLiLmj7+5OvTkyROpXLmyJCQkKPOnTJmi/N9W9asgjHvmWRv3Snu8yrudljYMbdu2Tdq3b2/w7cJHjx4pjUOtW7eWv/76y+jyhY1pbBgiIiIyrVi7kj333HPYvXs3YmNjsXnzZqxevRoqlQq9e/fG119/raTL35/+9u3biIqKQo8ePfSmN2/eXO+3sX74Pj4+AIBhw4YBABo2bIhbt25h//79iI+PR0REBCIiIrBnzx60adMGjx49wuXLl7F//370799fySc4OBi3bt0yeCW6oPU/evQImzdvRqtWrfSmT5gwAdnZ2Vi3bh2Ap/3oAeh1m2ratKneiGt79uzBhAkTAAAnTpyAiChd24y5efMmHj9+jBo1aphMY6lmzZrh9OnTWLJkCSpWrIi9e/eiRYsWBl3mCmPw4MEIDAzEypUr8eDBAwDA2rVrERoaatE3kJ555hkAwLlz54pclsKy9Dgb625nSRc8X19f+Pv7K9+nqF69Oj766CMAwP79+4uUt7u7O/r16+e0o90YY03dHjZsGGbNmoXff/8doaGhet+vAGx3jt68ebPAmGKp+/fvIzExEV27dsWQIUNQrlw5vPrqq5g4cSLOnz+PDRs24N69e/j000/xz3/+06I8neEcKY103zipWrWqRcffXB3y9PSEn58fXnnlFaWrcGRkJADb1S9bYtyzTGmOV4WhVqvx0UcfITo62qAL7IkTJ1CjRg1Mnz4dZ86cQfv27ZGammqQB2MaERGR7Rl+sdiOdDcBKpUKdevWRd26dREUFIQGDRpg7NixaNeuHV544QWDG7vz589DrVYbfG8j/02FsRtCY9/e0H3seMaMGahSpYrB/F27dgEwbOjR3YyYkn/98fHxUKvVBh+G1vWrv3Tpksly+/r6Ijc3V/ndsWNHbNu2DVu3bkXP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ejVGjx6N4OBgi4bxzU/XrUulUqFZs2ZWL29PUVFRWLFiBZ5//nlHF0Vh7jjn34+60WTyMlWvvLy80LJlS5vnbSxdSVCUum3snLfFOarL21j+AQEB+Oqrr/S+sVEQLy8vNG7cuEhlccZzpLQzd00xRaVSKd2GW7dubfP87Ylxz7zSHq9sxdvbG02aNDE5nzGNiIjIPpzi49NkP88++ywmTZqEhQsXOrooNrVx40b4+Phg7Nixji6K3T169MjodxtcXUmr2ytXrkSvXr0KfMi1JVc6R6j0KW1xj/Gq6BjTiIiI7IcNQy5gwIABGDZsGL7//ntHF8Umjhw5gooVK2LBggWOLopdqdVqrFixAocPH8aDBw8we/ZsXL9+3dHFciolqW6/8cYbBb4JYkuuco5Q6VOa4x7jVeExphEREdlXietKRoVTp06dUjO0q6VD8pZ0np6emDhxIiZOnOjooji1klK3C9OVs7Bc5Ryh0qe0xz3Gq8JhTCMiIrIv57ryExERERERERFRsWHDEBERERERERGRi2LDEBERERERERGRi2LDEBERERERERGRizL58elNmzYVZzmInM6xY8ccXYRiISJQqVRWL6cbKYixgpwF62LRHTt2rNAxwRUw7hEREVFpZLJhaOjQocVZDiKns3jxYixevNjRxXB6jBXkLFgXi44xzzKsa0RERFSaqEREHF0IInIMtVqNTz75BAsWLEDNmjXxxRdfoGfPno4uFhEVs3379uGtt95CWloaIiMjMW3aNHh6ejq6WERERERUDPiNISIX5unpiYiICCQkJKB9+/bo1asXXn31VVy5csXRRSOiYpCWloaRI0eiV69eaNCgAX777TdERESwUYiIiIjIhbBhiIhQs2ZNfP311zh48CCSk5PRpEkTzJ07Fzk5OY4uGhHZgVqtxpIlS9CoUSMcO3YM//73v7Fr1y4EBgY6umhEREREVMzYlYyI9KjVaqxYsQKzZ89GQEAAlixZgj59+ji6WERkIwcPHsTkyZNx5coVTJ8+HREREfD29nZ0sYiIiIjIQfjGEBHp8fT0xJQpU/DHH38gKCgIwcHB7F5GVArouo1169YNzz//PH7//XfMnTuXjUJERERELo4NQ0RkFLuXEZUO7DZGRERERAVhVzIiMovdy4hKJnYbIyIiIiJz+MYQEZnF7mVEJQu7jRERERGRpdgw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zuAVC1Pl5OTgp59+gr+/f6mdyubl5eGXX35B69at9V67MtfNmzeRkZGBNm3awNnZWW9eRkYG6tWrp0zPysqCl5eXMl+tVqOwsNCg0+zMzExcu3YNrVu3LrNDbWNssd74+HiEhISU+RqNMWX9FiKCn3/+GS1btkStWrWQmpqKJk2a6NWx+Da9/vrrOHDgANLS0nD+/HnUrVvX6Gs35SkbKOq8uGXLliaNYva4irbv6mzw4MGYMWMGhg4davZ3MzMzDY5nSx3DJbX7O3fu4PLly4iPj8fKlSvLXb6I4NixY2jevDkaN25sdJQxc1y4cAEdOnTA+fPn8dRTT1WorOqqIvGGiIiIqDphYojskj3fOFdnVe1GTZcYKm1ENluw5/adnp6OsLAwJCYmmp1Qs5UPPvgAgwcPRnBwsK2roggPD0dQUBCmTJli66rYTFWLN0RERETWUj2umomIqqDc3NxS+3qhyte0aVPMmjULUVFRtq6KST799FMMHDiwSiWFtm7dCnd3d7tOChERERHZEyaGiIjMpFarsXr1ahw5cgQPHz7EggULcP36dVtXi/6/ESNGYOzYsdi+fbutq1KmN954Ax07drR1NRRHjx6Fl5cXli5dauuqEBEREVElcbJ1BYiIqhtnZ2fMnDkTM2fOtHVVqAQtWrSoFsOsV7XX3Xr16mXrKhARERFRJataV6RERERERERERFRpmBgiIiIiIiIiIrJTTAwREREREREREdkpJoaIiIiIiIiIiOyUSkTE1pUgqmwqlQrdunVDkyZNbF0VMsP169dx/PhxjBo1ytZVqdK+/PJLtm+iCtLFG14mERERUU3HxBDZpdGjR9u6CkRVyk8//QQAaNeunY1rQlS1bNu2zdZVICIiIrIqJoaIiAhjxowBAMTHx9u4JkREREREVJnYxxARERERERERkZ1iYoiIiIiIiIiIyE4xMUREREREREREZKeYGCIiIiIiIiIislNMDBERERERERER2SkmhoiIiIiIiIiI7BQTQ0REREREREREdoqJISIiIiIiIiIiO8XEEBERERERERGRnWJiiIiIiIiIiIjITjExRERERERERERkp5gYIiIiIiIiIiKyU0wMERERERERERHZKSaGiIiIiIiIiIjsFBNDRERERERERER2iokhIiIiIiIiIiI7xcQQEREREREREZGdYmKIiIiIiIiIiMhOMTFERERERERERGSnmBgiIiIiIiIiIrJTTAwREREREREREdkpJoaIiIiIiIiIiOwUE0NERERERERERHaKiSEiIiIiIiIiIjvFxBARERERERERkZ1iYoiIiIiIiIiIyE4xMUREREREREREZKeYGCIiIiIiIiIislNMDBERERERERER2SkmhoiIiIiIiIiI7BQTQ0REREREREREdoqJISIiIiIiIiIiO8XEEBERERERERGRnVKJiNi6EkREVHn++c9/4v/+7/+g0WiUaZmZmQCAJ554Qpnm6OiI8PBwTJw4sdLrSERERERElYOJISIiO5OSkoLAwECTlr148SICAgKsXCMiIiIiIrIVvkpGRGRnAgIC0L59e6hUqhKXUalUaN++PZNCREREREQ1HBNDRER2aOLEiXB0dCxxvpOTEyZNmlSJNSIiIiIiIlvgq2RERHbo5s2baNq0KbRardH5KpUK6enpaNy4cSXXjIiIiIiIKhOfGCIiskN+fn547rnn4OBgeBpwcHBAjx49mBQiIiIiIrIDTAwREdmpCRMmGJ2uUqk4EhkRERERkZ3gq2RERHYqKysLPj4+UKvVetOdnJxw+/ZteHt726hmRERERERUWfjEEBGRnfLy8kK/fv30OqF2dHTEgAEDmBQiIiIiIrITTAwREdmx8ePH63VALSIYP368DWtERERERESVia+SERHZsdzcXHh7eyM/Px8A4ObmhszMTHh4eNi4ZkREREREVBn4xBARkR2rVasWRowYAWdnZzg7O2PEiBFMChERERER2REmhoiI7FxoaCjUajXUajVCQ0NtXR0iIiIiIqpETrauABFZX3x8vK2rQFWYRqNBrVq1ICJ48OAB2wuVasyYMVYr+/vvv0d6errVyiciMoW14tz169eRlJRklbKJiEz13HPPoUmTJnrT2McQkR1QqVS2rgIR1RDWvGwYPXo0vvzyS6uVT0RkCmvFufj4eISEhFilbCIiU8XFxRkkwPnEEJGdMBYAyLJ0F3zVMd9+5MgRqFQqPP/881Zfl0qlYnushirrhmbUqFHYtm2b1ddD5uFxW7bRo0cDANtvNVZZca46XifUdDx+y1adr3PpdyU9MMDEEBERoVevXrauAhERERER2QATQ0REBAcHjkVARERERGSPeCdARERERERERGSnmBgiIiIiIiIiIrJTTAwRERER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wIEDuHPnDt566y1cuHBB7bJqbMSIEYiMjMSWLVvULsWoSZMmVXkkm6UdPHgQ3t7eWLRokdqlWIX69h45efIkcnJysGzZMjRq1EjtclRT3143U7T/vdNXAAAgAElEQVRu3Ro9evTAyy+/jJdffhnx8fF6tzP3KlZZpv3www8YOnQohg4divv376NHjx4Wqcfa1Lf3CjPud/XttTOGGVc9amScRjicTmTzNBoNkpKSEBERoXYpNm3z5s0YPXo0f6U0gttj/WSJ7Ts8PBwA9KaiJevA961x3H7rv7rOOe4nWC++f43j9msbKvs85xFDRERERERERER2igNDRERERERERER2igNDRERERERERER2igNDRERERERERER2igNDRERERERERER2irOSEdkBjUajdglEZCPqelaylJSUOmufiMgUdT0rGRGRmiqalcxJpVqIyIKSkpLULoHqid27d2Pbtm1YtWqV2qWQHZo5c6YyZTBRdYwePRrTp09HSEiI2qUQGXj66ae5T0Ym27RpE37++We8//77apdCNubpp582WMYjhoiISJGQkIDx48ejqKiIR5oRUb2j0Wgq/CWUiKi+GTlyJBwdHZGcnKx2KWQHeI0hIiJS+Pr6oqSkBHfv3lW7FCIiIiK7lZWVhQ4dOqhdBtkJDgwREZHC19cXAHD9+nWVKyEiIiKyTyUlJTh9+jQHhshiODBEREQKDgwRERERqevkyZMoKSnhwBBZDAeGiIhIwYEhIiIiInVlZWXBwcEB7dq1U7sUshMcGCIiIoWXlxecnZ05MERERESkkqysLLRo0QINGzZUuxSyExwYIiIihUajgbe3NweGiIiIiFTCC0+TpXFgiIiI9Pj6+uLGjRtql0FERERklzgwRJbGgSEiItLj6+vLI4aIiIiIVKDVapGdnc2BIbIoDgwREZEeHx8fDgwRERERqeDcuXMoKCjgwBBZFAeGiIhID48YIiIiIlJHVlYWAKB9+/YqV0L2hANDRESkhwNDREREROrIyspC06ZN4ePjo3YpZEc4MERERHo4MERERESkDl54mtTAgSEiItLDgSEiIiIidXBgiNTAgSEiItLj6+uL27dvo6SkRO1SiIiIiOzK8ePHOTBEFseBISIi0uPr6wsRQX5+vtqlEBEREdmNq1ev4vr16xwYIovjwBAREenx9fUFAJ5ORkRERGRB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4uKCTz/9FKNHj0Z8fDzOnDmDd999l0khIqJahk8MEREREVVCeno6YmJisHHjRvzyyy/o0qULvL294evri9zcXDz77LMa9S0tLeHs7Iz9+/eja9euRoq6/klNTcVTTz2lkZiztLTEu+++i3feeceIkdUvX375Jd544w2ICNRqNQBApVKhe/fuOHXqlNZTdePGjYOfnx9GjRpV5lN1RERUOzAxRERERFRFJ06cwNdff42IiAhkZ2ejTZs2uHbtmtb4NxYWFrCyskJERATGjRtnpGjrn549e+L06dNKckilUiE1NbVSA4aTpvv372PWrFnYsGFDmXWaNGmC27dvY8iQIfD398fEiRNhZ2dXg1ESEVFVMDFEREREZCDFxcX417/+hSlTpiA/P19nndJxhv7xj39g4cKFNRlevfXJJ59g4cKFKC4uhkqlwl/+8hecOHHC2GHVeTk5OXB3d0diYiJKSkp01rG0tMRzzz2HLVu2oE2bNjUcIRERGQLHGCIiIiIyEAsLC1hYWJSZFAIeTPOtVqvxzjvvYPLkyY+tS/qZMmWK8nqTubk5/P39jRxR3ffLL7/gmWeewY8//lhmUggAioqKkJycDCcnpxqMjoiIDImJISIiIiID2rx5s15jqqjVauzcuRP9+/fH5cuXayCy+qtVq1YYMGAAVCoV1Go1PD09jR1SnRYdHY1+/frh+vXrKCoqKrd+dnY2jh49WgORERFRdWBiiIiIiMhA7ty5g9jYWL1upoEHr54lJyfjL3/5CxITE6s5uvrNz88PIoIhQ4aUOX06PZ5arcbf/vY3eHt74/79+yguLtZrPXNzc2zevLmaoyMiourCMYaIiMgkREVFwdvb29hhEBERURVMmjQJ0dHRxg6DqF6xMHYARERENSkyMtLYIVAN8vb2xrx58+Dm5lYj7d25cwd3795FQUGBzuX3798v82mivLw8AMAzzzwDGxubaovxUatWrQIA/PWvf62xNqvLqlWrMHPmTNja2ho7lDrn0qVLyMzMhJWVldarkLrKLC0tYWVlpVHWtGlTTk1P1ar0+4qIDIuJISIiMileXl7GDoFqkLe3N9zc3HjcH6P0L+/1oY8GDhzIQZCJ6jE+KURUPTjGEBERERHVC0wKERERVRwTQ0REREREREREJoqJISIiIiIiIiIiE8XEEBERERERERGRiWJiiIiIiIiI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lqeoqAjr169HcHAwsrKy8M477+D111+Hs7NzjcVQEZ6engCgMZtSeXbs2IFNmzYpnydOnKh1fNPS0pCUlKQMtF1bqdXqCj8RUlnx8fHIz8/HyJEjDRIH+1gb+7h2KOs4fP/99wgODlY+9+vXD0uXLtV7u5X5viKi8jExREREJoGJIeMSEY1plstiYWGhMatPVRkjMVTX8EaLiOoKfl8RVQ+OMURERETVTqVSwdra2thhEBEREdEjas/zhkREREREREREVKOYGCIiIiIiIiIiMlFMDBERERERERERmSiOMURERCYlKirK2CFQDfv++++NHUKtduXKFQC8Noio9rty5UqtneGRqC7jrGRERGQSSmclIyIiorpr0qRJnJWMyMD4xBAREZkU/j3EtHC6+vJx+mciqitKv6+IyLA4xhARERERERERkYliYoiIiIiIiIiIyEQxMUREREREREREZKKYGCIiIiIiIiIiMlFMDBERERERERERmSgmhoiIiIiIiIiITBSnqyciIqqiq1evIjo6GikpKWjWrBmGDBkCNzc3XL58GSUlJejWrZuxQySieiYlJQWxsbFo1aqVUjZ8+HA4Ojpq1CssLERMTAxKSkoAAGZmZhg1ahSaNm1ao/HqIy8vD3v37sWJEyfQp08fTJ48GSqVSqPOpUuXsHXrVly/fh09e/bE1KlTYWlpqbWtn3/+GTt37sSTTz4JHx8fNGrUCABw9OhRNGzYEP369auRfSIiqgv4xBAREVEVrFixAv3790dhYSFmzpyJuXPnoqioCKNHj8agQYNw/vx5Y4eopbCw0KTaNZbq3F9T60vSFBMTg88++wxBQUEYMWIE4uPj4efnB3d3d61zw9raGqNHj0ZcXBzWrFmD559/vlYmha5du4bevXtjy5YtCAsLg4+PD+bOnatRJzk5Gd27d8eaNWvwxRdfYPr06ejfvz/u3r2rUW/jxo1YvHgxXnvtNTRo0ABDhgxBTk4OAGDo0KFITk7GypUra2zfiIhqOyaGiIiIKikkJATLli1DREQEFi5ciGeeeQbNmjXDyJEjcfDgQbRv3x65ubnGDlPL4sWLoVarTaZdY6nO/TW1vqT/On36NFatWoXQ0FCYm5ujRYsWWLduHTp37ozExEQEBgZqrdOkSROMGDECw4YNg7OzsxGiLt/atWtx8uRJ7N+/H5mZmXj66acR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HLB8+XJjh0JEVGtYGDsAIiIiovrM0tISb7zxBt544w1jh0L1SLt27erENOu17XW3QYMGGTsEIqJap3Z9UxMRERERERERUY1hYoiIiIiIiIiIyEQxMUREREREREREZKKYGCIiIiIiIiIiMlEcfJqIiEyKp6ensUOgGrZq1SpER0cbO4xaKzExEQCvDSKq/RITE9G/f39jh0FU76hERIwdBBERUXX7/vvv8cknnxg7DCKqRt988w1cXV3h6Oho7FCIqJq4ubkhKCjI2GEQ1StMDBERERFRvaBSqRAZGQkvLy9jh0JERFRncIwhIiIiIiIiIiITxcQQEREREREREZGJYmKIiIiIiIiIiMhEMTFERERERERERGSimBgiIiIiIiIiIjJRTAwREREREREREZkoJoaIiIiIiIiIiEwUE0NERERERERERCaKiSEiIiIiIiIiIhPFxBARERERERERkYliYoiIiIiIiIiIyEQxMUREREREREREZKKYGCIiIiIiIiIiMlFMDBERERERERERmSgmhoiIiIiIiIiITBQTQ0REREREREREJoqJISIiIiIiIiIiE8XEEBERERERERGRiWJiiIiIiIiIiIjIRDExRERERERERERkopgYIiIiIiIiIiIyUUwMERERERERERGZKCaGiIiIiIiIiIhMFBNDREREREREREQmiokhIiIiIiIiIiITxcQQEREREREREZGJYmKIiIiIiIiIiMhEMTFERERERERERGSimBgiIiIiIiIiIjJRTAwREREREREREZkoJoaIiIiIiIiIiEwUE0NERERERERERCaKiSEiIiIiIiIiIhOlEhExdhBERERERBXh7++Pn3/+WaMsPT0dzZo1Q8OGDZUyS0tL7Nu3D05OTjUdIhERUZ1gYewAiIiIiIgqqnPnztiyZYtW+a1btzQ+d+vWjUkhIiKix+CrZERERERU5/j6+kKlUj22jqWlJQICAmomICIiojqKiSEiIiIiqnPatm2L3r17PzY5VFxcDE9PzxqMioiIqO5hYoiIiIiI6iR/f3+Ym5vrXGZmZob+/fvDxcWlZoMiIiKqY5gYIiIiIqI6afLkyVCr1TqXmZmZwd/fv4YjIiIiqnuYGCIiIiKiOqlFixYYPHiwzqeGRAQTJ040QlRERER1CxNDRERERFRn+fn5QUQ0yszNzfHiiy+iRYsWRoqK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\n", "text/plain": [ "" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tensorflow.keras.utils import plot_model\n", "plot_model(model_5,show_shapes=True)" ] }, { "cell_type": "code", "execution_count": 125, "id": "3ed8b66a", "metadata": {}, "outputs": [], "source": [ "# label_smooting-prevents overfitting\n", "model_5.compile(loss=tf.keras.losses.CategoricalCrossentropy(label_smoothing=0.2),\n", " optimizer=tf.keras.optimizers.legacy.Adam(),\n", " metrics=[\"accuracy\"])" ] }, { "cell_type": "code", "execution_count": 126, "id": "8c88bd63", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(<_PrefetchDataset element_spec=((TensorSpec(shape=(None, 15), dtype=tf.float32, name=None), TensorSpec(shape=(None, 20), dtype=tf.float32, name=None), TensorSpec(shape=(None,), dtype=tf.string, name=None), TensorSpec(shape=(None,), dtype=tf.string, name=None)), TensorSpec(shape=(None, 5), dtype=tf.float64, name=None))>,\n", " <_PrefetchDataset element_spec=((TensorSpec(shape=(None, 15), dtype=tf.float32, name=None), TensorSpec(shape=(None, 20), dtype=tf.float32, name=None), TensorSpec(shape=(None,), dtype=tf.string, name=None), TensorSpec(shape=(None,), dtype=tf.string, name=None)), TensorSpec(shape=(None, 5), dtype=tf.float64, name=None))>)" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create training and validation datasets (all four kinds of inputs)\n", "train_pos_char_token_data = tf.data.Dataset.from_tensor_slices((train_line_number_one_hot,\n", " train_total_lines,\n", " train_sentences,\n", " train_chars)) \n", "train_pos_char_token_labels = tf.data.Dataset.from_tensor_slices(train_labels_one_hot) \n", "train_pos_char_token_dataset = tf.data.Dataset.zip((train_pos_char_token_data, train_pos_char_token_labels))\n", "train_pos_char_token_dataset = train_pos_char_token_dataset.batch(32).prefetch(tf.data.AUTOTUNE)\n", "\n", "# Validation dataset\n", "val_pos_char_token_data = tf.data.Dataset.from_tensor_slices((val_line_number_one_hot,\n", " valid_total_lines,\n", " val_sentences,\n", " val_chars))\n", "val_pos_char_token_labels = tf.data.Dataset.from_tensor_slices(val_labels_one_hot)\n", "val_pos_char_token_dataset = tf.data.Dataset.zip((val_pos_char_token_data, val_pos_char_token_labels))\n", "val_pos_char_token_dataset = val_pos_char_token_dataset.batch(32).prefetch(tf.data.AUTOTUNE) # turn into batches and prefetch appropriately\n", "\n", "# Check input shapes\n", "train_pos_char_token_dataset, val_pos_char_token_dataset" ] }, { "cell_type": "code", "execution_count": 127, "id": "2294d0cd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/3\n", "562/562 [==============================] - 178s 306ms/step - loss: 1.0938 - accuracy: 0.7248 - val_loss: 0.9813 - val_accuracy: 0.8082\n", "Epoch 2/3\n", "562/562 [==============================] - 171s 305ms/step - loss: 0.9613 - accuracy: 0.8168 - val_loss: 0.9476 - val_accuracy: 0.8261\n", "Epoch 3/3\n", "562/562 [==============================] - 163s 290ms/step - loss: 0.9449 - accuracy: 0.8263 - val_loss: 0.9347 - val_accuracy: 0.8314\n" ] } ], "source": [ "history_model_5 = model_5.fit(train_pos_char_token_dataset,\n", " steps_per_epoch=int(0.1 * len(train_pos_char_token_dataset)),\n", " epochs=3,\n", " validation_data=val_pos_char_token_dataset,\n", " validation_steps=int(0.1 * len(val_pos_char_token_dataset)))" ] }, { "cell_type": "code", "execution_count": 128, "id": "a4c0425e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "945/945 [==============================] - 225s 236ms/step\n" ] } ], "source": [ "model_5_pred=model_5.predict(val_pos_char_token_dataset)" ] }, { "cell_type": "code", "execution_count": 129, "id": "290114c1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Turn prediction probabilities into prediction classes\n", "model_5_preds = tf.argmax(model_5_pred, axis=1)\n", "model_5_preds\n" ] }, { "cell_type": "code", "execution_count": 130, "id": "07f11921", "metadata": {}, "outputs": [], "source": [ "model_5_results=calculate_results(val_labels_encoder,model_5_preds)" ] }, { "cell_type": "code", "execution_count": 131, "id": "5625f0bf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 83.50655368727658,\n", " 'precision': 83.40022533730422,\n", " 'recall': 83.50655368727658,\n", " 'F1-score': 83.35969828392814}" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_5_results" ] }, { "cell_type": "markdown", "id": "0c8faca1", "metadata": {}, "source": [ "# Comparing Models" ] }, { "cell_type": "code", "execution_count": 132, "id": "cbd01f7a", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "all_model_results=pd.DataFrame(\n", " { \n", " \"baseline\":model_0_reults,\n", " \"Model_1\": model_1_results,\n", " \"Model_2\": model_2_results,\n", " \"Model_3\": model_3_results,\n", " \"Model_4\": model_4_results,\n", " \"Model_5\": model_5_results})" ] }, { "cell_type": "code", "execution_count": 133, "id": "30d4cc61", "metadata": {}, "outputs": [], "source": [ "all_model_results=all_model_results.transpose()\n" ] }, { "cell_type": "code", "execution_count": 134, "id": "3444df75", "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", "
accuracyprecisionrecallF1-score
baseline72.18323871.86467072.18323869.892504
Model_178.71044678.33334678.71044678.413042
Model_271.39216271.42823771.39216271.101595
Model_365.76194965.44382565.76194964.577781
Model_474.31815274.56791674.31815274.334530
Model_583.50655483.40022583.50655483.359698
\n", "
" ], "text/plain": [ " accuracy precision recall F1-score\n", "baseline 72.183238 71.864670 72.183238 69.892504\n", "Model_1 78.710446 78.333346 78.710446 78.413042\n", "Model_2 71.392162 71.428237 71.392162 71.101595\n", "Model_3 65.761949 65.443825 65.761949 64.577781\n", "Model_4 74.318152 74.567916 74.318152 74.334530\n", "Model_5 83.506554 83.400225 83.506554 83.359698" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_model_results" ] }, { "cell_type": "code", "execution_count": 135, "id": "1ec359e5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA64AAAHYCAYAAABN4rWHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCE0lEQVR4nO3deViVdf7/8ddhR9bEZJlAXHMJ91TKvhoxkpVpclmZk5pLpWghlUa5lJmopZjlkobblOuvNJ0atUhtUjQ1NRs3MhJMQbMAcTkqnN8fXZ6ZM4h5PMC5hefjuu7r4nzu+3OfN/AWeXFvJovFYhEAAAAAAAbl4uwCAAAAAAC4FoIrAAAAAMDQCK4AAAAAAEMjuAIAAAAADI3gCgAAAAAwNIIrAAAAAMDQCK4AAAAAAENzc3YB/6ukpETHjx+Xn5+fTCaTs8sBAAAA4CQWi0VnzpxRWFiYXFw45ladGS64Hj9+XOHh4c4uAwAAAIBB5OTk6LbbbnN2GXAiwwVXPz8/SX80p7+/v5OrAQAAAOAshYWFCg8Pt2YEVF+GC65XTg/29/cnuAIAAADgEkJwcyYAAAAAgLERXAEAAAAAhkZwBQAAAAAYmuGucQUAAAAAexQXF+vSpUvOLgN2cHd3l6ur63VvT3AFAAAAcFOyWCzKzc1Vfn6+s0vBDQgMDFRISMh13XyL4AoAAADgpnQltNauXVs1atTg7sM3CYvFonPnzunkyZOSpNDQ0D+dQ3AFAAAAcNMpLi62htagoCBnlwM7eXt7S5JOnjyp2rVr/+lpw9ycCQAAAMBN58o1rTVq1HByJbhRV75313N9MsEVAAAAwE2L04NvXvZ87wiuAAAAAABDI7gCAAAAAAyNmzMBAAAAqFIiX/6sUt/v50kPVur7VUcccQUAAACAau56bpDkTARXAAAAAKhk69atU8eOHRUYGKigoCA99NBDOnLkiHX9sWPH1Lt3b9WsWVM+Pj5q27attm/fbl2/du1a3XnnnfLy8lKtWrX0yCOPWNeZTCatXr3a5v0CAwO1cOFCSdLPP/8sk8mk5cuXq1OnTvLy8tJHH32k06dPq3fv3vrLX/6iGjVqKCoqSkuXLrXZT0lJiaZMmaIGDRrI09NTERERevPNNyVJMTExGjZsmM32p06dkoeHh9LT0x36ehFcAQAAAKCSnT17VklJSdq5c6fS09Pl4uKiRx55RCUlJSoqKlKnTp30yy+/aM2aNdq7d69GjhypkpISSdJnn32mRx55RA888IB2796t9PR0tWvXzu4aXn75ZT3//PM6cOCA4uLidOHCBbVp00afffaZfvjhBz399NN68skn9e2331rnJCcna9KkSRozZoz279+vJUuWKDg4WJI0aNAgLVmyRGaz2br9hx9+qL/85S+KiYlx6OvFNa4AAABAGcrjWklHr3+MWhTl0Px9/fY5NB8VIz4+3ub1/Pnzdeutt2r//v3aunWrTp06pR07dqhmzZqSpAYNGli3ffPNN/X444/r9ddft461aNHC7hoSExPVs2dPm7EXX3zR+vHw4cO1fv16rVixQu3atdOZM2f0zjvv6L333lO/fv0kSfXr11fHjh0lST179tSwYcP06aef6tFHH5UkLVy4UP3793f4sUUEVwAAAKAivRbg2Py6EQ5NP9C4iUPzmxw84NB8XF1mZqbGjh2r7du369dff7UeTc3OztaePXvUqlUra2j9X3v27NHgwYMdrqFt27Y2r4uLizVx4kStWLFCv/zyiy5evCiz2awaNWpIkg4cOCCz2az77rvvqvvz8vLSk08+qfnz5+vRRx/Vd999px9++EFr1qxxuFaCKwAAAABUsm7duqlOnTqaN2+ewsLCVFJSojvuuEMXL16Ut7f3Nef+2XqTySSLxWIzdrWbL/n4+Ni8fuutt/TOO+9o+vTpioqKko+PjxITE3Xx4sXrel/pj9OFW7ZsqWPHjmnBggWKiYlRnTp1/nTen+EaVwAAAACoRKdPn9ahQ4c0evRo3XfffWrSpIl+//136/rmzZtrz549+u233646v3nz5te82dGtt96qEydOWF9nZmbq3Llzf1rXli1b1L17d/3tb39TixYtVK9ePR0+fNi6vmHDhvL29r7me0dFRalt27aaN2+elixZogEDBvzp+14PgisAAAAAVKJbbrlFQUFBmjt3rn788Ud99dVXSkpKsq7v3bu3QkJC1KNHD23ZskU//fSTPv74Y2VkZEiSxo0bp6VLl2rcuHE6cOCA9u3bp8mTJ1vnx8TE6L333tPu3bu1c+dOPfvss3J3d//Tuho2bKgvvvhCW7du1YEDB/TMM88oLy/Put7Ly0ujRo3SyJEjtXjxYh05ckTbtm1TWlqazX4GDRqkSZMmyWKx2Nzt2BEEVwAAAACoRC4uLlq2bJl27dqlO+64QyNGjNBbb71lXe/h4aENGzaodu3aeuCBBxQVFaVJkybJ1dVVktS5c2etXLlSa9asUcuWLRUTE2Nz59+pU6cqPDxc99xzj5544gm9+OKL1utUr2X06NFq3bq14uLi1LlzZ2t4/m9jxozRCy+8oLFjx6pJkyZ67LHHdPLkSZttevfuLTc3N/Xu3VteXl4OfKX+w2T535OfnaywsFABAQEqKCiQv7+/s8sBAABANVYudxX2esKh+VEO3pxpRcplh+Y78+ZM18oGFy5cUFZWlurWrVtu4Qjl4+eff1b9+vW1Y8cOtW7duszt7PkecnMmAAAAAIDDLl26pNOnT2v06NHq0KHDNUOrvThVGAAAAADgsC1btig0NFQ7duzQnDlzynXfHHEFAAAAADisc+fOpR7DU1444goAAAAAMDSCKwAAAADA0OwKrsXFxRozZozq1q0rb29v1a9fX2+88YbN4WCLxaKxY8cqNDRU3t7eio2NVWZmZrkXDgAAAACoHuwKrpMnT9bs2bP13nvv6cCBA5o8ebKmTJmid99917rNlClTNGPGDM2ZM0fbt2+Xj4+P4uLidOHChXIvHgAAAABQ9dl1c6atW7eqe/fuevDBByVJkZGRWrp0qfVhtxaLRdOnT9fo0aPVvXt3SdLixYsVHBys1atX6/HHHy/n8gEAAAAAVZ1dR1zvuusupaen6/Dhw5KkvXv36ptvvlHXrl0lSVlZWcrNzVVsbKx1TkBAgNq3b6+MjIyr7tNsNquwsNBmAQAAAADgCruC68svv6zHH39cjRs3lru7u1q1aqXExET16dNHkpSbmytJCg4OtpkXHBxsXfe/UlJSFBAQYF3Cw8Nv5PMAAAAAAJRh06ZNMplMys/PL9dtK4tdpwqvWLFCH330kZYsWaJmzZppz549SkxMVFhYmPr163dDBSQnJyspKcn6urCwkPAKAAAA4Ma9FlDJ71dQue93A+666y6dOHFCAQF//rWxZ9vKYldwfemll6xHXSUpKipKR48eVUpKivr166eQkBBJUl5enkJDQ63z8vLy1LJly6vu09PTU56enjdYPgAAAABUbRcvXpSHh4dD+/Dw8LDmtfLctrLYdarwuXPn5OJiO8XV1VUlJSWSpLp16yokJETp6enW9YWFhdq+fbuio6PLoVwAAAAAuLl17txZw4YN07BhwxQQEKBatWppzJgx1seMRkZG6o033lDfvn3l7++vp59+WpL0zTff6J577pG3t7fCw8P13HPP6ezZs9b9ms1mjRo1SuHh4fL09FSDBg2UlpYmqfTpv0ePHlW3bt10yy23yMfHR82aNdPnn39+1W0l6eOPP1azZs3k6empyMhITZ061eZzioyM1MSJEzVgwAD5+fkpIiJCc+fOLbevmV3BtVu3bnrzzTf12Wef6eeff9aqVas0bdo0PfLII5Ikk8mkxMRETZgwQWvWrNG+ffvUt29fhYWFqUePHuVWNAAAAADczBYtWiQ3Nzd9++23eueddzRt2jR98MEH1vVvv/22WrRood27d2vMmDE6cuSI7r//fsXHx+v777/X8uXL9c0332jYsGHWOX379tXSpUs1Y8YMHThwQO+//758fX2v+v4JCQkym836+uuvtW/fPk2ePLnMbXft2qVHH31Ujz/+uPbt26fXXntNY8aM0cKFC222mzp1qtq2bavdu3dr6NChGjJkiA4dOuT4F0t2nir87rvvasyYMRo6dKhOnjypsLAwPfPMMxo7dqx1m5EjR+rs2bN6+umnlZ+fr44dO2rdunXy8vIql4IBAAAA4GYXHh6u1NRUmUwm3X777dq3b59SU1M1ePBgSVJMTIxeeOEF6/aDBg1Snz59lJiYKElq2LChZsyYoU6dOmn27NnKzs7WihUr9MUXX1if8lKvXr0y3z87O1vx8fGKior6022nTZum++67T2PGjJEkNWrUSPv379dbb72l/v37W7d74IEHNHToUEnSqFGjlJqaqo0bN+r222+3/wv0P+wKrn5+fpo+fbqmT59e5jYmk0njx4/X+PHjHa0NcKrIlz9zaP7Pkx50aH7UoiiH5u/rt8+h+QAAAKg4HTp0kMlksr6Ojo7W1KlTVVxcLElq27atzfZ79+7V999/r48++sg6ZrFYVFJSoqysLO3bt0+urq7q1KnTdb3/c889pyFDhmjDhg2KjY1VfHy8mjdvftVtDxw4oO7du9uM3X333Zo+fbqKi4vl6uoqSTbzTSaTQkJCdPLkyeuq58/YFVwB2MHRu9nVjXBo+oHGTRya3+TgAYfmAwAA4Mb5+PjYvC4qKtIzzzyj5557rtS2ERER+vHHH+3a/6BBgxQXF6fPPvtMGzZsUEpKiqZOnarhw4ffcM3u7u42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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "all_model_results.plot(kind=\"bar\",figsize=(10,5)).legend(bbox_to_anchor=(1.0,1.0))" ] }, { "cell_type": "code", "execution_count": 136, "id": "32950eb0", "metadata": {}, "outputs": [ { "data": { "image/png": "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unVrjw8PAACQJAO78uBLLrkkDQ0NWbJkScexiRMndvy5vb09CxYsyGc+85mceOKJSZIbbrghdXV1ue222/Kud72rh8YGAAD4ky5dsbn99ttz1FFH5ZRTTsmYMWNyxBFH5Jprrum4f926dWlubs706dM7jtXW1mbq1KlZuXLlTp+zra0tra2tnW4AAABd0aWw+fWvf50rr7wyBxxwQO666658+MMfzkc/+tFcf/31SZLm5uYkSV1dXafvq6ur67jvz82fPz+1tbUdt4aGhu78PQAAgH6sS2GzY8eOHHnkkfn85z+fI444Ih/84AfzgQ98IFdddVW3B5g3b142bdrUcVu/fn23nwsAAOifuhQ2Y8eOzeTJkzsdO/jgg9PU1JQkqa+vT5K0tLR0ekxLS0vHfX+uuro6NTU1nW4AAABd0aWwecMb3pA1a9Z0OvbLX/4y++23X5I/fpBAfX19li9f3nF/a2tr7r333jQ2NvbAuAAAAC/UpU9FO/vss/P6178+n//85/O3f/u3+eEPf5irr746V199dZKkqqoqZ511Vi688MIccMABmThxYs4999yMGzcuJ5100p6YHwAAoGth8xd/8Rf56le/mnnz5uWCCy7IxIkTs2DBgsyaNavjMZ/85CezZcuWfPCDH8zGjRtzzDHH5M4778yQIUN6fHgAAICki2GTJG9729vytre9bZf3V1VV5YILLsgFF1ywW4MBAAC8VF16jw0AAEBfJGwAAIDiCRsAAKB4wgYAACiesAEAAIonbAAAgOIJGwAAoHjCBgAAKJ6wAQAAiidsAACA4gkbAACgeMIGAAAonrABAACKJ2wAAIDiCRsAAKB4wgYAACiesAEAAIonbAAAgOIJGwAAoHjCBgAAKJ6wAQAAiidsAACA4gkbAACgeMIGAAAonrABAACKJ2wAAIDiCRsAAKB4wgYAACiesAEAAIonbAAAgOIJGwAAoHjCBgAAKJ6wAQAAiidsAACA4gkbAACgeMIGAAAonrABAACKJ2wAAIDiCRsAAKB4wgYAACiesAEAAIonbAAAgOIJGwAAoHjCBgAAKJ6wAQAAiidsAACA4gkbAACgeMIGAAAonrABAACKJ2wAAIDiCRsAAKB4XQqb//f//l+qqqo63SZNmtRx/9atWzN79uyMHj06w4cPz8yZM9PS0tLjQwMAADxfl6/YHHLIIXns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dNJJaW9vz4UXXphrr702d911Vw488MDccsst2bFjR0455ZTU1tbmy1/+cqVH7ZOETYUNGDAgzc3NGTNmTA499NB8+tOfzqmnntpx/+23355PfOITWbNmTQWnZE977j9qd+W5K3j+o/bl6/jjj89ee+2Va6+9NmPGjOk4PmjQoDz00EOZPHlyBaejN+y33365/vrr88Y3vjFJ8rvf/S4nnHBCRo4cmdtvvz0bN250xaafGD16dO65554cdNBBGTFiREfYPPLII5k8eXKeeuqpSo/IHjJmzJgsW7Yshx9+eLZs2ZIRI0bke9/7Xo455pgkyT333JNTTz3VS5R3YWClByAd/0Hb3Nycww47rNN9r33ta7N+/fpKjEUvGjFiRP7xH/8xU6dO3en9a9euzYc+9KFenore9M1vfjOXX355jjrqqCxatChve9vbKj0SveyJJ57Ifvvt1/H1Pvvsk29/+9uZMWNG3vrWt+ZLX/pSBaejN+3YsWOnAfub3/wmI0aMqMBE9JbNmzdn1KhRSZJhw4Zl2LBhGTt2bMf9DQ0NaWlpqdR4fZ6w6QPOPffc7L333hkwYEA2bNiQQw45pOO+3//+9xk2bFgFp6M3HHnkkUmSY489dqf3jxw58kVfosTLw9lnn503velNmTVrVu64445cfvnllR6JXjR+/Pj84he/yMSJEzuOjRgxIsuWLctxxx2Xv/mbv6ngdPSm4447LgsWLMjVV1+d5I//ALp58+acf/75eetb31rh6diTxo0bl6ampowfPz5Jcumll3a6iv/EE0/kFa94RaXG6/N8KlqF/dVf/VXWrFmTBx98MJMnT37BpcVvfOMbnUKHl6d3v/vdGTJkyC7vr6+vz/nnn9+LE1Ephx9+eO6///5UVVXl8MMPF7T9yHHHHZclS5a84Pjw4cNz1113veg5gpeXf/7nf84PfvCDTJ48OVu3bs273/3uTJgwIb/97W9zySWXVHo89qDp06fn4Ycf7vj6wx/+cKerdMuWLev4x1BeyHts+rhf//rXGTx4cPbdd99KjwL0sttvvz3f/e53M2/evE7/YsfL0x/+8IcXXLV/vieffDIPPPDALq/s8vKyffv23HTTTfnxj3+czZs358gjj8ysWbMydOjQSo9GBa1bty5Dhgzp9PI0/kTYFObQQw/NN77xjY6PfqV/sgfYAewA4DzQmffYFOaRRx7JM888U+kxqDB7gB3ADry8rV27Nt/97nfz+OOPv+Ajvs8777wKTUVf4zzQmbABAOhDrrnmmnz4wx/OPvvsk/r6+k6/DqCqqkrYwC4IGwCAPuTCCy/MRRddlE996lOVHgWK4lPRAAD6kD/84Q855ZRTKj0GFEfYAAD0IaecckqWLVtW6TGgOF6KBgDQh7z61a/Oueeem1WrVuXQQw/NoEGDOt3/0Y9+tEKTQd/m454Ls3Tp0px44okZNmxYpUehguwBdgA78PI1ceLEXd5XVVWVX//61704DX2Z80BnwqaCrrjiipf8WP868/JlD7AD2AHAeWD3CZsKerF/kXk+/zrz8mYPsAPYAcB5YPcJGwCACps7d24+97nPZdiwYZk7d+6LPvayyy7rpamgLD48oI/Ztm1b1q1bl1e96lUZOND/Pf2VPcAOYAf6lwcffLDjN8g/+OCDu3zc839ZJy9/zgNd4+Oe+4innnoqZ555Zvbee+8ccsghaWpqSpLMmTMnF198cYWno7fYA+wAdqB/+u53v5uRI0d2/HlXt+985zuVHZRe4TzQPcKmj5g3b14eeuih3H333RkyZEjH8enTp+fmm2+u4GT0JnuAHcAOAM4D3eOaVh9x22235eabb87RRx/d6TLzIYcckl/96lcVnIzeZA+wA9iB/unkk09+yY+99dZb9+Ak9AXOA90jbPqIJ554ImPGjHnB8S1btng9bT9iD7AD2IH+qba2ttIj0Ic4D3SPsOkjjjrqqHz961/PnDlzkvzpzYFf+tKX0tjYWMnR6EX2ADuAHeiflixZUukR6EOcB7pH2PQRn//853P88cfn5z//ebZv354vfOEL+fnPf5577rknK1asqPR49BJ7gB3ADpAk27dvz913351f/epXefe7350RI0Zkw4YNqampyfDhwys9HnuY80D3+PCAPuKYY47Jj370o2zfvj2HHnpoli1bljFjxmTlypWZMmVKpcejl9gD7AB2gEcffTSHHnpoTjzxxMyePTtPPPFEkuSSSy7Jxz/+8QpPR29wHugev6ATAKAPOemkkzJixIgsXrw4o0ePzkMPPZT9998/d999dz7wgQ9k7dq1lR4R+iQvRaug1tbWl/zYmpqaPTgJlWQPsAPYAZ7vv//7v3PPPfdk8ODBnY5PmDAhv/3tbys0FXua88DuEzYVNHLkyJf8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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "all_model_results.sort_values(\"F1-score\", ascending=False)[\"F1-score\"].plot(kind=\"bar\", figsize=(10, 7));" ] }, { "cell_type": "code", "execution_count": 137, "id": "bf2c88d5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:absl:Found untraced functions such as lstm_cell_4_layer_call_fn, lstm_cell_4_layer_call_and_return_conditional_losses, lstm_cell_5_layer_call_fn, lstm_cell_5_layer_call_and_return_conditional_losses while saving (showing 4 of 4). These functions will not be directly callable after loading.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Assets written to: skimlit_final_model/assets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Assets written to: skimlit_final_model/assets\n" ] } ], "source": [ "model_5.save(\"skimlit_final_model\") " ] }, { "cell_type": "code", "execution_count": 3, "id": "4c31f7fe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Metal device set to: Apple M2\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2023-07-08 19:38:08.228766: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n" ] } ], "source": [ "loaded_model=tf.keras.models.load_model(\"skimlit_final_model\")" ] }, { "cell_type": "code", "execution_count": 27, "id": "33b66792", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'abstract': 'This RCT examined the efficacy of a manualized social intervention for children with HFASDs. Participants were randomly assigned to treatment or wait-list conditions. Treatment included instruction and therapeutic activities targeting social skills, face-emotion recognition, interest expansion, and interpretation of non-literal language. A response-cost program was applied to reduce problem behaviors and foster skills acquisition. Significant treatment effects were found for five of seven primary outcome measures (parent ratings and direct child measures). Secondary measures based on staff ratings (treatment group only) corroborated gains reported by parents. High levels of parent, child and staff satisfaction were reported, along with high levels of treatment fidelity. Standardized effect size estimates were primarily in the medium and large ranges and favored the treatment group.',\n", " 'source': 'https://pubmed.ncbi.nlm.nih.gov/20232240/',\n", " 'details': 'RCT of a manualized social treatment for high-functioning autism spectrum disorders'},\n", " {'abstract': \"Postpartum depression (PPD) is the most prevalent mood disorder associated with childbirth. No single cause of PPD has been identified, however the increased risk of nutritional deficiencies incurred through the high nutritional requirements of pregnancy may play a role in the pathology of depressive symptoms. Three nutritional interventions have drawn particular interest as possible non-invasive and cost-effective prevention and/or treatment strategies for PPD; omega-3 (n-3) long chain polyunsaturated fatty acids (LCPUFA), vitamin D and overall diet. We searched for meta-analyses of randomised controlled trials (RCT's) of nutritional interventions during the perinatal period with PPD as an outcome, and checked for any trials published subsequently to the meta-analyses. Fish oil: Eleven RCT's of prenatal fish oil supplementation RCT's show null and positive effects on PPD symptoms. Vitamin D: no relevant RCT's were identified, however seven observational studies of maternal vitamin D levels with PPD outcomes showed inconsistent associations. Diet: Two Australian RCT's with dietary advice interventions in pregnancy had a positive and null result on PPD. With the exception of fish oil, few RCT's with nutritional interventions during pregnancy assess PPD. Further research is needed to determine whether nutritional intervention strategies during pregnancy can protect against symptoms of PPD. Given the prevalence of PPD and ease of administering PPD measures, we recommend future prenatal nutritional RCT's include PPD as an outcome.\",\n", " 'source': 'https://pubmed.ncbi.nlm.nih.gov/28012571/',\n", " 'details': 'Formatting removed (can be used to compare model to actual example)'},\n", " {'abstract': 'Mental illness, including depression, anxiety and bipolar disorder, accounts for a significant proportion of global disability and poses a substantial social, economic and heath burden. Treatment is presently dominated by pharmacotherapy, such as antidepressants, and psychotherapy, such as cognitive behavioural therapy; however, such treatments avert less than half of the disease burden, suggesting that additional strategies are needed to prevent and treat mental disorders. There are now consistent mechanistic, observational and interventional data to suggest diet quality may be a modifiable risk factor for mental illness. This review provides an overview of the nutritional psychiatry field. It includes a discussion of the neurobiological mechanisms likely modulated by diet, the use of dietary and nutraceutical interventions in mental disorders, and recommendations for further research. Potential biological pathways related to mental disorders include inflammation, oxidative stress, the gut microbiome, epigenetic modifications and neuroplasticity. Consistent epidemiological evidence, particularly for depression, suggests an association between measures of diet quality and mental health, across multiple populations and age groups; these do not appear to be explained by other demographic, lifestyle factors or reverse causality. Our recently published intervention trial provides preliminary clinical evidence that dietary interventions in clinically diagnosed populations are feasible and can provide significant clinical benefit. Furthermore, nutraceuticals including n-3 fatty acids, folate, S-adenosylmethionine, N-acetyl cysteine and probiotics, among others, are promising avenues for future research. Continued research is now required to investigate the efficacy of intervention studies in large cohorts and within clinically relevant populations, particularly in patients with schizophrenia, bipolar and anxiety disorders.',\n", " 'source': 'https://pubmed.ncbi.nlm.nih.gov/28942748/',\n", " 'details': 'Effect of nutrition on mental health'},\n", " {'abstract': \"Hepatitis C virus (HCV) and alcoholic liver disease (ALD), either alone or in combination, count for more than two thirds of all liver diseases in the Western world. There is no safe level of drinking in HCV-infected patients and the most effective goal for these patients is total abstinence. Baclofen, a GABA(B) receptor agonist, represents a promising pharmacotherapy for alcohol dependence (AD). Previously, we performed a randomized clinical trial (RCT), which demonstrated the safety and efficacy of baclofen in patients affected by AD and cirrhosis. The goal of this post-hoc analysis was to explore baclofen's effect in a subgroup of alcohol-dependent HCV-infected cirrhotic patients. Any patient with HCV infection was selected for this analysis. Among the 84 subjects randomized in the main trial, 24 alcohol-dependent cirrhotic patients had a HCV infection; 12 received baclofen 10mg t.i.d. and 12 received placebo for 12-weeks. With respect to the placebo group (3/12, 25.0%), a significantly higher number of patients who achieved and maintained total alcohol abstinence was found in the baclofen group (10/12, 83.3%; p=0.0123). Furthermore, in the baclofen group, compared to placebo, there was a significantly higher increase in albumin values from baseline (p=0.0132) and a trend toward a significant reduction in INR levels from baseline (p=0.0716). In conclusion, baclofen was safe and significantly more effective than placebo in promoting alcohol abstinence, and improving some Liver Function Tests (LFTs) (i.e. albumin, INR) in alcohol-dependent HCV-infected cirrhotic patients. Baclofen may represent a clinically relevant alcohol pharmacotherapy for these patients.\",\n", " 'source': 'https://pubmed.ncbi.nlm.nih.gov/22244707/',\n", " 'details': 'Baclofen promotes alcohol abstinence in alcohol dependent cirrhotic patients with hepatitis C virus (HCV) infection'}]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import json\n", "with open(\"skimlit_example_abstracts.json\", \"r\") as f:\n", " example_abstracts = json.load(f)\n", "\n", "example_abstracts" ] }, { "cell_type": "code", "execution_count": 29, "id": "a0998e3e", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/ujjwalbansal/anaconda3/lib/python3.10/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] }, { "data": { "text/plain": [ "['This RCT examined the efficacy of a manualized social intervention for children with HFASDs.',\n", " 'Participants were randomly assigned to treatment or wait-list conditions.',\n", " 'Treatment included instruction and therapeutic activities targeting social skills, face-emotion recognition, interest expansion, and interpretation of non-literal language.',\n", " 'A response-cost program was applied to reduce problem behaviors and foster skills acquisition.',\n", " 'Significant treatment effects were found for five of seven primary outcome measures (parent ratings and direct child measures).',\n", " 'Secondary measures based on staff ratings (treatment group only) corroborated gains reported by parents.',\n", " 'High levels of parent, child and staff satisfaction were reported, along with high levels of treatment fidelity.',\n", " 'Standardized effect size estimates were primarily in the medium and large ranges and favored the treatment group.']" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from spacy.lang.en import English\n", "nlp = English() \n", "sentencizer = nlp.add_pipe(\"sentencizer\") \n", "\n", "doc = nlp(example_abstracts[0][\"abstract\"]) \n", "abstract_lines = [str(sent) for sent in list(doc.sents)] \n", "abstract_lines" ] }, { "cell_type": "code", "execution_count": 32, "id": "47a6506a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'This RCT examined the efficacy of a manualized social intervention for children with HFASDs.',\n", " 'line_number': 0,\n", " 'total_lines': 7},\n", " {'text': 'Participants were randomly assigned to treatment or wait-list conditions.',\n", " 'line_number': 1,\n", " 'total_lines': 7},\n", " {'text': 'Treatment included instruction and therapeutic activities targeting social skills, face-emotion recognition, interest expansion, and interpretation of non-literal language.',\n", " 'line_number': 2,\n", " 'total_lines': 7},\n", " {'text': 'A response-cost program was applied to reduce problem behaviors and foster skills acquisition.',\n", " 'line_number': 3,\n", " 'total_lines': 7},\n", " {'text': 'Significant treatment effects were found for five of seven primary outcome measures (parent ratings and direct child measures).',\n", " 'line_number': 4,\n", " 'total_lines': 7},\n", " {'text': 'Secondary measures based on staff ratings (treatment group only) corroborated gains reported by parents.',\n", " 'line_number': 5,\n", " 'total_lines': 7},\n", " {'text': 'High levels of parent, child and staff satisfaction were reported, along with high levels of treatment fidelity.',\n", " 'line_number': 6,\n", " 'total_lines': 7},\n", " {'text': 'Standardized effect size estimates were primarily in the medium and large ranges and favored the treatment group.',\n", " 'line_number': 7,\n", " 'total_lines': 7}]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total_lines_in_sample = len(abstract_lines)\n", "\n", "sample_lines = []\n", "for i, line in enumerate(abstract_lines):\n", " sample_dict = {}\n", " sample_dict[\"text\"] = str(line)\n", " sample_dict[\"line_number\"] = i\n", " sample_dict[\"total_lines\"] = total_lines_in_sample - 1\n", " sample_lines.append(sample_dict)\n", "sample_lines\n" ] }, { "cell_type": "code", "execution_count": 33, "id": "f4fab058", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_abstract_line_numbers = [line[\"line_number\"] for line in sample_lines]\n", "test_abstract_line_numbers_one_hot = tf.one_hot(test_abstract_line_numbers, depth=15) \n", "test_abstract_line_numbers_one_hot\n" ] }, { "cell_type": "code", "execution_count": 34, "id": "58215d49", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_abstract_total_lines = [line[\"total_lines\"] for line in sample_lines]\n", "test_abstract_total_lines_one_hot = tf.one_hot(test_abstract_total_lines, depth=20)\n", "test_abstract_total_lines_one_hot" ] }, { "cell_type": "code", "execution_count": 37, "id": "08f1e56a", "metadata": {}, "outputs": [], "source": [ "def split_to_char(text):\n", " return \" \" .join(list(text))" ] }, { "cell_type": "code", "execution_count": 38, "id": "64d42218", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['T h i s R C T e x a m i n e d t h e e f f i c a c y o f a m a n u a l i z e d s o c i a l i n t e r v e n t i o n f o r c h i l d r e n w i t h H F A S D s .',\n", " 'P a r t i c i p a n t s w e r e r a n d o m l y a s s i g n e d t o t r e a t m e n t o r w a i t - l i s t c o n d i t i o n s .',\n", " 'T r e a t m e n t i n c l u d e d i n s t r u c t i o n a n d t h e r a p e u t i c a c t i v i t i e s t a r g e t i n g s o c i a l s k i l l s , f a c e - e m o t i o n r e c o g n i t i o n , i n t e r e s t e x p a n s i o n , a n d i n t e r p r e t a t i o n o f n o n - l i t e r a l l a n g u a g e .',\n", " 'A r e s p o n s e - c o s t p r o g r a m w a s a p p l i e d t o r e d u c e p r o b l e m b e h a v i o r s a n d f o s t e r s k i l l s a c q u i s i t i o n .',\n", " 'S i g n i f i c a n t t r e a t m e n t e f f e c t s w e r e f o u n d f o r f i v e o f s e v e n p r i m a r y o u t c o m e m e a s u r e s ( p a r e n t r a t i n g s a n d d i r e c t c h i l d m e a s u r e s ) .',\n", " 'S e c o n d a r y m e a s u r e s b a s e d o n s t a f f r a t i n g s ( t r e a t m e n t g r o u p o n l y ) c o r r o b o r a t e d g a i n s r e p o r t e d b y p a r e n t s .',\n", " 'H i g h l e v e l s o f p a r e n t , c h i l d a n d s t a f f s a t i s f a c t i o n w e r e r e p o r t e d , a l o n g w i t h h i g h l e v e l s o f t r e a t m e n t f i d e l i t y .',\n", " 'S t a n d a r d i z e d e f f e c t s i z e e s t i m a t e s w e r e p r i m a r i l y i n t h e m e d i u m a n d l a r g e r a n g e s a n d f a v o r e d t h e t r e a t m e n t g r o u p .']" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abstract_chars = [split_to_char(sentence) for sentence in abstract_lines]\n", "abstract_chars" ] }, { "cell_type": "code", "execution_count": 40, "id": "535753c3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1/1 [==============================] - 2s 2s/step\n" ] }, { "data": { "text/plain": [ "array([[0.26708567, 0.09977566, 0.02257598, 0.5738482 , 0.03671453],\n", " [0.0666267 , 0.03083183, 0.71341974, 0.10463963, 0.08448218],\n", " [0.14207463, 0.06278381, 0.53325343, 0.1764009 , 0.08548719],\n", " [0.08821893, 0.13287878, 0.5818414 , 0.07643546, 0.12062543],\n", " [0.05683414, 0.11416066, 0.38816544, 0.04979956, 0.39104018],\n", " [0.03436745, 0.11669327, 0.5302272 , 0.04525217, 0.27345994],\n", " [0.02947308, 0.14869098, 0.08467548, 0.028472 , 0.7086885 ],\n", " [0.01927791, 0.1428847 , 0.27512696, 0.03265918, 0.5300512 ]],\n", " dtype=float32)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Make predictions on sample abstract features\n", "test_abstract_pred_probs = loaded_model.predict(x=(test_abstract_line_numbers_one_hot,\n", " test_abstract_total_lines_one_hot,\n", " tf.constant(abstract_lines),\n", " tf.constant(abstract_chars)))\n", "test_abstract_pred_probs" ] }, { "cell_type": "code", "execution_count": 41, "id": "99564562", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_abstract_preds = tf.argmax(test_abstract_pred_probs, axis=1)\n", "test_abstract_preds" ] }, { "cell_type": "code", "execution_count": 45, "id": "ae4c4cc4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['OBJECTIVE',\n", " 'METHODS',\n", " 'METHODS',\n", " 'METHODS',\n", " 'RESULTS',\n", " 'METHODS',\n", " 'RESULTS',\n", " 'RESULTS']" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_abstract_pred_classes = [labelencoder.classes_[i] for i in test_abstract_preds]\n", "test_abstract_pred_classes" ] }, { "cell_type": "code", "execution_count": 47, "id": "2fb163f4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "OBJECTIVE: This RCT examined the efficacy of a manualized social intervention for children with HFASDs.\n", "METHODS: Participants were randomly assigned to treatment or wait-list conditions.\n", "METHODS: Treatment included instruction and therapeutic activities targeting social skills, face-emotion recognition, interest expansion, and interpretation of non-literal language.\n", "METHODS: A response-cost program was applied to reduce problem behaviors and foster skills acquisition.\n", "RESULTS: Significant treatment effects were found for five of seven primary outcome measures (parent ratings and direct child measures).\n", "METHODS: Secondary measures based on staff ratings (treatment group only) corroborated gains reported by parents.\n", "RESULTS: High levels of parent, child and staff satisfaction were reported, along with high levels of treatment fidelity.\n", "RESULTS: Standardized effect size estimates were primarily in the medium and large ranges and favored the treatment group.\n" ] } ], "source": [ "for i, line in enumerate(abstract_lines):\n", " print(f\"{test_abstract_pred_classes[i]}: {line}\")" ] }, { "cell_type": "code", "execution_count": null, "id": "df64834a", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10 (tensorflow)", "language": "python", "name": "tensorflow" }, "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.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }